diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2019-11-27 11:03:49 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-27 11:03:49 -0600 |
commit | bd2793a68e021ab58ab07db0cac67cf3d6806ead (patch) | |
tree | 59afd1b02de907ad1eb2c7ce78ac84e2ae0cde36 | |
parent | 89e00fbfffdbf3f7acde46623bf7a54f455614b5 (diff) |
Fix indexof range lemma (#3499)
-rw-r--r-- | src/theory/strings/theory_strings.cpp | 4 | ||||
-rw-r--r-- | test/regress/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/regress/regress0/strings/issue3497.smt2 | 9 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp index 9fad39b6b..7d10cbadc 100644 --- a/src/theory/strings/theory_strings.cpp +++ b/src/theory/strings/theory_strings.cpp @@ -4112,7 +4112,9 @@ void TheoryStrings::registerTerm( Node n, int effort ) { Node len = utils::mkNLength(n[0]); Node lem = nm->mkNode(AND, nm->mkNode(GEQ, n, nm->mkConst(Rational(-1))), - nm->mkNode(LT, n, len)); + nm->mkNode(LEQ, n, len)); + Trace("strings-lemma") << "Strings::Lemma IDOF range : " << lem + << std::endl; d_out->lemma(lem); } } diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt index 71ea1badd..fda31cfdb 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/issue3497.smt2 regress0/strings/itos-entail.smt2 regress0/strings/leadingzero001.smt2 regress0/strings/loop001.smt2 diff --git a/test/regress/regress0/strings/issue3497.smt2 b/test/regress/regress0/strings/issue3497.smt2 new file mode 100644 index 000000000..c804de820 --- /dev/null +++ b/test/regress/regress0/strings/issue3497.smt2 @@ -0,0 +1,9 @@ +(set-info :smt-lib-version 2.5) +(set-logic QF_SLIA) +(set-info :status sat) +(set-option :strings-exp true) +(declare-fun x () String) +(declare-fun y () String) +(assert (= (str.indexof x y 1) (str.len x))) +(assert (str.contains x y)) +(check-sat) |