diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-09-14 21:58:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-14 21:58:08 -0500 |
commit | 4a1b5ea5568fb6c688f407946f9a7fbb1cec3c31 (patch) | |
tree | 016119f36abe7835183ce3ca3e2b7ffdaa383fcb /test/regress | |
parent | 996f6f9e2ecf76e39c236f9c410c109807c7073d (diff) |
Fix needsModel method for CEGQI (#5048)
There was a bug in CEGQI's needModel method which could say that it doesnt need a model built when there are no active quantifiers. However, computing active quantifiers is not done in QuantifiersEngine::check until after this method is called, meaning it was using stale data on whether a quantifier was active or not. This could lead to the use of bogus models in CEGQI in incremental mode in some corner cases, leading to the assertion failure in #5019.
Fixes #5019.
Diffstat (limited to 'test/regress')
-rw-r--r-- | test/regress/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/regress/regress1/quantifiers/issue5019-cegqi-i.smt2 | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt index ef0981372..9e1480852 100644 --- a/test/regress/CMakeLists.txt +++ b/test/regress/CMakeLists.txt @@ -1583,6 +1583,7 @@ set(regress_1_tests regress1/quantifiers/issue4290-cegqi-r.smt2 regress1/quantifiers/issue4620-erq-witness-unsound.smt2 regress1/quantifiers/issue4685-wrewrite.smt2 + regress1/quantifiers/issue5019-cegqi-i.smt2 regress1/quantifiers/issue993.smt2 regress1/quantifiers/javafe.ast.StmtVec.009.smt2 regress1/quantifiers/lra-vts-inf.smt2 diff --git a/test/regress/regress1/quantifiers/issue5019-cegqi-i.smt2 b/test/regress/regress1/quantifiers/issue5019-cegqi-i.smt2 new file mode 100644 index 000000000..85c59db22 --- /dev/null +++ b/test/regress/regress1/quantifiers/issue5019-cegqi-i.smt2 @@ -0,0 +1,10 @@ +; COMMAND-LINE: --incremental +; EXPECT: sat +; EXPECT: sat +(set-logic BV) +(declare-const v4 Bool) +(assert (forall ((q0 Bool) (q1 Bool)) (xor true true q1 v4 q1 true true true true true true))) +(push 1) +(check-sat) +(pop 1) +(check-sat) |