Disable preregistration of instantiations for cegqi in incremental (#4251)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 15 Apr 2020 01:54:54 +0000 (20:54 -0500)
committerGitHub <noreply@github.com>
Wed, 15 Apr 2020 01:54:54 +0000 (20:54 -0500)
Fixes #4243.

src/smt/set_defaults.cpp
test/regress/CMakeLists.txt
test/regress/regress1/quantifiers/issue4243-prereg-inc.smt2 [new file with mode: 0644]

index 1384a28487ae01f7cf4cefdd475ae00f842bdee8..844d253798f089c1e663689dfa804dd0a6d636d3 100644 (file)
@@ -1118,6 +1118,7 @@ void setDefaults(SmtEngine& smte, LogicInfo& logic)
     {
       // cannot do nested quantifier elimination in incremental mode
       options::cbqiNestedQE.set(false);
+      options::cbqiPreRegInst.set(false);
     }
     if (logic.isPure(THEORY_ARITH) || logic.isPure(THEORY_BV))
     {
index 9608791f2486f4f8e57ff6217138b761c3ce8a48..3c104862fdb5d9b6c87a5ea3f7199b46f61db425 100644 (file)
@@ -1519,6 +1519,7 @@ set(regress_1_tests
   regress1/quantifiers/issue3765-quant-dd.smt2
   regress1/quantifiers/issue4021-ind-opts.smt2
   regress1/quantifiers/issue4062-cegqi-aux.smt2
+  regress1/quantifiers/issue4243-prereg-inc.smt2
   regress1/quantifiers/issue4290-cegqi-r.smt2
   regress1/quantifiers/issue993.smt2
   regress1/quantifiers/javafe.ast.StmtVec.009.smt2
diff --git a/test/regress/regress1/quantifiers/issue4243-prereg-inc.smt2 b/test/regress/regress1/quantifiers/issue4243-prereg-inc.smt2
new file mode 100644 (file)
index 0000000..aa5cbc3
--- /dev/null
@@ -0,0 +1,15 @@
+; COMMAND-LINE: -i
+; EXPECT: sat
+(set-logic BV)
+(set-info :status sat)
+(declare-fun _substvar_16_ () Bool)
+(set-option :cbqi-prereg-inst true)
+(set-option :check-models true)
+(declare-fun v2 () Bool)
+(push 1)
+(assert (exists ((q1 (_ BitVec 12)) (q2 Bool) (q3 (_ BitVec 12))) (xor _substvar_16_ q2 v2)))
+(push 1)
+(pop 1)
+(pop 1)
+(assert (forall ((q23 (_ BitVec 6))) v2))
+(check-sat)