summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/sygus
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers/sygus')
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv.cpp4
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv.h6
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp4
-rw-r--r--src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h6
-rw-r--r--src/theory/quantifiers/sygus/cegis.cpp2
-rw-r--r--src/theory/quantifiers/sygus/cegis.h10
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.cpp2
-rw-r--r--src/theory/quantifiers/sygus/cegis_unif.h6
-rw-r--r--src/theory/quantifiers/sygus/enum_stream_substitution.cpp2
-rw-r--r--src/theory/quantifiers/sygus/enum_stream_substitution.h6
-rw-r--r--src/theory/quantifiers/sygus/sygus_enumerator.cpp26
-rw-r--r--src/theory/quantifiers/sygus/sygus_enumerator.h10
-rw-r--r--src/theory/quantifiers/sygus/sygus_eval_unfold.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_eval_unfold.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_explain.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_explain.h10
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_cons.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_cons.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_norm.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_norm.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_red.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_grammar_red.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_invariance.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_invariance.h10
-rw-r--r--src/theory/quantifiers/sygus/sygus_module.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_module.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_pbe.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_pbe.h6
-rw-r--r--src/theory/quantifiers/sygus/sygus_process_conj.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_process_conj.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_repair_const.cpp5
-rw-r--r--src/theory/quantifiers/sygus/sygus_repair_const.h10
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif.cpp4
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_io.cpp100
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_io.h27
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_rl.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_rl.h8
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_strat.cpp2
-rw-r--r--src/theory/quantifiers/sygus/sygus_unif_strat.h8
-rw-r--r--src/theory/quantifiers/sygus/synth_conjecture.cpp6
-rw-r--r--src/theory/quantifiers/sygus/synth_conjecture.h8
-rw-r--r--src/theory/quantifiers/sygus/synth_engine.cpp3
-rw-r--r--src/theory/quantifiers/sygus/synth_engine.h8
-rw-r--r--src/theory/quantifiers/sygus/term_database_sygus.cpp31
-rw-r--r--src/theory/quantifiers/sygus/term_database_sygus.h10
46 files changed, 269 insertions, 153 deletions
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp b/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
index aa20c1f76..00d040af5 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
@@ -2,9 +2,9 @@
/*! \file ce_guided_single_inv.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Andres Noetzli, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv.h b/src/theory/quantifiers/sygus/ce_guided_single_inv.h
index 0de7b4290..4b24cbb1c 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv.h
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Mathias Preiner
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
-#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
+#ifndef CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
+#define CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_H
#include "context/cdlist.h"
#include "theory/quantifiers/sygus/ce_guided_single_inv_sol.h"
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
index 7f7c56f84..074971622 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
@@ -2,9 +2,9 @@
/*! \file ce_guided_single_inv_sol.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds, Tim King, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
index fb0862413..40117af6c 100644
--- a/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
+++ b/src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
-#define __CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
+#ifndef CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
+#define CVC4__THEORY__QUANTIFIERS__CE_GUIDED_SINGLE_INV_SOL_H
#include "context/cdhashmap.h"
#include "theory/quantifiers_engine.h"
diff --git a/src/theory/quantifiers/sygus/cegis.cpp b/src/theory/quantifiers/sygus/cegis.cpp
index 6aca71ca3..314b43711 100644
--- a/src/theory/quantifiers/sygus/cegis.cpp
+++ b/src/theory/quantifiers/sygus/cegis.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis.h b/src/theory/quantifiers/sygus/cegis.h
index 849a39639..a295f6a40 100644
--- a/src/theory/quantifiers/sygus/cegis.h
+++ b/src/theory/quantifiers/sygus/cegis.h
@@ -2,9 +2,9 @@
/*! \file cegis.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
+ ** Andrew Reynolds, Haniel Barbosa, FabianWolff
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__CEGIS_H
-#define __CVC4__THEORY__QUANTIFIERS__CEGIS_H
+#ifndef CVC4__THEORY__QUANTIFIERS__CEGIS_H
+#define CVC4__THEORY__QUANTIFIERS__CEGIS_H
#include <map>
#include "theory/quantifiers/sygus/sygus_module.h"
@@ -209,4 +209,4 @@ class Cegis : public SygusModule
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__CEGIS_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__CEGIS_H */
diff --git a/src/theory/quantifiers/sygus/cegis_unif.cpp b/src/theory/quantifiers/sygus/cegis_unif.cpp
index 18e313bf0..e34669425 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.cpp
+++ b/src/theory/quantifiers/sygus/cegis_unif.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/cegis_unif.h b/src/theory/quantifiers/sygus/cegis_unif.h
index 972d07af7..a2e7be1c1 100644
--- a/src/theory/quantifiers/sygus/cegis_unif.h
+++ b/src/theory/quantifiers/sygus/cegis_unif.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -13,8 +13,8 @@
**/
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS__CEGIS_UNIF_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS__CEGIS_UNIF_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS__CEGIS_UNIF_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS__CEGIS_UNIF_H
#include <map>
#include <vector>
diff --git a/src/theory/quantifiers/sygus/enum_stream_substitution.cpp b/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
index e8daa4256..b568b8f53 100644
--- a/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
+++ b/src/theory/quantifiers/sygus/enum_stream_substitution.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/enum_stream_substitution.h b/src/theory/quantifiers/sygus/enum_stream_substitution.h
index 476a364ea..687641e60 100644
--- a/src/theory/quantifiers/sygus/enum_stream_substitution.h
+++ b/src/theory/quantifiers/sygus/enum_stream_substitution.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
**/
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS__ENUM_STREAM_SUBSTITUTION_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS__ENUM_STREAM_SUBSTITUTION_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS__ENUM_STREAM_SUBSTITUTION_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS__ENUM_STREAM_SUBSTITUTION_H
#include "expr/node.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
diff --git a/src/theory/quantifiers/sygus/sygus_enumerator.cpp b/src/theory/quantifiers/sygus/sygus_enumerator.cpp
index 9981b5141..bd85ea496 100644
--- a/src/theory/quantifiers/sygus/sygus_enumerator.cpp
+++ b/src/theory/quantifiers/sygus/sygus_enumerator.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -476,6 +476,13 @@ bool SygusEnumerator::TermEnumSlave::validateIndex()
{
Assert(d_index == tc.getNumTerms());
Trace("sygus-enum-debug2") << "slave(" << d_tn << ") : force master...\n";
+ // if the size of the master is larger than the size limit, then
+ // there is no use continuing, since there are no more terms that this
+ // slave enumerator can return.
+ if (d_master->getCurrentSize() > d_sizeLim)
+ {
+ return false;
+ }
// must push the master index
if (!d_master->increment())
{
@@ -655,9 +662,14 @@ bool SygusEnumerator::TermEnumMaster::increment()
{
return false;
}
+ Trace("sygus-enum-summary") << "SygusEnumerator::TermEnumMaster: increment "
+ << d_tn << "..." << std::endl;
d_isIncrementing = true;
bool ret = incrementInternal();
d_isIncrementing = false;
+ Trace("sygus-enum-summary")
+ << "SygusEnumerator::TermEnumMaster: finished increment " << d_tn
+ << std::endl;
return ret;
}
@@ -789,7 +801,15 @@ bool SygusEnumerator::TermEnumMaster::incrementInternal()
// restart with constructor class one (skip nullary constructors)
d_consClassNum = 1;
- return incrementInternal();
+
+ // We break for a round: return the null term when we cross a size
+ // boundary. This ensures that the necessary breaks are taken, e.g.
+ // in slave enumerators who may instead want to abandon this call to
+ // increment master when the size of the master makes their increment
+ // infeasible.
+ d_currTermSet = true;
+ d_currTerm = Node::null();
+ return true;
}
bool incSuccess = false;
@@ -819,6 +839,8 @@ bool SygusEnumerator::TermEnumMaster::incrementInternal()
// the term was not unique based on rewriting
Trace("sygus-enum-debug2") << "master(" << d_tn
<< "): failed addTerm\n";
+ // we will return null (d_currTermSet is true at this point)
+ Assert(d_currTermSet);
d_currTerm = Node::null();
}
}
diff --git a/src/theory/quantifiers/sygus/sygus_enumerator.h b/src/theory/quantifiers/sygus/sygus_enumerator.h
index 716a047d2..d4c466b03 100644
--- a/src/theory/quantifiers/sygus/sygus_enumerator.h
+++ b/src/theory/quantifiers/sygus/sygus_enumerator.h
@@ -1,10 +1,10 @@
-/******************** */
+/********************* */
/*! \file sygus_enumerator.h
** \verbatim
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H
#include <map>
#include <unordered_set>
@@ -454,4 +454,4 @@ class SygusEnumerator : public EnumValGenerator
} // namespace theory
} // namespace CVC4
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_ENUMERATOR_H */
diff --git a/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp b/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
index ac7467c00..e44b604d0 100644
--- a/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
+++ b/src/theory/quantifiers/sygus/sygus_eval_unfold.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_eval_unfold.h b/src/theory/quantifiers/sygus/sygus_eval_unfold.h
index 94f37c845..adc54c6a7 100644
--- a/src/theory/quantifiers/sygus/sygus_eval_unfold.h
+++ b/src/theory/quantifiers/sygus/sygus_eval_unfold.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H
#include <map>
#include "expr/node.h"
@@ -113,4 +113,4 @@ class SygusEvalUnfold
} // namespace theory
} // namespace CVC4
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_EVAL_UNFOLD_H */
diff --git a/src/theory/quantifiers/sygus/sygus_explain.cpp b/src/theory/quantifiers/sygus/sygus_explain.cpp
index ddf52001e..f55ce2097 100644
--- a/src/theory/quantifiers/sygus/sygus_explain.cpp
+++ b/src/theory/quantifiers/sygus/sygus_explain.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_explain.h b/src/theory/quantifiers/sygus/sygus_explain.h
index 3f18a65d6..ec29ab2a1 100644
--- a/src/theory/quantifiers/sygus/sygus_explain.h
+++ b/src/theory/quantifiers/sygus/sygus_explain.h
@@ -2,9 +2,9 @@
/*! \file sygus_explain.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, FabianWolff
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H
#include <vector>
@@ -241,4 +241,4 @@ class SygusExplain
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_EXPLAIN_H */
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp b/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
index 67fa1398e..48da8e8e8 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_cons.h b/src/theory/quantifiers/sygus/sygus_grammar_cons.h
index bf377bd33..7dfa9b478 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_cons.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_cons.h
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_cons.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,8 +15,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_CONS_H
#include "theory/quantifiers_engine.h"
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp b/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
index 8e41b6b07..fb6b23132 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_norm.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_norm.h b/src/theory/quantifiers/sygus/sygus_grammar_norm.h
index 993d41668..ae701113c 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_norm.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_norm.h
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_norm.h
** \verbatim
** Top contributors (to current version):
- ** Haniel Barbosa, Tim King, Andrew Reynolds
+ ** Haniel Barbosa, Andrew Reynolds, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
**/
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_NORM_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_NORM_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_NORM_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_NORM_H
#include <map>
#include <memory>
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_red.cpp b/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
index 24aa74c9e..6ad590f28 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
+++ b/src/theory/quantifiers/sygus/sygus_grammar_red.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_grammar_red.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_grammar_red.h b/src/theory/quantifiers/sygus/sygus_grammar_red.h
index ce83402c9..8ed080a30 100644
--- a/src/theory/quantifiers/sygus/sygus_grammar_red.h
+++ b/src/theory/quantifiers/sygus/sygus_grammar_red.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H
#include <map>
#include "theory/quantifiers_engine.h"
@@ -116,4 +116,4 @@ class SygusRedundantCons
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_GRAMMAR_RED_H */
diff --git a/src/theory/quantifiers/sygus/sygus_invariance.cpp b/src/theory/quantifiers/sygus/sygus_invariance.cpp
index 5ea01ef57..b494e085e 100644
--- a/src/theory/quantifiers/sygus/sygus_invariance.cpp
+++ b/src/theory/quantifiers/sygus/sygus_invariance.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_invariance.h b/src/theory/quantifiers/sygus/sygus_invariance.h
index 02c249411..feb2d3313 100644
--- a/src/theory/quantifiers/sygus/sygus_invariance.h
+++ b/src/theory/quantifiers/sygus/sygus_invariance.h
@@ -2,9 +2,9 @@
/*! \file sygus_invariance.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Mathias Preiner
+ ** Andrew Reynolds, Mathias Preiner, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H
#include <unordered_map>
#include <vector>
@@ -300,4 +300,4 @@ class NegContainsSygusInvarianceTest : public SygusInvarianceTest
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_INVARIANCE_H */
diff --git a/src/theory/quantifiers/sygus/sygus_module.cpp b/src/theory/quantifiers/sygus/sygus_module.cpp
index 3471472fa..42a125ae5 100644
--- a/src/theory/quantifiers/sygus/sygus_module.cpp
+++ b/src/theory/quantifiers/sygus/sygus_module.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_module.h b/src/theory/quantifiers/sygus/sygus_module.h
index fef24e9bb..d5e1de3fc 100644
--- a/src/theory/quantifiers/sygus/sygus_module.h
+++ b/src/theory/quantifiers/sygus/sygus_module.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H
#include <map>
#include "expr/node.h"
@@ -148,4 +148,4 @@ class SygusModule
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_MODULE_H */
diff --git a/src/theory/quantifiers/sygus/sygus_pbe.cpp b/src/theory/quantifiers/sygus/sygus_pbe.cpp
index 7891814be..2ab51f1fb 100644
--- a/src/theory/quantifiers/sygus/sygus_pbe.cpp
+++ b/src/theory/quantifiers/sygus/sygus_pbe.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_pbe.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
+ ** Andrew Reynolds, Haniel Barbosa, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_pbe.h b/src/theory/quantifiers/sygus/sygus_pbe.h
index dc7f1cc51..e82ce01da 100644
--- a/src/theory/quantifiers/sygus/sygus_pbe.h
+++ b/src/theory/quantifiers/sygus/sygus_pbe.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_PBE_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_PBE_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_PBE_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_PBE_H
#include "context/cdhashmap.h"
#include "theory/quantifiers/sygus/sygus_module.h"
diff --git a/src/theory/quantifiers/sygus/sygus_process_conj.cpp b/src/theory/quantifiers/sygus/sygus_process_conj.cpp
index a2454758a..2b9592d4d 100644
--- a/src/theory/quantifiers/sygus/sygus_process_conj.cpp
+++ b/src/theory/quantifiers/sygus/sygus_process_conj.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_process_conj.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_process_conj.h b/src/theory/quantifiers/sygus/sygus_process_conj.h
index 199619699..e9ee340f4 100644
--- a/src/theory/quantifiers/sygus/sygus_process_conj.h
+++ b/src/theory/quantifiers/sygus/sygus_process_conj.h
@@ -2,9 +2,9 @@
/*! \file sygus_process_conj.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King
+ ** Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,8 +15,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_PROCESS_CONJ_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_PROCESS_CONJ_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_PROCESS_CONJ_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_PROCESS_CONJ_H
#include <map>
#include <unordered_map>
diff --git a/src/theory/quantifiers/sygus/sygus_repair_const.cpp b/src/theory/quantifiers/sygus/sygus_repair_const.cpp
index 09525712f..85a0a4bf8 100644
--- a/src/theory/quantifiers/sygus/sygus_repair_const.cpp
+++ b/src/theory/quantifiers/sygus/sygus_repair_const.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_repair_const.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -115,6 +115,7 @@ void SygusRepairConst::initializeChecker(std::unique_ptr<SmtEngine>& checker,
try
{
checker.reset(new SmtEngine(&em));
+ checker->setIsInternalSubsolver();
checker->setTimeLimit(options::sygusRepairConstTimeout(), true);
checker->setLogic(smt::currentSmtEngine()->getLogicInfo());
// renable options disabled by sygus
diff --git a/src/theory/quantifiers/sygus/sygus_repair_const.h b/src/theory/quantifiers/sygus/sygus_repair_const.h
index c6bfd2806..bc3a58f9e 100644
--- a/src/theory/quantifiers/sygus/sygus_repair_const.h
+++ b/src/theory/quantifiers/sygus/sygus_repair_const.h
@@ -2,9 +2,9 @@
/*! \file sygus_repair_const.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H
#include <unordered_set>
#include "expr/node.h"
@@ -215,4 +215,4 @@ class SygusRepairConst
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_REPAIR_CONST_H */
diff --git a/src/theory/quantifiers/sygus/sygus_unif.cpp b/src/theory/quantifiers/sygus/sygus_unif.cpp
index 5d7017a1c..2eb508fde 100644
--- a/src/theory/quantifiers/sygus/sygus_unif.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_unif.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Aina Niemetz, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif.h b/src/theory/quantifiers/sygus/sygus_unif.h
index 0784644f8..a5215628c 100644
--- a/src/theory/quantifiers/sygus/sygus_unif.h
+++ b/src/theory/quantifiers/sygus/sygus_unif.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H
#include <map>
#include "expr/node.h"
@@ -196,4 +196,4 @@ class SygusUnif
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H */
diff --git a/src/theory/quantifiers/sygus/sygus_unif_io.cpp b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
index c9db62735..207aa4c8e 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_io.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_io.cpp
@@ -2,9 +2,9 @@
/*! \file sygus_unif_io.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -161,7 +161,12 @@ bool UnifContextIo::getStringIncrement(SygusUnifIo* sui,
if (d_vals[j] == sui->d_true)
{
// example is active in this context
- Assert(vals[j].isConst());
+ if (!vals[j].isConst())
+ {
+ // the value is unknown, thus we cannot use it to increment the strings
+ // position
+ return false;
+ }
String mystr = vals[j].getConst<String>();
ival = mystr.size();
if (mystr.size() <= ex_vals[j].size())
@@ -199,7 +204,11 @@ bool UnifContextIo::isStringSolved(SygusUnifIo* sui,
if (d_vals[j] == sui->d_true)
{
// example is active in this context
- Assert(vals[j].isConst());
+ if (!vals[j].isConst())
+ {
+ // value is unknown, thus it does not solve
+ return false;
+ }
String mystr = vals[j].getConst<String>();
if (ex_vals[j] != mystr)
{
@@ -448,12 +457,23 @@ void SubsumeTrie::getLeavesInternal(const std::vector<Node>& vals,
++it)
{
int new_status = status;
- // if the current value is true
+ bool success = true;
+ // If the current value is true, then this is a relevant point.
+ // We must consider the value of this child.
if (curr_val_true)
{
- if (status != 0)
+ if (it->first.isNull())
{
- Assert(it->first.isConst() && it->first.getType().isBoolean());
+ // The value of this child is unknown on this point, hence we
+ // do not recurse
+ success = false;
+ }
+ else if (status != 0)
+ {
+ // if the status is not zero (indicating that we have a mix of T/F),
+ // then we must compute the new status.
+ Assert(it->first.getType().isBoolean());
+ Assert(it->first.isConst());
new_status = (it->first.getConst<bool>() ? 1 : -1);
if (status != -2 && new_status != status)
{
@@ -461,7 +481,10 @@ void SubsumeTrie::getLeavesInternal(const std::vector<Node>& vals,
}
}
}
- it->second.getLeavesInternal(vals, pol, v, index + 1, new_status);
+ if (success)
+ {
+ it->second.getLeavesInternal(vals, pol, v, index + 1, new_status);
+ }
}
}
}
@@ -641,23 +664,41 @@ void SygusUnifIo::notifyEnumeration(Node e, Node v, std::vector<Node>& lemmas)
for (unsigned j = 0, size = itsr->second.size(); j < size; j++)
{
Node res = itsr->second[j];
- Assert(res.isConst());
+ // The value of this term for this example, or the truth value of
+ // the I/O pair if the role of this enumerator is enum_io.
Node resb;
if (eiv.getRole() == enum_io)
{
Node out = d_examples_out[j];
Assert(out.isConst());
- resb = res == out ? d_true : d_false;
+ // If the result is not constant, then we assume that it does
+ // not satisfy the example. This is a safe underapproximation
+ // of the good behavior of the current term, that is, we only
+ // produce solutions whose values are fully evaluatable on all input
+ // points. Notice that terms may be used as leaves of decision
+ // trees that are fully evaluatable on points in that branch, but
+ // are not evaluatable on others, e.g. (head x) in the solution:
+ // (ite ((_ is cons) x) (head x) 5)
+ resb = (res.isConst() && res == out) ? d_true : d_false;
}
else
{
- resb = res;
+ // We only set resb if it is constant, otherwise it remains null.
+ // This indicates its value cannot be determined.
+ if (res.isConst())
+ {
+ resb = res;
+ }
}
cond_vals[resb] = true;
results.push_back(resb);
if (Trace.isOn("sygus-sui-enum"))
{
- if (resb.getType().isBoolean())
+ if (resb.isNull())
+ {
+ Trace("sygus-sui-enum") << "_";
+ }
+ else if (resb.getType().isBoolean())
{
Trace("sygus-sui-enum") << (resb == d_true ? "1" : "0");
}
@@ -677,6 +718,7 @@ void SygusUnifIo::notifyEnumeration(Node e, Node v, std::vector<Node>& lemmas)
std::vector<Node> subsume;
if (cond_vals.find(d_false) == cond_vals.end())
{
+ Assert(cond_vals.size() == 1);
// it is the entire solution, we are done
Trace("sygus-sui-enum")
<< " ...success, full solution added to PBE pool : "
@@ -917,23 +959,27 @@ bool SygusUnifIo::getExplanationForEnumeratorExclude(
std::vector<unsigned> cmp_indices;
for (unsigned i = 0, size = results.size(); i < size; i++)
{
- Assert(results[i].isConst());
- Assert(d_examples_out[i].isConst());
- Trace("sygus-sui-cterm-debug")
- << " " << results[i] << " <> " << d_examples_out[i];
- Node cont = nm->mkNode(STRING_STRCTN, d_examples_out[i], results[i]);
- Node contr = Rewriter::rewrite(cont);
- if (contr == d_false)
- {
- cmp_indices.push_back(i);
- Trace("sygus-sui-cterm-debug") << "...not contained." << std::endl;
- }
- else
+ // If the result is not constant, then it is worthless. It does not
+ // impact whether the term is excluded.
+ if (results[i].isConst())
{
- Trace("sygus-sui-cterm-debug") << "...contained." << std::endl;
- if (isConditional)
+ Assert(d_examples_out[i].isConst());
+ Trace("sygus-sui-cterm-debug")
+ << " " << results[i] << " <> " << d_examples_out[i];
+ Node cont = nm->mkNode(STRING_STRCTN, d_examples_out[i], results[i]);
+ Node contr = Rewriter::rewrite(cont);
+ if (contr == d_false)
{
- return false;
+ cmp_indices.push_back(i);
+ Trace("sygus-sui-cterm-debug") << "...not contained." << std::endl;
+ }
+ else
+ {
+ Trace("sygus-sui-cterm-debug") << "...contained." << std::endl;
+ if (isConditional)
+ {
+ return false;
+ }
}
}
}
diff --git a/src/theory/quantifiers/sygus/sygus_unif_io.h b/src/theory/quantifiers/sygus/sygus_unif_io.h
index 7f48645bf..7e9c5abd2 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_io.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_io.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H
#include <map>
#include "theory/quantifiers/sygus/sygus_unif.h"
@@ -218,7 +218,24 @@ class SubsumeTrie
int status,
bool checkExistsOnly,
bool checkSubsume);
- /** helper function for above functions */
+ /** helper function for above functions
+ *
+ * This adds to v[-1], v[0], v[1] the children of the trie that occur
+ * along paths that contain only false (v[-1]), a mix of true/false (v[0]),
+ * and only true (v[1]) values for respectively for relevant points.
+ *
+ * vals/pol is used to determine the relevant points, which impacts which
+ * paths of the trie to traverse on this call.
+ * In particular, all points such that (pol ? vals[index] : !vals[index])
+ * are relevant.
+ *
+ * Paths that contain an unknown value for any relevant point are not
+ * traversed. In the larger picture, this ensures that terms are not used in a
+ * way such that their unknown value is relevant to the overall behavior of
+ * a synthesis solution.
+ *
+ * status holds the current value of v (0,1,-1) that we will be adding to.
+ */
void getLeavesInternal(const std::vector<Node>& vals,
bool pol,
std::map<int, std::vector<Node>>& v,
@@ -472,4 +489,4 @@ class SygusUnifIo : public SygusUnif
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_IO_H */
diff --git a/src/theory/quantifiers/sygus/sygus_unif_rl.cpp b/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
index ee07efdfe..3514ccbeb 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_rl.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_rl.h b/src/theory/quantifiers/sygus/sygus_unif_rl.h
index 179a5ac16..ada99dbaf 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_rl.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_rl.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Haniel Barbosa, Andrew Reynolds
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H
#include <map>
#include "options/main_options.h"
@@ -434,4 +434,4 @@ class SygusUnifRl : public SygusUnif
} // namespace theory
} // namespace CVC4
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_RL_H */
diff --git a/src/theory/quantifiers/sygus/sygus_unif_strat.cpp b/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
index 3cbac1eaa..acf5a2d7f 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
+++ b/src/theory/quantifiers/sygus/sygus_unif_strat.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/sygus/sygus_unif_strat.h b/src/theory/quantifiers/sygus/sygus_unif_strat.h
index 41923f7a1..1c691bd84 100644
--- a/src/theory/quantifiers/sygus/sygus_unif_strat.h
+++ b/src/theory/quantifiers/sygus/sygus_unif_strat.h
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Haniel Barbosa, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_STRAT_H
-#define __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_STRAT_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_STRAT_H
+#define CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_STRAT_H
#include <map>
#include "expr/node.h"
@@ -429,4 +429,4 @@ class SygusUnifStrategy
} /* CVC4::theory namespace */
} /* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__SYGUS_UNIF_H */
diff --git a/src/theory/quantifiers/sygus/synth_conjecture.cpp b/src/theory/quantifiers/sygus/synth_conjecture.cpp
index e25e8a225..756e1f791 100644
--- a/src/theory/quantifiers/sygus/synth_conjecture.cpp
+++ b/src/theory/quantifiers/sygus/synth_conjecture.cpp
@@ -2,9 +2,9 @@
/*! \file synth_conjecture.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -540,6 +540,7 @@ bool SynthConjecture::doCheck(std::vector<Node>& lems)
Trace("cegqi-engine") << "Check side condition..." << std::endl;
Trace("cegqi-debug") << "Check side condition : " << sc << std::endl;
SmtEngine scSmt(nm->toExprManager());
+ scSmt.setIsInternalSubsolver();
scSmt.setLogic(smt::currentSmtEngine()->getLogicInfo());
scSmt.assertFormula(sc.toExpr());
Result r = scSmt.checkSat();
@@ -572,6 +573,7 @@ bool SynthConjecture::doCheck(std::vector<Node>& lems)
{
Trace("cegqi-engine") << " *** Verify with subcall..." << std::endl;
SmtEngine verifySmt(nm->toExprManager());
+ verifySmt.setIsInternalSubsolver();
verifySmt.setLogic(smt::currentSmtEngine()->getLogicInfo());
verifySmt.assertFormula(query.toExpr());
Result r = verifySmt.checkSat();
diff --git a/src/theory/quantifiers/sygus/synth_conjecture.h b/src/theory/quantifiers/sygus/synth_conjecture.h
index cf6178fdb..83a7eaa45 100644
--- a/src/theory/quantifiers/sygus/synth_conjecture.h
+++ b/src/theory/quantifiers/sygus/synth_conjecture.h
@@ -2,9 +2,9 @@
/*! \file synth_conjecture.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Tim King, Haniel Barbosa
+ ** Andrew Reynolds, Haniel Barbosa, Tim King
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,8 +15,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYNTH_CONJECTURE_H
-#define __CVC4__THEORY__QUANTIFIERS__SYNTH_CONJECTURE_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYNTH_CONJECTURE_H
+#define CVC4__THEORY__QUANTIFIERS__SYNTH_CONJECTURE_H
#include <memory>
diff --git a/src/theory/quantifiers/sygus/synth_engine.cpp b/src/theory/quantifiers/sygus/synth_engine.cpp
index d3eff1750..fc1ed938d 100644
--- a/src/theory/quantifiers/sygus/synth_engine.cpp
+++ b/src/theory/quantifiers/sygus/synth_engine.cpp
@@ -4,7 +4,7 @@
** Top contributors (to current version):
** Andrew Reynolds, Tim King, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -159,6 +159,7 @@ void SynthEngine::assignConjecture(Node q)
{
// create new smt engine to do quantifier elimination
SmtEngine smt_qe(nm->toExprManager());
+ smt_qe.setIsInternalSubsolver();
smt_qe.setLogic(smt::currentSmtEngine()->getLogicInfo());
Trace("cegqi-qep") << "Property is non-ground single invocation, run "
"QE to obtain single invocation."
diff --git a/src/theory/quantifiers/sygus/synth_engine.h b/src/theory/quantifiers/sygus/synth_engine.h
index a7346b888..d5337e5d1 100644
--- a/src/theory/quantifiers/sygus/synth_engine.h
+++ b/src/theory/quantifiers/sygus/synth_engine.h
@@ -2,9 +2,9 @@
/*! \file synth_engine.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Mathias Preiner, Tim King
+ ** Andrew Reynolds, Mathias Preiner, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -15,8 +15,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__SYNTH_ENGINE_H
-#define __CVC4__THEORY__QUANTIFIERS__SYNTH_ENGINE_H
+#ifndef CVC4__THEORY__QUANTIFIERS__SYNTH_ENGINE_H
+#define CVC4__THEORY__QUANTIFIERS__SYNTH_ENGINE_H
#include "context/cdhashmap.h"
#include "theory/quantifiers/sygus/synth_conjecture.h"
diff --git a/src/theory/quantifiers/sygus/term_database_sygus.cpp b/src/theory/quantifiers/sygus/term_database_sygus.cpp
index 9198f7e56..af820b0fc 100644
--- a/src/theory/quantifiers/sygus/term_database_sygus.cpp
+++ b/src/theory/quantifiers/sygus/term_database_sygus.cpp
@@ -2,9 +2,9 @@
/*! \file term_database_sygus.cpp
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds, Haniel Barbosa, Aina Niemetz
+ ** Andrew Reynolds, Andres Noetzli
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -1633,6 +1633,33 @@ Node TermDbSygus::evaluateWithUnfolding(
while (ret.getKind() == DT_SYGUS_EVAL
&& ret[0].getKind() == APPLY_CONSTRUCTOR)
{
+ if (ret == n && ret[0].isConst())
+ {
+ Trace("dt-eval-unfold-debug")
+ << "Optimize: evaluate constant head " << ret << std::endl;
+ // can just do direct evaluation here
+ std::vector<Node> args;
+ bool success = true;
+ for (unsigned i = 1, nchild = ret.getNumChildren(); i < nchild; i++)
+ {
+ if (!ret[i].isConst())
+ {
+ success = false;
+ break;
+ }
+ args.push_back(ret[i]);
+ }
+ if (success)
+ {
+ TypeNode rt = ret[0].getType();
+ Node bret = sygusToBuiltin(ret[0], rt);
+ Node rete = evaluateBuiltin(rt, bret, args);
+ visited[n] = rete;
+ Trace("dt-eval-unfold-debug")
+ << "Return " << rete << " for " << n << std::endl;
+ return rete;
+ }
+ }
ret = unfold( ret );
}
if( ret.getNumChildren()>0 ){
diff --git a/src/theory/quantifiers/sygus/term_database_sygus.h b/src/theory/quantifiers/sygus/term_database_sygus.h
index 7a522ded6..0f3d650d3 100644
--- a/src/theory/quantifiers/sygus/term_database_sygus.h
+++ b/src/theory/quantifiers/sygus/term_database_sygus.h
@@ -2,9 +2,9 @@
/*! \file term_database_sygus.h
** \verbatim
** Top contributors (to current version):
- ** Andrew Reynolds
+ ** Andrew Reynolds, Andres Noetzli, Morgan Deters
** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2018 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
** in the top-level source directory) and their institutional affiliations.
** All rights reserved. See the file COPYING in the top-level source
** directory for licensing information.\endverbatim
@@ -14,8 +14,8 @@
#include "cvc4_private.h"
-#ifndef __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_SYGUS_H
-#define __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_SYGUS_H
+#ifndef CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_SYGUS_H
+#define CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_SYGUS_H
#include <unordered_set>
@@ -599,4 +599,4 @@ class TermDbSygus {
}/* CVC4::theory namespace */
}/* CVC4 namespace */
-#endif /* __CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_H */
+#endif /* CVC4__THEORY__QUANTIFIERS__TERM_DATABASE_H */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback