yet another uf bug fix, hopefully the last
authorDejan Jovanović <dejan.jovanovic@gmail.com>
Sun, 10 Jul 2011 12:32:13 +0000 (12:32 +0000)
committerDejan Jovanović <dejan.jovanovic@gmail.com>
Sun, 10 Jul 2011 12:32:13 +0000 (12:32 +0000)
src/theory/uf/theory_uf.cpp

index 438854a9a411f0d50d732a692b1b90be140419fc..409edc53abe26ee659945fbe610d242ab9ddea1a 100644 (file)
@@ -65,6 +65,16 @@ void TheoryUF::check(Effort level) {
     case kind::NOT:
       if (assertion[0].getKind() == kind::APPLY_UF) {
         d_equalityEngine.addEquality(assertion[0], d_false, assertion);
+      } else {
+        // disequality
+        TNode equality = assertion[0];
+        if (d_equalityEngine.getRepresentative(equality[0]) == d_equalityEngine.getRepresentative(equality[1])) {
+          std::vector<TNode> assumptions;
+          assumptions.push_back(assertion);
+          explain(equality, assumptions);
+          d_conflictNode = mkAnd(assumptions);
+          d_conflict = true;
+        }
       }
       break;
     default: