diff options
Diffstat (limited to 'src/parser/smt2/smt2.cpp')
-rw-r--r-- | src/parser/smt2/smt2.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/parser/smt2/smt2.cpp b/src/parser/smt2/smt2.cpp index bc9f2a06f..0fc3678c7 100644 --- a/src/parser/smt2/smt2.cpp +++ b/src/parser/smt2/smt2.cpp @@ -1081,13 +1081,17 @@ const void Smt2::getSygusPrimedVars( std::vector<Expr>& vars, bool isPrimed ) { } const void Smt2::addSygusFunSymbol( Type t, Expr synth_fun ){ - //FIXME #1205 : we should not create a proxy, instead quantify on synth_fun and set Type t as an attribute + // When constructing the synthesis conjecture, we quantify on the + // (higher-order) bound variable synth_fun. + d_sygusFunSymbols.push_back(synth_fun); + + // Variable "sfproxy" carries the type, which may be a SyGuS datatype + // that corresponds to syntactic restrictions. Expr sym = mkBoundVar("sfproxy", t); - d_sygusFunSymbols.push_back(sym); - std::vector< Expr > attr_value; - attr_value.push_back( synth_fun ); - Command* cattr = new SetUserAttributeCommand("sygus-synth-fun", sym, attr_value); + attr_value.push_back(sym); + Command* cattr = + new SetUserAttributeCommand("sygus-synth-grammar", synth_fun, attr_value); cattr->setMuted(true); preemptCommand(cattr); } |