summaryrefslogtreecommitdiff
path: root/src/prop/prop_engine.cpp
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2010-10-09 04:24:15 +0000
committerMorgan Deters <mdeters@gmail.com>2010-10-09 04:24:15 +0000
commit97668b64994c5749a5a75822136de49841d2c15d (patch)
tree23dd1852741a847f6228cc063b0a5ad7ec3c2af3 /src/prop/prop_engine.cpp
parente63abd23b45a078a42cafb277a4817abb4d044a1 (diff)
Model generation for arith, boolean, and uf theories via
(get-value ...) SMT-LIBv2 command. As per SMT-LIBv2 spec, you must pass --interactive --produce-models on the command line (although they don't currently make us do any extra work). Closes bug #213.
Diffstat (limited to 'src/prop/prop_engine.cpp')
-rw-r--r--src/prop/prop_engine.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/prop/prop_engine.cpp b/src/prop/prop_engine.cpp
index c49d5f38a..961a18bdb 100644
--- a/src/prop/prop_engine.cpp
+++ b/src/prop/prop_engine.cpp
@@ -130,6 +130,20 @@ Result PropEngine::checkSat() {
return Result(result ? Result::SAT : Result::UNSAT);
}
+Node PropEngine::getValue(TNode node) {
+ Assert(node.getKind() == kind::VARIABLE &&
+ node.getType().isBoolean());
+ SatLiteralValue v = d_satSolver->value(d_cnfStream->getLiteral(node));
+ if(v == l_True) {
+ return NodeManager::currentNM()->mkConst(true);
+ } else if(v == l_False) {
+ return NodeManager::currentNM()->mkConst(false);
+ } else {
+ Assert(v == l_Undef);
+ return Node::null();
+ }
+}
+
void PropEngine::push() {
Assert(!d_inCheckSat, "Sat solver in solve()!");
Debug("prop") << "push()" << endl;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback