summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2019-12-01 23:34:18 -0600
committerGitHub <noreply@github.com>2019-12-01 23:34:18 -0600
commita39f1719ede136579cbd15c34b6a763a2b08a464 (patch)
tree4bc0f72f191167c400d42011f2bd062d7b4103ba
parentac9808bdc0c6d5619f636691bd737079b50b9ea5 (diff)
Ensure quantifiers options are set with --no-strings-lazy-pp (#3515)
-rw-r--r--src/smt/smt_engine.cpp8
-rw-r--r--test/regress/CMakeLists.txt1
-rw-r--r--test/regress/regress0/strings/issue3440.smt211
3 files changed, 17 insertions, 3 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index ca5558e87..eb10f580a 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1251,10 +1251,12 @@ void SmtEngine::setDefaults() {
}
}
- // set default options associated with strings-exp
- if (options::stringExp())
+ // Set default options associated with strings-exp. We also set these options
+ // if we are using eager string preprocessing, which may introduce quantified
+ // formulas at preprocess time.
+ if (options::stringExp() || !options::stringLazyPreproc())
{
- // We require quantifiers since extended functions reduce using them
+ // We require quantifiers since extended functions reduce using them.
if (!d_logic.isQuantified())
{
d_logic = d_logic.getUnlockedCopy();
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt
index e4b5b8057..da9679e2d 100644
--- a/test/regress/CMakeLists.txt
+++ b/test/regress/CMakeLists.txt
@@ -871,6 +871,7 @@ set(regress_0_tests
regress0/strings/indexof-sym-simp.smt2
regress0/strings/issue1189.smt2
regress0/strings/issue2958.smt2
+ regress0/strings/issue3440.smt2
regress0/strings/issue3497.smt2
regress0/strings/itos-entail.smt2
regress0/strings/leadingzero001.smt2
diff --git a/test/regress/regress0/strings/issue3440.smt2 b/test/regress/regress0/strings/issue3440.smt2
new file mode 100644
index 000000000..7eb3419f2
--- /dev/null
+++ b/test/regress/regress0/strings/issue3440.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --no-strings-lazy-pp
+; EXPECT: sat
+(set-info :smt-lib-version 2.5)
+(set-logic QF_S)
+(set-info :status sat)
+(declare-fun a () String)
+(declare-fun b () String)
+(declare-fun c () String)
+(declare-fun d () String)
+(assert (= (str.replace a b "") (str.++ c d)))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback