From 967332f464f3e26d43f05bb9c68a0be788337ef6 Mon Sep 17 00:00:00 2001 From: Andrew Reynolds Date: Tue, 28 Apr 2020 11:15:00 -0500 Subject: Support the SMT-LIB Unicode string standard by default (#4378) This PR merges --lang=smt2.6.1 and --lang=smt2.6 (default). It makes it so that 2.6 always expects the syntax of the string standard http://smtlib.cs.uiowa.edu/theories-UnicodeStrings.shtml. I've updated the regressions so that the 2.6 benchmarks are now compliant with the standard. Some of the <=2.5 benchmarks I've updated to 2.6. Others I have left for now, in particular the ones that rely on special characters or ad-hoc escape sequences. The old formats will be supported in the release but removed shortly afterwards. This PR is a prerequisite for the release, but not necessarily SMT-COMP (which will use --lang=smt2.6.1 if needed). Notice that we still do not have parsing support for str.replace_re or str.replace_re_all. This is required to be fully compliant. --- test/regress/regress1/strings/norn-simp-rew-sat.smt2 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'test/regress/regress1/strings/norn-simp-rew-sat.smt2') diff --git a/test/regress/regress1/strings/norn-simp-rew-sat.smt2 b/test/regress/regress1/strings/norn-simp-rew-sat.smt2 index 1336d3bfc..f7cad1c09 100644 --- a/test/regress/regress1/strings/norn-simp-rew-sat.smt2 +++ b/test/regress/regress1/strings/norn-simp-rew-sat.smt2 @@ -1,4 +1,4 @@ -(set-info :smt-lib-version 2.5) +(set-info :smt-lib-version 2.6) (set-logic QF_SLIA) (set-option :strings-exp true) (set-info :status sat) @@ -17,10 +17,10 @@ (declare-fun var_11 () String) (declare-fun var_12 () String) -(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to.re "z") (str.to.re "a")) (re.++ (str.to.re "b") (re.++ (re.* (str.to.re "b")) (re.union (str.to.re "z") (str.to.re "a")))))) (re.++ (str.to.re "b") (re.* (str.to.re "b")))))) -(assert (str.in.re var_4 (re.* (re.range "a" "u")))) -(assert (str.in.re var_4 (re.* (str.to.re "b")))) -(assert (str.in.re var_3 (re.* (re.range "a" "u")))) -(assert (str.in.re var_3 (re.* (str.to.re "a")))) +(assert (str.in_re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to_re "z") (str.to_re "a")) (re.++ (str.to_re "b") (re.++ (re.* (str.to_re "b")) (re.union (str.to_re "z") (str.to_re "a")))))) (re.++ (str.to_re "b") (re.* (str.to_re "b")))))) +(assert (str.in_re var_4 (re.* (re.range "a" "u")))) +(assert (str.in_re var_4 (re.* (str.to_re "b")))) +(assert (str.in_re var_3 (re.* (re.range "a" "u")))) +(assert (str.in_re var_3 (re.* (str.to_re "a")))) (assert (<= 0 (str.len var_4))) (check-sat) -- cgit v1.2.3