summaryrefslogtreecommitdiff
path: root/src/theory/arrays/theory_arrays.cpp
diff options
context:
space:
mode:
authorGuy <katz911@gmail.com>2016-04-14 16:04:57 -0700
committerGuy <katz911@gmail.com>2016-04-14 16:04:57 -0700
commit6fd0c6e6690b582fc8a48b39148ee629a89d4a68 (patch)
tree87b92a38ffe24e39c4d31881bde4417cc4344b98 /src/theory/arrays/theory_arrays.cpp
parent199cf857baa106545196503cc4029e2b7771d1af (diff)
Remove some no-longer-required rewrites of array lemmas
Diffstat (limited to 'src/theory/arrays/theory_arrays.cpp')
-rw-r--r--src/theory/arrays/theory_arrays.cpp102
1 files changed, 12 insertions, 90 deletions
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
index a0ad276b0..4d7fcff92 100644
--- a/src/theory/arrays/theory_arrays.cpp
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -2059,57 +2059,18 @@ void TheoryArrays::queueRowLemma(RowLemmaType lem)
if ((options::arraysEagerLemmas() || bothExist) && !d_proofsEnabled) {
- // Make sure that any terms introduced by rewriting are appropriately stored in the equality database
- Node aj2 = Rewriter::rewrite(aj);
- if (aj != aj2) {
- if (!ajExists) {
- preRegisterTermInternal(aj);
- }
- if (!d_equalityEngine.hasTerm(aj2)) {
- preRegisterTermInternal(aj2);
- }
- d_equalityEngine.assertEquality(aj.eqNode(aj2), true, d_true);
- }
- Node bj2 = Rewriter::rewrite(bj);
- if (bj != bj2) {
- if (!bjExists) {
- preRegisterTermInternal(bj);
- }
- if (!d_equalityEngine.hasTerm(bj2)) {
- preRegisterTermInternal(bj2);
- }
- d_equalityEngine.assertEquality(bj.eqNode(bj2), true, d_true);
+ if (!ajExists) {
+ preRegisterTermInternal(aj);
}
- if (aj2 == bj2) {
- return;
- }
-
- // construct lemma
- Node eq1 = aj2.eqNode(bj2);
- Node eq1_r = Rewriter::rewrite(eq1);
- if (eq1_r == d_true) {
- if (!d_equalityEngine.hasTerm(aj2)) {
- preRegisterTermInternal(aj2);
- }
- if (!d_equalityEngine.hasTerm(bj2)) {
- preRegisterTermInternal(bj2);
- }
- d_equalityEngine.assertEquality(eq1, true, d_true);
- return;
- }
-
- Node eq2 = i.eqNode(j);
- Node eq2_r = Rewriter::rewrite(eq2);
- if (eq2_r == d_true) {
- d_equalityEngine.assertEquality(eq2, true, d_true);
- return;
+ if (!bjExists) {
+ preRegisterTermInternal(bj);
}
- Node lemma = nm->mkNode(kind::OR, eq2_r, eq1_r);
+ Node lemma = nm->mkNode(kind::OR, i.eqNode(j), aj.eqNode(bj));
Trace("arrays-lem")<<"Arrays::addRowLemma adding "<<lemma<<"\n";
d_RowAlreadyAdded.insert(lem);
- d_out->lemma(lemma);
+ d_out->lemma(lemma, RULE_INVALID, false, false, true);
++d_numRow;
}
else {
@@ -2168,57 +2129,18 @@ bool TheoryArrays::dischargeLemmas()
}
}
- // Make sure that any terms introduced by rewriting are appropriately stored in the equality database
- Node aj2 = Rewriter::rewrite(aj);
- if (aj != aj2) {
- if (!ajExists) {
- preRegisterTermInternal(aj);
- }
- if (!d_equalityEngine.hasTerm(aj2)) {
- preRegisterTermInternal(aj2);
- }
- d_equalityEngine.assertEquality(aj.eqNode(aj2), true, d_true);
- }
- Node bj2 = Rewriter::rewrite(bj);
- if (bj != bj2) {
- if (!bjExists) {
- preRegisterTermInternal(bj);
- }
- if (!d_equalityEngine.hasTerm(bj2)) {
- preRegisterTermInternal(bj2);
- }
- d_equalityEngine.assertEquality(bj.eqNode(bj2), true, d_true);
+ if (!ajExists) {
+ preRegisterTermInternal(aj);
}
- if (aj2 == bj2) {
- continue;
- }
-
- // construct lemma
- Node eq1 = aj2.eqNode(bj2);
- Node eq1_r = Rewriter::rewrite(eq1);
- if (eq1_r == d_true) {
- if (!d_equalityEngine.hasTerm(aj2)) {
- preRegisterTermInternal(aj2);
- }
- if (!d_equalityEngine.hasTerm(bj2)) {
- preRegisterTermInternal(bj2);
- }
- d_equalityEngine.assertEquality(eq1, true, d_true);
- continue;
- }
-
- Node eq2 = i.eqNode(j);
- Node eq2_r = Rewriter::rewrite(eq2);
- if (eq2_r == d_true) {
- d_equalityEngine.assertEquality(eq2, true, d_true);
- continue;
+ if (!bjExists) {
+ preRegisterTermInternal(bj);
}
- Node lem = nm->mkNode(kind::OR, eq2_r, eq1_r);
+ Node lem = nm->mkNode(kind::OR, i.eqNode(j), aj.eqNode(bj));
Trace("arrays-lem")<<"Arrays::addRowLemma adding "<<lem<<"\n";
d_RowAlreadyAdded.insert(l);
- d_out->lemma(lem);
+ d_out->lemma(lem, RULE_INVALID, false, false, true);
++d_numRow;
lemmasAdded = true;
if (options::arraysReduceSharing()) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback