summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim King <taking@cs.nyu.edu>2012-06-14 21:24:44 +0000
committerTim King <taking@cs.nyu.edu>2012-06-14 21:24:44 +0000
commitae66405f6fc4af734d84b8eb2752d2706d056814 (patch)
tree33745f45e60288c87d4438fd77562bd2067c2dd6
parentc43514fef548f977e88e2986c2f993b975830cc2 (diff)
Fixing a case for explanation of non-normal form equalities.
-rw-r--r--src/theory/arith/theory_arith.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp
index 2c863ba84..eb0c99abe 100644
--- a/src/theory/arith/theory_arith.cpp
+++ b/src/theory/arith/theory_arith.cpp
@@ -1723,9 +1723,16 @@ Node TheoryArith::explain(TNode n) {
return exp;
}else if(d_assertionsThatDoNotMatchTheirLiterals.find(n) != d_assertionsThatDoNotMatchTheirLiterals.end()){
c = d_assertionsThatDoNotMatchTheirLiterals[n];
- Node exp = c->explainForPropagation();
- Debug("arith::explain") << "assertions explanation" << n << ":" << exp << endl;
- return exp;
+ if(!c->isSelfExplaining()){
+ Node exp = c->explainForPropagation();
+ Debug("arith::explain") << "assertions explanation" << n << ":" << exp << endl;
+ return exp;
+ }else{
+ Debug("arith::explain") << "this is a strange mismatch" << n << endl;
+ Assert(d_congruenceManager.canExplain(n));
+ Debug("arith::explain") << "this is a strange mismatch" << n << endl;
+ return d_congruenceManager.explain(n);
+ }
}else{
Assert(d_congruenceManager.canExplain(n));
Debug("arith::explain") << "dm explanation" << n << endl;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback