diff options
author | Andres Noetzli <noetzli@stanford.edu> | 2017-01-04 09:20:34 -0800 |
---|---|---|
committer | Andres Nötzli <andres.noetzli@gmail.com> | 2017-01-18 13:07:43 -0800 |
commit | a8a7949ec3e1a7f2a2d241d0fc58e08cbf4b7aec (patch) | |
tree | b66b6806c1d2e20aeb986b0ca5dd7f01ce1cd640 | |
parent | cf29fe25fa902c23e440c02abe945f8441c60ec8 (diff) |
Fix non-idempotent rewrite in Array rewriter
This commit fixes bug 637 (
http://church.cims.nyu.edu/bugzilla3/show_bug.cgi?id=637 ) as
proposed in Bugzilla and adds the minified test case to the
regression tests.
-rw-r--r-- | src/theory/arrays/theory_arrays_rewriter.h | 3 | ||||
-rw-r--r-- | test/regress/regress0/arrays/Makefile.am | 3 | ||||
-rw-r--r-- | test/regress/regress0/arrays/bug637.delta.smt2 | 14 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/theory/arrays/theory_arrays_rewriter.h b/src/theory/arrays/theory_arrays_rewriter.h index de10a861b..2726f386b 100644 --- a/src/theory/arrays/theory_arrays_rewriter.h +++ b/src/theory/arrays/theory_arrays_rewriter.h @@ -370,8 +370,9 @@ public: indices.pop_back(); elements.pop_back(); } + Assert(n != node); Trace("arrays-postrewrite") << "Arrays::postRewrite returning " << n << std::endl; - return RewriteResponse(REWRITE_DONE, n); + return RewriteResponse(REWRITE_AGAIN, n); } } break; diff --git a/test/regress/regress0/arrays/Makefile.am b/test/regress/regress0/arrays/Makefile.am index 19aab3e55..b974bc95e 100644 --- a/test/regress/regress0/arrays/Makefile.am +++ b/test/regress/regress0/arrays/Makefile.am @@ -48,7 +48,8 @@ TESTS = \ constarr.cvc \ constarr2.cvc \ constarr3.cvc \ - parsing_ringer.cvc + parsing_ringer.cvc \ + bug637.delta.smt2 EXTRA_DIST = $(TESTS) diff --git a/test/regress/regress0/arrays/bug637.delta.smt2 b/test/regress/regress0/arrays/bug637.delta.smt2 new file mode 100644 index 000000000..45e09f261 --- /dev/null +++ b/test/regress/regress0/arrays/bug637.delta.smt2 @@ -0,0 +1,14 @@ +(set-logic QF_ABV) +(set-info :status unsat) +(declare-fun x2 () (_ BitVec 32)) +(declare-fun a () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun x3 () (_ BitVec 32)) + +(assert (not (= +(store (store (store a x2 (select a (bvadd x2 (_ bv1 32)))) + (bvadd x2 (_ bv1 32)) (select a (bvadd x2 (_ bv1 32)))) + x2 (select a x2)) + + a))) +(check-sat) +(exit) |