summaryrefslogtreecommitdiff
path: root/src/theory/arith
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2010-11-12 04:39:54 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2010-11-12 04:39:54 +0000
commit0eb2a0362fee06023f0668e94bb566b69f4a7cda (patch)
tree03910431f2185e2a668da5a3e5d9e61220c67fdc /src/theory/arith
parent9f935c74842084fad55e2c0efaf963791c0ebba9 (diff)
Some bug fixes in the SAT for lemmas, and an experiment with a more complete (wr propagation) splitter in arithmetic.
Diffstat (limited to 'src/theory/arith')
-rw-r--r--src/theory/arith/theory_arith.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp
index 7b768d9af..7cedbcd20 100644
--- a/src/theory/arith/theory_arith.cpp
+++ b/src/theory/arith/theory_arith.cpp
@@ -416,7 +416,17 @@ void TheoryArith::check(Effort effortLevel){
Node ltNode = NodeBuilder<2>(kind::LT) << lhs << rhs;
Node gtNode = NodeBuilder<2>(kind::GT) << lhs << rhs;
Node lemma = NodeBuilder<3>(OR) << eq << ltNode << gtNode;
- d_out->lemma(lemma);
+
+ // < => !>
+ Node imp1 = NodeBuilder<2>(kind::IMPLIES) << ltNode << gtNode.notNode();
+ // < => !=
+ Node imp2 = NodeBuilder<2>(kind::IMPLIES) << ltNode << eq.notNode();
+ // > => !=
+ Node imp3 = NodeBuilder<2>(kind::IMPLIES) << gtNode << eq.notNode();
+ // All the implication
+ Node impClosure = NodeBuilder<3>(kind::AND) << imp1 << imp2 << imp3;
+
+ d_out->lemma(lemma.andNode(impClosure));
}
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback