summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-04-06 07:28:59 -0500
committerGitHub <noreply@github.com>2021-04-06 07:28:59 -0500
commitda03399e50e33acd4d4a6534205a67d03f44f4c1 (patch)
tree31f5fac566100968cb64267b0ce2b7ba9220fe44
parent7f0ea0fafaca1bc40dd1f6f5891526956de857b1 (diff)
Fix issue with lemma during equality engine iterator in sets (#6289)
Fixes #4370.
-rw-r--r--src/theory/sets/theory_sets_private.cpp4
-rw-r--r--test/regress/CMakeLists.txt2
-rw-r--r--test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt27
-rw-r--r--test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt28
4 files changed, 21 insertions, 0 deletions
diff --git a/src/theory/sets/theory_sets_private.cpp b/src/theory/sets/theory_sets_private.cpp
index ea7e773b7..bb4080578 100644
--- a/src/theory/sets/theory_sets_private.cpp
+++ b/src/theory/sets/theory_sets_private.cpp
@@ -286,6 +286,10 @@ void TheorySetsPrivate::fullEffortCheck()
d_card_enabled = true;
// register it with the cardinality solver
d_cardSolver->registerTerm(n);
+ if (d_im.hasSent())
+ {
+ break;
+ }
// if we do not handle the kind, set incomplete
Kind nk0 = n[0].getKind();
// some kinds of cardinality we cannot handle
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt
index 6bff05bdb..49b7b0543 100644
--- a/test/regress/CMakeLists.txt
+++ b/test/regress/CMakeLists.txt
@@ -1969,6 +1969,8 @@ set(regress_1_tests
regress1/sets/issue2568.smt2
regress1/sets/issue2904.smt2
regress1/sets/issue4124-need-check.smt2
+ regress1/sets/issue4370-2-lemma-ee-iter.smt2
+ regress1/sets/issue4370-4-lemma-ee-iter.smt2
regress1/sets/issue4391-card-lasso.smt2
regress1/sets/issue5271.smt2
regress1/sets/issue5309.smt2
diff --git a/test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt2 b/test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt2
new file mode 100644
index 000000000..aa7349261
--- /dev/null
+++ b/test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL)
+(set-info :status unsat)
+(declare-fun st1 () (Set Int))
+(declare-fun st7 () (Set Int))
+(assert (> 0 (card (intersection st1 (union st7 st1)))))
+(assert (subset st1 st7))
+(check-sat)
diff --git a/test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt2 b/test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt2
new file mode 100644
index 000000000..95425709d
--- /dev/null
+++ b/test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt2
@@ -0,0 +1,8 @@
+(set-logic ALL)
+(set-info :status unsat)
+(declare-fun st3 () (Set String))
+(declare-fun st9 () (Set String))
+(assert (is_singleton (intersection st3 st9)))
+(assert (< 1 (card (intersection st3 st9))))
+(assert (is_singleton st9))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback