diff options
author | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2012-06-10 06:09:25 +0000 |
---|---|---|
committer | Dejan Jovanović <dejan.jovanovic@gmail.com> | 2012-06-10 06:09:25 +0000 |
commit | 103d6a6aad30410f8d7546c25c1f5e67f1c334d7 (patch) | |
tree | d3e2a30a59618d38aa8882b1ef09f82170607283 /src/theory | |
parent | e761ec344a7c9d9b5bff5f312cdb8932083e0bc8 (diff) |
adding an assertion to trigger the problem of bug349 and the testcase
bv rewriter apparently deosn't have a proper normal form for equalities
Diffstat (limited to 'src/theory')
-rw-r--r-- | src/theory/theory_engine.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp index 0be232bfa..97c17222c 100644 --- a/src/theory/theory_engine.cpp +++ b/src/theory/theory_engine.cpp @@ -444,6 +444,11 @@ bool TheoryEngine::properConflict(TNode conflict) const { << conflict[i] << endl; return false; } + if (conflict[i] != Rewriter::rewrite(conflict[i])) { + Debug("properConflict") << "Bad conflict is due to atom not in normal form: " + << conflict[i] << " vs " << Rewriter::rewrite(conflict[i]) << endl; + return false; + } } } else { if (! getPropEngine()->hasValue(conflict, value)) { @@ -456,6 +461,11 @@ bool TheoryEngine::properConflict(TNode conflict) const { << conflict << endl; return false; } + if (conflict != Rewriter::rewrite(conflict)) { + Debug("properConflict") << "Bad conflict is due to atom not in normal form: " + << conflict << " vs " << Rewriter::rewrite(conflict) << endl; + return false; + } } return true; } @@ -1094,6 +1104,7 @@ void TheoryEngine::conflict(TNode conflict, TheoryId theoryId) { getExplanation(explanationVector); Node fullConflict = mkExplanation(explanationVector); Debug("theory::conflict") << "TheoryEngine::conflict(" << conflict << ", " << theoryId << "): full = " << fullConflict << std::endl; + Assert(properConflict(fullConflict)); lemma(fullConflict, true, false); } else { // When only one theory, the conflict should need no processing |