read_only = true
help = "dynamic sygus sym break lemmas"
+[[option]]
+ name = "sygusSymBreakPbe"
+ category = "regular"
+ long = "sygus-sym-break-pbe"
+ type = "bool"
+ default = "true"
+ help = "sygus sym break lemmas based on pbe conjectures"
+
[[option]]
name = "sygusOpt1"
category = "regular"
read_only = true
help = "abort if synthesis conjecture is not single invocation"
-[[option]]
- name = "sygusPbe"
- category = "regular"
- long = "sygus-pbe"
- type = "bool"
- default = "true"
- help = "sygus advanced pruning based on examples"
-
[[option]]
name = "sygusUnif"
category = "regular"
help = "enable approach which automatically unfolds transition systems for directly solving invariant synthesis problems"
[[option]]
- name = "sygusUnifCondSol"
+ name = "sygusUnifPbe"
category = "regular"
- long = "sygus-unif-csol"
+ long = "sygus-pbe"
type = "bool"
default = "true"
- read_only = true
- help = "enable new approach which unifies conditional solutions"
+ help = "enable approach which unifies conditional solutions, specialized for programming-by-examples (pbe) conjectures"
[[option]]
name = "sygusDirectEval"
if (options::sygusStream())
{
// PBE and streaming modes are incompatible
- if (!options::sygusPbe.wasSetByUser())
+ if (!options::sygusSymBreakPbe.wasSetByUser())
{
- options::sygusPbe.set(false);
+ options::sygusSymBreakPbe.set(false);
+ }
+ if (!options::sygusUnifPbe.wasSetByUser())
+ {
+ options::sygusUnifPbe.set(false);
}
}
//do not allow partial functions
// class
// is it equivalent under examples?
Node bvr_equiv;
- if (aconj->getPbe()->hasExamples(a)) {
- bvr_equiv = aconj->getPbe()->addSearchVal(tn, a, bvr);
+ if (options::sygusSymBreakPbe())
+ {
+ if (aconj->getPbe()->hasExamples(a))
+ {
+ bvr_equiv = aconj->getPbe()->addSearchVal(tn, a, bvr);
+ }
}
if( !bvr_equiv.isNull() ){
if( bvr_equiv!=bvr ){
#include "expr/datatype.h"
#include "options/base_options.h"
+#include "options/datatypes_options.h"
#include "options/quantifiers_options.h"
#include "printer/printer.h"
#include "prop/prop_engine.h"
d_refine_count(0),
d_syntax_guided(false)
{
- if (options::sygusPbe())
+ if (options::sygusSymBreakPbe() || options::sygusUnifPbe())
{
d_modules.push_back(d_ceg_pbe.get());
}
}
}
- if (!options::sygusUnifCondSol())
+ if (!options::sygusUnifPbe())
{
// we are not doing unification
return false;