summaryrefslogtreecommitdiff
path: root/src/theory/uf/theory_uf.cpp
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2011-12-12 09:47:37 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2011-12-12 09:47:37 +0000
commit6d04f19e1c1fbf7714fbb95dc62648ac44b419dd (patch)
tree7f5486f7b4a88323708f693b5905afb6375d8ca3 /src/theory/uf/theory_uf.cpp
parent933a1ea506fd553e756be942087ef82154b6f959 (diff)
* merging some uf stuff from incremental_work branch that somehow nobody merged-in
* since two theories can propagate the same literal minisat now explicitly checks that a propagated literal has not been asserted yet
Diffstat (limited to 'src/theory/uf/theory_uf.cpp')
-rw-r--r--src/theory/uf/theory_uf.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
index 58fa44358..e2462f244 100644
--- a/src/theory/uf/theory_uf.cpp
+++ b/src/theory/uf/theory_uf.cpp
@@ -236,9 +236,16 @@ void TheoryUF::explain(TNode literal, std::vector<TNode>& assumptions) {
rhs = d_true;
break;
case kind::NOT:
- lhs = literal[0];
- rhs = d_false;
- break;
+ if (literal[0].getKind() == kind::EQUAL) {
+ // Disequalities
+ d_equalityEngine.explainDisequality(literal[0][0], literal[0][1], assumptions);
+ return;
+ } else {
+ // Predicates
+ lhs = literal[0];
+ rhs = d_false;
+ break;
+ }
case kind::CONST_BOOLEAN:
// we get to explain true = false, since we set false to be the trigger of this
lhs = d_true;
@@ -247,8 +254,8 @@ void TheoryUF::explain(TNode literal, std::vector<TNode>& assumptions) {
default:
Unreachable();
}
- d_equalityEngine.getExplanation(lhs, rhs, assumptions);
-}/* TheoryUF::explain() */
+ d_equalityEngine.explainEquality(lhs, rhs, assumptions);
+}
Node TheoryUF::explain(TNode literal) {
Debug("uf") << "TheoryUF::explain(" << literal << ")" << std::endl;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback