summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r--src/smt/smt_engine.cpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 13865b2ec..7f6d3db9d 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1324,9 +1324,36 @@ void SmtEngine::declareSynthFun(const std::string& id,
setUserAttribute("sygus-synth-grammar", func, attr_value, "");
}
Trace("smt") << "SmtEngine::declareSynthFun: " << func << "\n";
- // dumping SynthFunCommand from smt-engine is currently broken (please take at
- // CVC4/cvc4-projects#211)
- // Dump("raw-benchmark") << SynthFunCommand(id, func, sygusType, isInv, vars);
+
+ // !!! TEMPORARY: We cannot construct a SynthFunCommand since we cannot
+ // construct a Term-level Grammar from a Node-level sygus TypeNode. Thus we
+ // must print the command using the Node-level utility method for now.
+
+ if (Dump.isOn("raw-benchmark"))
+ {
+ std::vector<Node> nodeVars;
+ nodeVars.reserve(vars.size());
+ for (const Expr& var : vars)
+ {
+ nodeVars.push_back(Node::fromExpr(var));
+ }
+
+ std::stringstream ss;
+
+ Printer::getPrinter(options::outputLanguage())
+ ->toStreamCmdSynthFun(
+ ss,
+ id,
+ nodeVars,
+ func.getType().isFunction()
+ ? TypeNode::fromType(func.getType()).getRangeType()
+ : TypeNode::fromType(func.getType()),
+ isInv,
+ TypeNode::fromType(sygusType));
+
+ Dump("raw-benchmark") << ss.str();
+ }
+
// sygus conjecture is now stale
setSygusConjectureStale();
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback