summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-03-09 00:15:09 -0500
committerGitHub <noreply@github.com>2020-03-08 22:15:09 -0700
commite3110121a3f19ba1594a9b54f7f332804fd2e2af (patch)
tree2ea6cc85a99d7c7725c8d6ef349d400a5e259711
parenta0b35a8ba9c47ed521082c5ac5a8f50909d9f7c4 (diff)
Rewrite again full for DIV rewrite (#3945)
Fixes #3944.
-rw-r--r--src/theory/arith/arith_rewriter.cpp2
-rw-r--r--test/regress/CMakeLists.txt1
-rw-r--r--test/regress/regress1/sygus/issue3944-div-rewrite.smt211
3 files changed, 13 insertions, 1 deletions
diff --git a/src/theory/arith/arith_rewriter.cpp b/src/theory/arith/arith_rewriter.cpp
index 4f93ba745..222b63db5 100644
--- a/src/theory/arith/arith_rewriter.cpp
+++ b/src/theory/arith/arith_rewriter.cpp
@@ -753,7 +753,7 @@ RewriteResponse ArithRewriter::rewriteIntsDivModTotal(TNode t, bool pre){
Node ret = (k == kind::INTS_DIVISION || k == kind::INTS_DIVISION_TOTAL)
? nm->mkNode(kind::UMINUS, nn)
: nn;
- return RewriteResponse(REWRITE_AGAIN, ret);
+ return RewriteResponse(REWRITE_AGAIN_FULL, ret);
}
else if (dIsConstant && n.getKind() == kind::CONST_RATIONAL)
{
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt
index 3bcbfa859..5ef9f9f6c 100644
--- a/test/regress/CMakeLists.txt
+++ b/test/regress/CMakeLists.txt
@@ -1839,6 +1839,7 @@ set(regress_1_tests
regress1/sygus/issue3649.sy
regress1/sygus/issue3802-default-consts.sy
regress1/sygus/issue3839-cond-rewrite.smt2
+ regress1/sygus/issue3944-div-rewrite.smt2
regress1/sygus/large-const-simp.sy
regress1/sygus/let-bug-simp.sy
regress1/sygus/list-head-x.sy
diff --git a/test/regress/regress1/sygus/issue3944-div-rewrite.smt2 b/test/regress/regress1/sygus/issue3944-div-rewrite.smt2
new file mode 100644
index 000000000..78035790b
--- /dev/null
+++ b/test/regress/regress1/sygus/issue3944-div-rewrite.smt2
@@ -0,0 +1,11 @@
+; EXPECT: sat
+; COMMAND-LINE: --sygus-inference
+(set-logic ALL)
+(declare-fun a () Int)
+(declare-fun b () Int)
+(declare-fun c () Int)
+(declare-fun d () Int)
+(assert (= c d))
+(assert (> (+ a (div 0 b)) c))
+(assert (= b (- 1)))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback