diff options
author | Tim King <taking@cs.nyu.edu> | 2012-06-14 21:24:44 +0000 |
---|---|---|
committer | Tim King <taking@cs.nyu.edu> | 2012-06-14 21:24:44 +0000 |
commit | ae66405f6fc4af734d84b8eb2752d2706d056814 (patch) | |
tree | 33745f45e60288c87d4438fd77562bd2067c2dd6 | |
parent | c43514fef548f977e88e2986c2f993b975830cc2 (diff) |
Fixing a case for explanation of non-normal form equalities.
-rw-r--r-- | src/theory/arith/theory_arith.cpp | 13 |
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; |