From da03399e50e33acd4d4a6534205a67d03f44f4c1 Mon Sep 17 00:00:00 2001 From: Andrew Reynolds Date: Tue, 6 Apr 2021 07:28:59 -0500 Subject: Fix issue with lemma during equality engine iterator in sets (#6289) Fixes #4370. --- src/theory/sets/theory_sets_private.cpp | 4 ++++ test/regress/CMakeLists.txt | 2 ++ test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt2 | 7 +++++++ test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt2 | 8 ++++++++ 4 files changed, 21 insertions(+) create mode 100644 test/regress/regress1/sets/issue4370-2-lemma-ee-iter.smt2 create mode 100644 test/regress/regress1/sets/issue4370-4-lemma-ee-iter.smt2 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) -- cgit v1.2.3