summaryrefslogtreecommitdiff
path: root/test/regress/regress0
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-12-14 07:04:17 -0600
committerGitHub <noreply@github.com>2020-12-14 14:04:17 +0100
commitd16b689f85e4962dfc77e8e9a1b7de23ab11ac7d (patch)
tree3268a45a2316217b108deb3d1700ce54b9a29233 /test/regress/regress0
parenta49efc8c32020b7c2285fa744ae61a576801c51d (diff)
Fix SAT-context dependent issue in strings preregistration (#5564)
This makes preregistration of terms SAT-context dependent in strings instead of user-context dependent. Fixes #5547. This is required to avoid model unsoundness on sequence benchmarks, as demonstrated in that issue. It furthermore impacts how we have been handling theory combination with arithmetic for str.len and impacts how propagation is setup for the strings equality engine. I will do performance testing on this PR.
Diffstat (limited to 'test/regress/regress0')
-rw-r--r--test/regress/regress0/seq/issue5547-seq-len-unit.smt28
-rw-r--r--test/regress/regress0/seq/issue5547-small-seq-len-unit.smt27
2 files changed, 15 insertions, 0 deletions
diff --git a/test/regress/regress0/seq/issue5547-seq-len-unit.smt2 b/test/regress/regress0/seq/issue5547-seq-len-unit.smt2
new file mode 100644
index 000000000..40b43d318
--- /dev/null
+++ b/test/regress/regress0/seq/issue5547-seq-len-unit.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --strings-exp
+; EXPECT: sat
+(set-logic QF_SLIA)
+(declare-fun seq3 () (Seq Int))
+(declare-fun seq10 () (Seq Int))
+(declare-fun seq12 () (Seq Int))
+(assert (seq.suffixof (seq.++ (seq.unit (seq.len (seq.++ seq12 (seq.rev seq3)))) seq3) seq10))
+(check-sat)
diff --git a/test/regress/regress0/seq/issue5547-small-seq-len-unit.smt2 b/test/regress/regress0/seq/issue5547-small-seq-len-unit.smt2
new file mode 100644
index 000000000..848975c96
--- /dev/null
+++ b/test/regress/regress0/seq/issue5547-small-seq-len-unit.smt2
@@ -0,0 +1,7 @@
+; COMMAND-LINE: --simplification=none --strings-exp
+; EXPECT: sat
+(set-logic ALL)
+(declare-fun a () (Seq Int))
+(declare-fun b () (Seq Int))
+(assert (= a (seq.++ b (seq.unit (+ (seq.len b) 1)))))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback