diff options
Diffstat (limited to 'src')
-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 |