summaryrefslogtreecommitdiff
path: root/src/prop/cnf_stream.cpp
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2012-05-09 21:25:17 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2012-05-09 21:25:17 +0000
commit1ce0650dcf8ce30424b546deb540974cc510c215 (patch)
tree74a9985463234fc9adfed2de209c134ed7da359b /src/prop/cnf_stream.cpp
parent690fb2843d9845e405fee54eb2d8023eebbd5b72 (diff)
* simplifying equality engine interface
* notifications are now through the interface subclass instead of a template * notifications include constants being merged * changed contextNotifyObj::notify to contextNotifyObj::contextNotifyPop so it's more descriptive and doesn't clutter methods when subclassed * sat solver now has explicit methods to make true and false constants * 0-level literals are removed from explanations of propagations
Diffstat (limited to 'src/prop/cnf_stream.cpp')
-rw-r--r--src/prop/cnf_stream.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/prop/cnf_stream.cpp b/src/prop/cnf_stream.cpp
index 3a4fa781a..d18ec6e69 100644
--- a/src/prop/cnf_stream.cpp
+++ b/src/prop/cnf_stream.cpp
@@ -175,7 +175,15 @@ SatLiteral CnfStream::newLiteral(TNode node, bool theoryLiteral) {
SatLiteral lit;
if (!hasLiteral(node)) {
// If no literal, we'll make one
- lit = SatLiteral(d_satSolver->newVar(theoryLiteral));
+ if (node.getKind() == kind::CONST_BOOLEAN) {
+ if (node.getConst<bool>()) {
+ lit = SatLiteral(d_satSolver->trueVar());
+ } else {
+ lit = SatLiteral(d_satSolver->falseVar());
+ }
+ } else {
+ lit = SatLiteral(d_satSolver->newVar(theoryLiteral));
+ }
d_translationCache[node].literal = lit;
d_translationCache[node.notNode()].literal = ~lit;
} else {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback