summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDejan Jovanović <dejan.jovanovic@gmail.com>2012-06-12 19:09:39 +0000
committerDejan Jovanović <dejan.jovanovic@gmail.com>2012-06-12 19:09:39 +0000
commitc58fa3ff70a1bb6b13ef9489159a899c4f49b004 (patch)
tree3c968ad91a35371fdd8bc77c47bc2094b017b284
parentc5cdb4202b65d59aafa4156664400338958a3aa1 (diff)
bufixes and the bugs
* array now only propagates thropugh the equality engine * assertions in the equality rewriting to ensure eq -> { eq, T, F }
-rw-r--r--src/theory/arrays/theory_arrays.cpp6
-rw-r--r--src/theory/rewriter.cpp11
-rw-r--r--src/theory/theory_engine.cpp2
-rw-r--r--test/regress/regress0/aufbv/Makefile.am11
-rw-r--r--test/regress/regress0/aufbv/fuzz00.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz01.delta01.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz01.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz02.delta01.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz02.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz04.delta01.smt2
-rw-r--r--test/regress/regress0/aufbv/fuzz04.smt2
-rw-r--r--test/regress/regress0/auflia/Makefile.am3
-rw-r--r--test/regress/regress0/auflia/fuzz01.delta01.smt2
13 files changed, 34 insertions, 15 deletions
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
index 0e791e39c..0cd487d32 100644
--- a/src/theory/arrays/theory_arrays.cpp
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -719,9 +719,9 @@ void TheoryArrays::check(Effort e) {
Node bk = nm->mkNode(kind::SELECT, fact[0][1], k);
Node eq = d_valuation.ensureLiteral(ak.eqNode(bk));
Assert(eq.getKind() == kind::EQUAL);
- d_equalityEngine.assertEquality(eq, false, fact);
- propagate(eq.notNode());
- Trace("arrays-lem")<<"Arrays::addExtLemma "<< ak << " /= " << bk <<"\n";
+ Node lemma = fact[0].orNode(eq.notNode());
+ Trace("arrays-lem")<<"Arrays::addExtLemma " << lemma <<"\n";
+ d_out->lemma(lemma);
++d_numExt;
}
}
diff --git a/src/theory/rewriter.cpp b/src/theory/rewriter.cpp
index 0c5cada09..2e8acfa89 100644
--- a/src/theory/rewriter.cpp
+++ b/src/theory/rewriter.cpp
@@ -63,12 +63,20 @@ Node Rewriter::rewrite(TNode node) {
}
Node Rewriter::rewriteEquality(theory::TheoryId theoryId, TNode node) {
+ Assert(node.getKind() == kind::EQUAL);
Trace("rewriter") << "Rewriter::rewriteEquality(" << theoryId << "," << node << ")"<< std::endl;
- return Rewriter::callRewriteEquality(theoryId, node);
+ Node result = Rewriter::callRewriteEquality(theoryId, node);
+ Trace("rewriter") << "Rewriter::rewriteEquality(" << theoryId << "," << node << ") => " << result << std::endl;
+ Assert(result.getKind() == kind::EQUAL || result.isConst());
+ return result;
}
Node Rewriter::rewriteTo(theory::TheoryId theoryId, Node node) {
+#ifdef CVC4_ASSERTIONS
+ bool isEquality = node.getKind() == kind::EQUAL;
+#endif
+
Trace("rewriter") << "Rewriter::rewriteTo(" << theoryId << "," << node << ")"<< std::endl;
// Check if it's been cached already
@@ -190,6 +198,7 @@ Node Rewriter::rewriteTo(theory::TheoryId theoryId, Node node) {
// If this is the last node, just return
if (rewriteStack.size() == 1) {
+ Assert(!isEquality || rewriteStackTop.node.getKind() == kind::EQUAL || rewriteStackTop.node.isConst());
return rewriteStackTop.node;
}
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index a047b2b06..f29be08a6 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -951,7 +951,7 @@ void TheoryEngine::assertFact(TNode literal)
bool TheoryEngine::propagate(TNode literal, theory::TheoryId theory) {
- Debug("theory") << "TheoryEngine::propagate(" << literal << ", " << theory << ")" << std::endl;
+ Debug("theory::propagate") << "TheoryEngine::propagate(" << literal << ", " << theory << ")" << std::endl;
d_propEngine->checkTime();
diff --git a/test/regress/regress0/aufbv/Makefile.am b/test/regress/regress0/aufbv/Makefile.am
index bec83183a..be01286e2 100644
--- a/test/regress/regress0/aufbv/Makefile.am
+++ b/test/regress/regress0/aufbv/Makefile.am
@@ -18,7 +18,16 @@ TESTS = \
diseqprop.01.smt \
wchains010ue.delta01.smt \
wchains010ue.delta02.smt \
- dubreva005ue.delta01.smt
+ dubreva005ue.delta01.smt \
+ fuzz00.smt \
+ fuzz01.delta01.smt \
+ fuzz01.smt \
+ fuzz02.delta01.smt \
+ fuzz02.smt \
+ fuzz03.delta01.smt \
+ fuzz03.smt \
+ fuzz04.delta01.smt \
+ fuzz04.smt
EXTRA_DIST = $(TESTS)
diff --git a/test/regress/regress0/aufbv/fuzz00.smt b/test/regress/regress0/aufbv/fuzz00.smt
index 36322112e..c9095e3c7 100644
--- a/test/regress/regress0/aufbv/fuzz00.smt
+++ b/test/regress/regress0/aufbv/fuzz00.smt
@@ -1,6 +1,6 @@
(benchmark fuzzsmt
:logic QF_AUFBV
-:status unknown
+:status sat
:extrafuns ((v0 BitVec[2]))
:extrafuns ((v1 BitVec[11]))
:extrafuns ((a2 Array[5:15]))
diff --git a/test/regress/regress0/aufbv/fuzz01.delta01.smt b/test/regress/regress0/aufbv/fuzz01.delta01.smt
index 93ba564a3..f448b04d0 100644
--- a/test/regress/regress0/aufbv/fuzz01.delta01.smt
+++ b/test/regress/regress0/aufbv/fuzz01.delta01.smt
@@ -4,7 +4,7 @@
:extrafuns ((v2 BitVec[11]))
:extrafuns ((a9 Array[8:5]))
:extrafuns ((a6 Array[1:13]))
-:status unknown
+:status sat
:formula
(let (?n1 bv0[15])
(let (?n2 bv0[1])
diff --git a/test/regress/regress0/aufbv/fuzz01.smt b/test/regress/regress0/aufbv/fuzz01.smt
index 233427ae0..6605e2f09 100644
--- a/test/regress/regress0/aufbv/fuzz01.smt
+++ b/test/regress/regress0/aufbv/fuzz01.smt
@@ -1,6 +1,6 @@
(benchmark fuzzsmt
:logic QF_AUFBV
-:status unknown
+:status sat
:extrafuns ((v0 BitVec[15]))
:extrafuns ((v1 BitVec[3]))
:extrafuns ((v2 BitVec[11]))
diff --git a/test/regress/regress0/aufbv/fuzz02.delta01.smt b/test/regress/regress0/aufbv/fuzz02.delta01.smt
index cb8833ea9..3ad73d520 100644
--- a/test/regress/regress0/aufbv/fuzz02.delta01.smt
+++ b/test/regress/regress0/aufbv/fuzz02.delta01.smt
@@ -2,7 +2,7 @@
:logic QF_AUFBV
:extrafuns ((a5 Array[5:13]))
:extrafuns ((v4 BitVec[11]))
-:status unknown
+:status sat
:formula
(let (?n1 bv0[11])
(flet ($n2 (bvsle v4 ?n1))
diff --git a/test/regress/regress0/aufbv/fuzz02.smt b/test/regress/regress0/aufbv/fuzz02.smt
index 8b60e39fc..2ada96dab 100644
--- a/test/regress/regress0/aufbv/fuzz02.smt
+++ b/test/regress/regress0/aufbv/fuzz02.smt
@@ -1,6 +1,6 @@
(benchmark fuzzsmt
:logic QF_AUFBV
-:status unknown
+:status sat
:extrafuns ((v0 BitVec[14]))
:extrafuns ((v1 BitVec[10]))
:extrafuns ((v2 BitVec[10]))
diff --git a/test/regress/regress0/aufbv/fuzz04.delta01.smt b/test/regress/regress0/aufbv/fuzz04.delta01.smt
index 3958c0138..4e1cb5ab7 100644
--- a/test/regress/regress0/aufbv/fuzz04.delta01.smt
+++ b/test/regress/regress0/aufbv/fuzz04.delta01.smt
@@ -3,7 +3,7 @@
:extrafuns ((v0 BitVec[12]))
:extrafuns ((v1 BitVec[11]))
:extrafuns ((a3 Array[1:6]))
-:status unknown
+:status sat
:formula
(let (?n1 bv0[6])
(let (?n2 bv0[1])
diff --git a/test/regress/regress0/aufbv/fuzz04.smt b/test/regress/regress0/aufbv/fuzz04.smt
index 79fd3fdb5..2d7ed9d95 100644
--- a/test/regress/regress0/aufbv/fuzz04.smt
+++ b/test/regress/regress0/aufbv/fuzz04.smt
@@ -1,6 +1,6 @@
(benchmark fuzzsmt
:logic QF_AUFBV
-:status unknown
+:status sat
:extrafuns ((v0 BitVec[12]))
:extrafuns ((v1 BitVec[11]))
:extrafuns ((a2 Array[1:14]))
diff --git a/test/regress/regress0/auflia/Makefile.am b/test/regress/regress0/auflia/Makefile.am
index f4f5c57b4..617a0a072 100644
--- a/test/regress/regress0/auflia/Makefile.am
+++ b/test/regress/regress0/auflia/Makefile.am
@@ -10,7 +10,8 @@ endif
# put it below in "TESTS +="
TESTS = \
bug330.smt2 \
- bug336.smt2
+ bug336.smt2 \
+ fuzz01.delta01.smt
EXTRA_DIST = $(TESTS)
diff --git a/test/regress/regress0/auflia/fuzz01.delta01.smt b/test/regress/regress0/auflia/fuzz01.delta01.smt
index cec8c91a5..6c22a75ca 100644
--- a/test/regress/regress0/auflia/fuzz01.delta01.smt
+++ b/test/regress/regress0/auflia/fuzz01.delta01.smt
@@ -8,7 +8,7 @@
:extrafuns ((v1 Int))
:extrapreds ((p0 Int))
:extrafuns ((f0 Int Int Int Int))
-:status unknown
+:status sat
:formula
(let (?n1 0)
(flet ($n2 (> ?n1 v0))
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback