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.
finishwith --decision=justification-stoponly --no-arrays-eager-index --arrays-eager-lemmas
;;
QF_S|QF_SLIA)
- trywith 300 --strings-exp --rewrite-divk --lang=smt2.6.1 --strings-fmf
- finishwith --strings-exp --rewrite-divk --lang=smt2.6.1
+ trywith 300 --strings-exp --rewrite-divk --strings-fmf
+ finishwith --strings-exp --rewrite-divk
;;
QF_ABVFP)
finishwith --fp-exp
finishwith --decision=justification-stoponly --no-arrays-eager-index --arrays-eager-lemmas
;;
QF_S|QF_SLIA)
- finishwith --strings-exp --rewrite-divk --lang=smt2.6.1
+ finishwith --strings-exp --rewrite-divk
;;
QF_ABVFP)
finishwith --fp-exp
"'notes', 'smt-lib-version' or 'status'";
CVC4_API_ARG_CHECK_EXPECTED(keyword != "smt-lib-version" || value == "2"
|| value == "2.0" || value == "2.5"
- || value == "2.6" || value == "2.6.1",
+ || value == "2.6",
value)
- << "'2.0', '2.5', '2.6' or '2.6.1'";
+ << "'2.0', '2.5', '2.6'";
CVC4_API_ARG_CHECK_EXPECTED(keyword != "status" || value == "sat"
|| value == "unsat" || value == "unknown",
value)
/** define the end points of smt2 languages */
namespace input {
-Language LANG_SMTLIB_V2_END = LANG_SMTLIB_V2_6_1;
+Language LANG_SMTLIB_V2_END = LANG_SMTLIB_V2_6;
}
namespace output {
-Language LANG_SMTLIB_V2_END = LANG_SMTLIB_V2_6_1;
+Language LANG_SMTLIB_V2_END = LANG_SMTLIB_V2_6;
}
bool isInputLang_smt2(InputLanguage lang)
case output::LANG_SMTLIB_V2_0:
case output::LANG_SMTLIB_V2_5:
case output::LANG_SMTLIB_V2_6:
- case output::LANG_SMTLIB_V2_6_1:
case output::LANG_TPTP:
case output::LANG_CVC4:
case output::LANG_Z3STR:
case input::LANG_SMTLIB_V2_0:
case input::LANG_SMTLIB_V2_5:
case input::LANG_SMTLIB_V2_6:
- case input::LANG_SMTLIB_V2_6_1:
case input::LANG_TPTP:
case input::LANG_CVC4:
case input::LANG_Z3STR:
|| language == "LANG_SMTLIB_V2")
{
return output::LANG_SMTLIB_V2_6;
- }
- else if (language == "smtlib2.6.1" || language == "smt2.6.1"
- || language == "LANG_SMTLIB_V2_6_1")
- {
- return output::LANG_SMTLIB_V2_6_1;
} else if(language == "tptp" || language == "LANG_TPTP") {
return output::LANG_TPTP;
} else if(language == "z3str" || language == "z3-str" ||
language == "smtlib2.6" || language == "smt2.6" ||
language == "LANG_SMTLIB_V2_6" || language == "LANG_SMTLIB_V2") {
return input::LANG_SMTLIB_V2_6;
- }
- else if (language == "smtlib2.6.1" || language == "smt2.6.1"
- || language == "LANG_SMTLIB_V2_6_1")
- {
- return input::LANG_SMTLIB_V2_6_1;
} else if(language == "tptp" || language == "LANG_TPTP") {
return input::LANG_TPTP;
} else if(language == "z3str" || language == "z3-str" ||
LANG_SMTLIB_V2_0 = 0,
/** The SMTLIB v2.5 input language */
LANG_SMTLIB_V2_5,
- /** The SMTLIB v2.6 input language */
+ /** The SMTLIB v2.6 input language, with support for the strings standard */
LANG_SMTLIB_V2_6,
/** Backward-compatibility for enumeration naming */
LANG_SMTLIB_V2 = LANG_SMTLIB_V2_6,
- /** The SMTLIB v2.6 input language, with support for the strings standard */
- LANG_SMTLIB_V2_6_1,
/** The TPTP input language */
LANG_TPTP,
/** The CVC4 input language */
case LANG_SMTLIB_V2_6:
out << "LANG_SMTLIB_V2_6";
break;
- case LANG_SMTLIB_V2_6_1: out << "LANG_SMTLIB_V2_6_1"; break;
case LANG_TPTP:
out << "LANG_TPTP";
break;
LANG_SMTLIB_V2_0 = input::LANG_SMTLIB_V2_0,
/** The SMTLIB v2.5 output language */
LANG_SMTLIB_V2_5 = input::LANG_SMTLIB_V2_5,
- /** The SMTLIB v2.6 output language */
+ /** The SMTLIB v2.6 output language, with support for the strings standard */
LANG_SMTLIB_V2_6 = input::LANG_SMTLIB_V2_6,
/** Backward-compatibility for enumeration naming */
LANG_SMTLIB_V2 = input::LANG_SMTLIB_V2,
- /** The SMTLIB v2.6 output language */
- LANG_SMTLIB_V2_6_1 = input::LANG_SMTLIB_V2_6_1,
/** The TPTP output language */
LANG_TPTP = input::LANG_TPTP,
/** The CVC4 output language */
out << "LANG_SMTLIB_V2_5";
break;
case LANG_SMTLIB_V2_6: out << "LANG_SMTLIB_V2_6"; break;
- case LANG_SMTLIB_V2_6_1: out << "LANG_SMTLIB_V2_6_1"; break;
case LANG_TPTP:
out << "LANG_TPTP";
break;
%rename(INPUT_LANG_SMTLIB_V2_0) CVC4::language::input::LANG_SMTLIB_V2_0;
%rename(INPUT_LANG_SMTLIB_V2_5) CVC4::language::input::LANG_SMTLIB_V2_5;
%rename(INPUT_LANG_SMTLIB_V2_6) CVC4::language::input::LANG_SMTLIB_V2_6;
-%rename(INPUT_LANG_SMTLIB_V2_6_1) CVC4::language::input::LANG_SMTLIB_V2_6_1;
%rename(INPUT_LANG_TPTP) CVC4::language::input::LANG_TPTP;
%rename(INPUT_LANG_CVC4) CVC4::language::input::LANG_CVC4;
%rename(INPUT_LANG_MAX) CVC4::language::input::LANG_MAX;
%rename(OUTPUT_LANG_SMTLIB_V2_0) CVC4::language::output::LANG_SMTLIB_V2_0;
%rename(OUTPUT_LANG_SMTLIB_V2_5) CVC4::language::output::LANG_SMTLIB_V2_5;
%rename(OUTPUT_LANG_SMTLIB_V2_6) CVC4::language::output::LANG_SMTLIB_V2_6;
-%rename(OUTPUT_LANG_SMTLIB_V2_6_1) CVC4::language::output::LANG_SMTLIB_V2_6_1;
%rename(OUTPUT_LANG_TPTP) CVC4::language::output::LANG_TPTP;
%rename(OUTPUT_LANG_CVC4) CVC4::language::output::LANG_CVC4;
%rename(OUTPUT_LANG_AST) CVC4::language::output::LANG_AST;
smt | smtlib | smt2 |\n\
smt2.0 | smtlib2 | smtlib2.0 SMT-LIB format 2.0\n\
smt2.5 | smtlib2.5 SMT-LIB format 2.5\n\
- smt2.6 | smtlib2.6 SMT-LIB format 2.6\n\
- smt2.6.1 | smtlib2.6.1 SMT-LIB format 2.6 with support for the strings standard\n\
+ smt2.6 | smtlib2.6 SMT-LIB format 2.6 with support for the strings standard\n\
tptp TPTP format (cnf, fof and tff)\n\
sygus | sygus2 SyGuS version 1.0 and 2.0 formats\n\
\n\
smt | smtlib | smt2 |\n\
smt2.0 | smtlib2.0 | smtlib2 SMT-LIB format 2.0\n\
smt2.5 | smtlib2.5 SMT-LIB format 2.5\n\
- smt2.6 | smtlib2.6 SMT-LIB format 2.6\n\
- smt2.6.1 | smtlib2.6.1 SMT-LIB format 2.6 with support for the strings standard\n\
+ smt2.6 | smtlib2.6 SMT-LIB format 2.6 with support for the strings standard\n\
tptp TPTP format\n\
z3str SMT-LIB 2.0 with Z3-str string constraints\n\
ast internal format (simple syntax trees)\n\
Expr Parser::mkStringConstant(const std::string& s)
{
ExprManager* em = d_solver->getExprManager();
- if (em->getOptions().getInputLanguage()
- == language::input::LANG_SMTLIB_V2_6_1)
+ if (language::isInputLang_smt2_6(em->getOptions().getInputLanguage()))
{
return d_solver->mkString(s, true).getExpr();
}
*
* This makes the string constant based on the string s. This may involve
* processing ad-hoc escape sequences (if the language is not
- * SMT-LIB 2.6.1 or higher), or otherwise calling the solver to construct
+ * SMT-LIB 2.6 or higher), or otherwise calling the solver to construct
* the string.
*/
Expr mkStringConstant(const std::string& s);
addOperator(api::STRING_SUFFIX, "str.suffixof");
addOperator(api::STRING_FROM_CODE, "str.from_code");
addOperator(api::STRING_IS_DIGIT, "str.is_digit");
- // at the moment, we only use this syntax for smt2.6.1
- if (getLanguage() == language::input::LANG_SMTLIB_V2_6_1
+ // at the moment, we only use this syntax for smt2.6
+ if (getLanguage() == language::input::LANG_SMTLIB_V2_6
|| getLanguage() == language::input::LANG_SYGUS_V2)
{
addOperator(api::STRING_ITOS, "str.from_int");
defineType("RegLan", d_solver->getRegExpSort());
defineType("Int", d_solver->getIntegerSort());
- if (getLanguage() == language::input::LANG_SMTLIB_V2_6_1
+ if (getLanguage() == language::input::LANG_SMTLIB_V2_6
|| getLanguage() == language::input::LANG_SYGUS_V2)
{
defineVar("re.none", d_solver->mkRegexpEmpty());
return unique_ptr<Printer>(
new printer::smt2::Smt2Printer(printer::smt2::smt2_6_variant));
- case LANG_SMTLIB_V2_6_1:
- return unique_ptr<Printer>(
- new printer::smt2::Smt2Printer(printer::smt2::smt2_6_1_variant));
-
case LANG_TPTP:
return unique_ptr<Printer>(new printer::tptp::TptpPrinter());
// sygus version 2.0 does not have discrepancies with smt2, hence we use
// a normal smt2 variant here.
return unique_ptr<Printer>(
- new printer::smt2::Smt2Printer(printer::smt2::smt2_6_1_variant));
+ new printer::smt2::Smt2Printer(printer::smt2::smt2_6_variant));
case LANG_AST:
return unique_ptr<Printer>(new printer::ast::AstPrinter());
static string smtKindString(Kind k, Variant v);
/** returns whether the variant is smt-lib 2.6 or greater */
-bool isVariant_2_6(Variant v)
-{
- return v == smt2_6_variant || v == smt2_6_1_variant;
-}
+bool isVariant_2_6(Variant v) { return v == smt2_6_variant; }
static void toStreamRational(std::ostream& out,
const Rational& r,
case kind::STRING_CHARAT: return "str.at" ;
case kind::STRING_STRIDOF: return "str.indexof" ;
case kind::STRING_STRREPL: return "str.replace" ;
- case kind::STRING_STRREPLALL:
- return v == smt2_6_1_variant ? "str.replace_all" : "str.replaceall";
+ case kind::STRING_STRREPLALL: return "str.replace_all";
case kind::STRING_TOLOWER: return "str.tolower";
case kind::STRING_TOUPPER: return "str.toupper";
case kind::STRING_REV: return "str.rev";
case kind::STRING_LEQ: return "str.<=";
case kind::STRING_LT: return "str.<";
case kind::STRING_FROM_CODE: return "str.from_code";
- case kind::STRING_TO_CODE:
- return v == smt2_6_1_variant ? "str.to_code" : "str.code";
- case kind::STRING_ITOS:
- return v == smt2_6_1_variant ? "str.from_int" : "int.to.str";
- case kind::STRING_STOI:
- return v == smt2_6_1_variant ? "str.to_int" : "str.to.int";
- case kind::STRING_IN_REGEXP:
- return v == smt2_6_1_variant ? "str.in_re" : "str.in.re";
- case kind::STRING_TO_REGEXP:
- return v == smt2_6_1_variant ? "str.to_re" : "str.to.re";
+ case kind::STRING_TO_CODE: return "str.to_code";
+ case kind::STRING_ITOS: return "str.from_int";
+ case kind::STRING_STOI: return "str.to_int";
+ case kind::STRING_IN_REGEXP: return "str.in_re";
+ case kind::STRING_TO_REGEXP: return "str.to_re";
case kind::REGEXP_EMPTY: return "re.nostr";
case kind::REGEXP_SIGMA: return "re.allchar";
case kind::REGEXP_CONCAT: return "re.++";
enum Variant
{
no_variant,
- smt2_0_variant, // old-style 2.0 syntax, when it makes a difference
- smt2_6_variant, // new-style 2.6 syntax, when it makes a difference
- smt2_6_1_variant, // new-style 2.6 syntax, when it makes a difference, with
- // support for the string standard
- z3str_variant, // old-style 2.0 and also z3str syntax
- sygus_variant // variant for sygus
-}; /* enum Variant */
+ smt2_0_variant, // old-style 2.0 syntax, when it makes a difference
+ smt2_6_variant, // new-style 2.6 syntax, when it makes a difference, with
+ // support for the string standard
+ z3str_variant, // old-style 2.0 and also z3str syntax
+ sygus_variant // variant for sygus
+}; /* enum Variant */
class Smt2Printer : public CVC4::Printer {
public:
Smt2Printer(Variant variant = no_variant) : d_variant(variant) { }
value.getValue() == "2.6" ) {
ilang = language::input::LANG_SMTLIB_V2_6;
}
- else if (value.getValue() == "2.6.1")
- {
- ilang = language::input::LANG_SMTLIB_V2_6_1;
- }
else
{
Warning() << "Warning: unsupported smt-lib-version: " << value << endl;
; Check that the language set in the command line options has higher priority
; than the language specified in the input file.
;
-; COMMAND-LINE: --lang=smt2.6.1
-; EXPECT: "LANG_SMTLIB_V2_6_1"
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: "LANG_SMTLIB_V2_6"
(set-info :smt-lib-version 2.6)
(get-option :input-language)
(set-logic SLIA)
(declare-fun a () String)
(assert (>= (str.len a) 2))
-(assert (str.in.re a (re.+ (re.range "0" "1"))))
-(assert (<= 3 (str.to.int (str.substr a (+ (- 2) (str.len a)) 1))))
+(assert (str.in_re a (re.+ (re.range "0" "1"))))
+(assert (<= 3 (str.to_int (str.substr a (+ (- 2) (str.len a)) 1))))
(set-info :status unsat)
(check-sat)
+(set-info :smt-lib-version 2.5)
(set-logic QF_S)
(set-info :status sat)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: sat
(set-logic SLIA)
(set-info :status sat)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: sat
(set-logic ALL)
(set-info :status sat)
; COMMAND-LINE: --strings-exp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(declare-const x0 String)
(declare-const x1 String)
(declare-const y8 Int)
(declare-const y9 Int)
(declare-const y10 Int)
-(assert (and (= y0 (str.code x0)) (>= y0 (str.code "0")) (<= y0 (str.code "9"))))
-(assert (and (= y1 (str.code x1)) (>= y1 (str.code "0")) (<= y1 (str.code "9"))))
-(assert (and (= y2 (str.code x2)) (>= y2 (str.code "0")) (<= y2 (str.code "9"))))
-(assert (and (= y3 (str.code x3)) (>= y3 (str.code "0")) (<= y3 (str.code "9"))))
-(assert (and (= y4 (str.code x4)) (>= y4 (str.code "0")) (<= y4 (str.code "9"))))
-(assert (and (= y5 (str.code x5)) (>= y5 (str.code "0")) (<= y5 (str.code "9"))))
-(assert (and (= y6 (str.code x6)) (>= y6 (str.code "0")) (<= y6 (str.code "9"))))
-(assert (and (= y7 (str.code x7)) (>= y7 (str.code "0")) (<= y7 (str.code "9"))))
-(assert (and (= y8 (str.code x8)) (>= y8 (str.code "0")) (<= y8 (str.code "9"))))
-(assert (and (= y9 (str.code x9)) (>= y9 (str.code "0")) (<= y9 (str.code "9"))))
-(assert (and (= y10 (str.code x10)) (>= y10 (str.code "0")) (<= y10 (str.code "9"))))
+(assert (and (= y0 (str.to_code x0)) (>= y0 (str.to_code "0")) (<= y0 (str.to_code "9"))))
+(assert (and (= y1 (str.to_code x1)) (>= y1 (str.to_code "0")) (<= y1 (str.to_code "9"))))
+(assert (and (= y2 (str.to_code x2)) (>= y2 (str.to_code "0")) (<= y2 (str.to_code "9"))))
+(assert (and (= y3 (str.to_code x3)) (>= y3 (str.to_code "0")) (<= y3 (str.to_code "9"))))
+(assert (and (= y4 (str.to_code x4)) (>= y4 (str.to_code "0")) (<= y4 (str.to_code "9"))))
+(assert (and (= y5 (str.to_code x5)) (>= y5 (str.to_code "0")) (<= y5 (str.to_code "9"))))
+(assert (and (= y6 (str.to_code x6)) (>= y6 (str.to_code "0")) (<= y6 (str.to_code "9"))))
+(assert (and (= y7 (str.to_code x7)) (>= y7 (str.to_code "0")) (<= y7 (str.to_code "9"))))
+(assert (and (= y8 (str.to_code x8)) (>= y8 (str.to_code "0")) (<= y8 (str.to_code "9"))))
+(assert (and (= y9 (str.to_code x9)) (>= y9 (str.to_code "0")) (<= y9 (str.to_code "9"))))
+(assert (and (= y10 (str.to_code x10)) (>= y10 (str.to_code "0")) (<= y10 (str.to_code "9"))))
(assert (= (str.len x0) 1))
(assert (= (str.len x1) 1))
(assert (= (str.len x2) 1))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(declare-fun x () String)
(declare-fun y () String)
(assert (not (= x y)))
-(assert (= (str.code x) (str.code y)))
+(assert (= (str.to_code x) (str.to_code y)))
(check-sat)
(set-logic SLIA)
(set-info :status sat)
(declare-fun x () String)
-(assert (str.in.re x (re.comp (str.to.re "ABC"))))
+(assert (str.in_re x (re.comp (str.to_re "ABC"))))
(check-sat)
(set-logic QF_S)
(set-info :status sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(declare-fun x () String)
(declare-const I Int)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: unsat
; EXPECT: unsat
; EXPECT: sat
-; COMMAND-LINE: --produce-models --lang=smt2.6.1
+; COMMAND-LINE: --produce-models --lang=smt2.6
; EXPECT: sat
; EXPECT: ((x "\u{5c}u1000"))
(set-logic ALL)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: sat
(set-logic ALL)
(set-info :status sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL_SUPPORTED)
(set-info :status unsat)
(set-option :strings-exp true)
(declare-const x Int)
-(assert (str.contains (str.++ "some text" (int.to.str x) "tor") "vector"))
+(assert (str.contains (str.++ "some text" (str.from_int x) "tor") "vector"))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status unsat)
(declare-const x String)
(assert (not (str.prefixof "ab" x)))
-(assert (str.in.re (str.substr x 0 2) (re.++ (str.to.re "ab") (re.* (str.to.re "dcab")))))
+(assert (str.in_re (str.substr x 0 2) (re.++ (str.to_re "ab") (re.* (str.to_re "dcab")))))
(check-sat)
; COMMAND-LINE: --no-strings-lazy-pp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(declare-fun a () String)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(set-option :strings-exp true)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(assert (not (str.< "\xe8" "\x19")))
(set-logic QF_S)
(declare-fun a () String)
(declare-fun b () String)
-(assert (str.in.re a (re.++ (str.to.re b) (re.* re.allchar))))
+(assert (str.in_re a (re.++ (str.to_re b) (re.* re.allchar))))
(check-sat)
(declare-const Str11 String)
(declare-const Str15 String)
(assert (= (str.++ Str1 "ijruldtzyp") Str15))
-(assert (= (str.++ (str.++ Str1 "ijruldtzyp") Str11 (int.to.str i0)) Str15 Str9))
+(assert (= (str.++ (str.++ Str1 "ijruldtzyp") Str11 (str.from_int i0)) Str15 Str9))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun y () String)
(declare-fun z () String)
-(assert (str.contains "ABCD" (str.++ y (int.to.str x) z)))
+(assert (str.contains "ABCD" (str.++ y (str.from_int x) z)))
(check-sat)
-; COMMAND-LINE: --lang=smt2.6.1 --check-models
+; COMMAND-LINE: --lang=smt2.6 --check-models
; EXPECT: (error "Cannot generate model with string whose length exceeds UINT32_MAX")
; EXIT: 1
(set-logic SLIA)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-option :strings-exp true)
(set-info :status sat)
(declare-fun Y () String)
(assert (= Y "0001"))
-;(assert (= (str.to.int Y) (- 1)))
-(assert (= (str.to.int Y) 1))
+;(assert (= (str.to_int Y) (- 1)))
+(assert (= (str.to_int Y) 1))
(check-sat)
(set-logic ALL)
(set-info :status unsat)
-(assert (str.in.re "" ((_ re.loop 1 0) (str.to.re ""))))
+(assert (str.in_re "" ((_ re.loop 1 0) (str.to_re ""))))
(check-sat)
-; COMMAND-LINE: --lang=smt2.6.1 --produce-models
+; COMMAND-LINE: --lang=smt2.6 --produce-models
; EXPECT: sat
; EXPECT: ((x "\u{a}"))
; EXPECT: ((y "\u{7f}"))
-; COMMAND-LINE: --lang=smt2.6.1 --produce-models
+; COMMAND-LINE: --lang=smt2.6 --produce-models
; EXPECT: sat
; EXPECT: ((x "AAAAA"))
(set-logic ALL)
-(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 unsat)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re var_1 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_1 (re.++ (re.* (str.to.re "a")) (str.to.re "b"))))
-(assert (str.in.re var_1 (re.++ (re.++ (re.++ (re.* (re.union (str.to.re "a") (str.to.re "b"))) (str.to.re "b")) (str.to.re "a")) (re.* (re.union (str.to.re "a") (str.to.re "b"))))))
-(assert (not (str.in.re "" re.nostr)))
+(assert (str.in_re var_1 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_1 (re.++ (re.* (str.to_re "a")) (str.to_re "b"))))
+(assert (str.in_re var_1 (re.++ (re.++ (re.++ (re.* (re.union (str.to_re "a") (str.to_re "b"))) (str.to_re "b")) (str.to_re "a")) (re.* (re.union (str.to_re "a") (str.to_re "b"))))))
+(assert (not (str.in_re "" re.none)))
(check-sat)
-(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 unsat)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re (str.++ var_7 "z" var_8 ) (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 (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "b") (str.to.re "a"))) (str.to.re "z"))))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "b") (str.to.re "a")))))))
-(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "z") (str.to.re "b"))) (str.to.re "a")))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "z") (str.to.re "b")))))))
-(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to.re "z") (re.++ (re.union (str.to.re "b") (str.to.re "a")) (re.union (str.to.re "z") (str.to.re "b"))))) (re.union (str.to.re "b") (str.to.re "a")))))
-(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.* (re.++ (str.to.re "b") (re.++ (re.* (str.to.re "z")) (str.to.re "b"))))))
-(assert (str.in.re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to.re "b") (str.to.re "z"))) (str.to.re "b"))))
-(assert (str.in.re (str.++ "a" var_8 ) (re.* (re.range "a" "u"))))
-(assert (str.in.re var_8 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_7 (re.* (re.range "a" "u"))))
-(assert (not (str.in.re (str.++ "b" var_7 ) (re.* (re.range "a" "u")))))
+(assert (str.in_re (str.++ var_7 "z" var_8 ) (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 (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "b") (str.to_re "a"))) (str.to_re "z"))))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "b") (str.to_re "a")))))))
+(assert (str.in_re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "z") (str.to_re "b"))) (str.to_re "a")))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "z") (str.to_re "b")))))))
+(assert (str.in_re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.union (str.to_re "z") (re.++ (re.union (str.to_re "b") (str.to_re "a")) (re.union (str.to_re "z") (str.to_re "b"))))) (re.union (str.to_re "b") (str.to_re "a")))))
+(assert (str.in_re (str.++ var_7 "z" var_8 ) (re.* (re.++ (str.to_re "b") (re.++ (re.* (str.to_re "z")) (str.to_re "b"))))))
+(assert (str.in_re (str.++ var_7 "z" var_8 ) (re.++ (re.* (re.++ (str.to_re "b") (str.to_re "z"))) (str.to_re "b"))))
+(assert (str.in_re (str.++ "a" var_8 ) (re.* (re.range "a" "u"))))
+(assert (str.in_re var_8 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_7 (re.* (re.range "a" "u"))))
+(assert (not (str.in_re (str.++ "b" var_7 ) (re.* (re.range "a" "u")))))
(check-sat)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: unsat
(set-logic ALL)
(set-info :status unsat)
(set-logic QF_SLIA)
(set-info :status unsat)
(declare-const x String)
-(assert (str.in.re x (re.++ (str.to.re "abc") re.all)))
+(assert (str.in_re x (re.++ (str.to_re "abc") re.all)))
(assert (not (str.prefixof "abc" x)))
(check-sat)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: unsat
(set-logic ALL)
(set-info :status unsat)
(declare-const actionName String)
(assert
-(str.in.re actionName (re.++ (str.to.re "wiz") (re.* re.allchar) (str.to.re "foobar") (re.* re.allchar) (str.to.re "baz/") (re.* re.allchar))))
+(str.in_re actionName (re.++ (str.to_re "wiz") (re.* re.allchar) (str.to_re "foobar") (re.* re.allchar) (str.to_re "baz/") (re.* re.allchar))))
(assert (not
-(str.in.re actionName (re.++ (str.to.re "wiz") (re.* re.allchar) (re.++ (str.to.re "foo") re.allchar (str.to.re "ar")) (re.* re.allchar) (str.to.re "baz/") (re.* re.allchar)))
+(str.in_re actionName (re.++ (str.to_re "wiz") (re.* re.allchar) (re.++ (str.to_re "foo") re.allchar (str.to_re "ar")) (re.* re.allchar) (str.to_re "baz/") (re.* re.allchar)))
))
(check-sat)
(declare-const x String)
(declare-const y String)
-(assert (str.in.re x (re.++ (str.to.re "bar") (re.* re.allchar) (str.to.re "bar"))))
-(assert (str.in.re x (re.++ (str.to.re "ba") re.allchar (re.* re.allchar) (str.to.re "bar"))))
+(assert (str.in_re x (re.++ (str.to_re "bar") (re.* re.allchar) (str.to_re "bar"))))
+(assert (str.in_re x (re.++ (str.to_re "ba") re.allchar (re.* re.allchar) (str.to_re "bar"))))
-(assert (not (str.in.re y (re.++ (str.to.re "bar") (re.* re.allchar) (str.to.re "bar")))))
-(assert (not (str.in.re y (re.++ (str.to.re "ba") re.allchar (re.* re.allchar) (str.to.re "bar")))))
+(assert (not (str.in_re y (re.++ (str.to_re "bar") (re.* re.allchar) (str.to_re "bar")))))
+(assert (not (str.in_re y (re.++ (str.to_re "ba") re.allchar (re.* re.allchar) (str.to_re "bar")))))
(assert (not (= y "")))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(declare-fun x () String)
-; COMMAND-LINE: --lang=smt2.6.1
+; COMMAND-LINE: --lang=smt2.6
; EXPECT: sat
(set-logic ALL)
(set-info :status sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic SLIA)
(set-info :status unsat)
(declare-fun x () String)
-(assert (str.in.re x (re.++ (str.to.re "baa") (re.* (str.to.re "a")) (re.* (str.to.re "c")))))
+(assert (str.in_re x (re.++ (str.to_re "baa") (re.* (str.to_re "a")) (re.* (str.to_re "c")))))
(declare-fun y () String)
(assert (< (str.len y) 2))
(assert (or
-(not (str.in.re x (re.++ (str.to.re "baa") (re.* (str.to.re "a")) (re.* (str.to.re "a")) (re.* (str.to.re "c")))))
-(not (str.in.re x (re.++ (str.to.re "ba") (str.to.re "") (re.* (str.to.re "a")) (str.to.re "a") (re.* (str.to.re "c")))))
-(not (str.in.re x (re.++ (str.to.re "b") (re.* (str.to.re "a")) (str.to.re "a") (re.* (str.to.re "a")) (str.to.re "a") (re.* (str.to.re "c")))))
+(not (str.in_re x (re.++ (str.to_re "baa") (re.* (str.to_re "a")) (re.* (str.to_re "a")) (re.* (str.to_re "c")))))
+(not (str.in_re x (re.++ (str.to_re "ba") (str.to_re "") (re.* (str.to_re "a")) (str.to_re "a") (re.* (str.to_re "c")))))
+(not (str.in_re x (re.++ (str.to_re "b") (re.* (str.to_re "a")) (str.to_re "a") (re.* (str.to_re "a")) (str.to_re "a") (re.* (str.to_re "c")))))
-(str.in.re y (re.++ re.allchar re.allchar (re.* re.allchar) re.allchar))
-(str.in.re y (re.++ re.allchar re.allchar re.allchar))
+(str.in_re y (re.++ re.allchar re.allchar (re.* re.allchar) re.allchar))
+(str.in_re y (re.++ re.allchar re.allchar re.allchar))
)
)
; COMMAND-LINE: --strings-exp
; EXPECT: unsat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic SLIA)
(set-info :status unsat)
(declare-fun x () String)
; these should all rewrite to false
(assert (or
-(str.contains "abcdef0ghij1abced" (str.++ "g" (int.to.str (str.len z)) x "a" y (int.to.str (+ (str.len z) 1))))
-(str.contains "abc23cd" (str.++ (int.to.str (str.len z)) (int.to.str (str.len z)) (int.to.str (str.len z))))
+(str.contains "abcdef0ghij1abced" (str.++ "g" (str.from_int (str.len z)) x "a" y (str.from_int (+ (str.len z) 1))))
+(str.contains "abc23cd" (str.++ (str.from_int (str.len z)) (str.from_int (str.len z)) (str.from_int (str.len z))))
(not (str.contains (str.++ x "ab" y) (str.++ "b" (str.substr y 0 4))))
(not (str.contains (str.++ x "ab" y) (str.++ (str.substr x 5 (str.len x)) "a")))
(str.contains (str.++ x y) (str.++ x "a" y))
-; COMMAND-LINE: --strings-exp --lang=smt2.6.1
+; COMMAND-LINE: --strings-exp --lang=smt2.6
; EXPECT: sat
(set-logic QF_UFSLIA)
(set-info :status sat)
-(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)
(declare-fun x () Int)
-(assert (str.contains "Ducati100" (int.to.str x)))
+(assert (str.contains "Ducati100" (str.from_int x)))
(check-sat)
; COMMAND-LINE: --strings-exp
; EXPECT: unsat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status unsat)
(declare-fun x () String)
(assert (or
(not (= (str.tolower (str.toupper (str.tolower x))) (str.tolower x)))
(not (= (str.tolower (str.++ x "A")) (str.++ (str.tolower x) "a")))
-(not (= (str.tolower (int.to.str y)) (int.to.str y)))
+(not (= (str.tolower (str.from_int y)) (str.from_int y)))
))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun z () String)
;big num test
-(assert (= x (int.to.str 4785582390527685649)))
+(assert (= x (str.from_int 4785582390527685649)))
;should be ""
-(assert (= y (int.to.str (- 9))))
+(assert (= y (str.from_int (- 9))))
;big num
-(assert (= i (str.to.int "783914785582390527685649")))
+(assert (= i (str.to_int "783914785582390527685649")))
;should be -1
-(assert (= j (str.to.int "-783914785582390527685649")))
+(assert (= j (str.to_int "-783914785582390527685649")))
(check-sat)
-; COMMAND-LINE: --strings-exp --lang=smt2.6.1
+; COMMAND-LINE: --strings-exp --lang=smt2.6
; EXPECT: sat
(set-logic ALL)
(define-fun $$isFalse$$ ((b Bool)) Bool (not b))
(define-fun $$toString$$ ((b Bool)) String (ite b "true" "false"))
(define-fun $$fromString$$ ((s String)) Bool (= s "true"))
-(define-fun $$inttostr$$ ((i Int)) String (ite (< i 0) (str.++ "-" (int.to.str (- i))) (int.to.str i)))
+(define-fun $$inttostr$$ ((i Int)) String (ite (< i 0) (str.++ "-" (str.from_int (- i))) (str.from_int i)))
(declare-fun $$takeWhile$$ (String String) String)
(declare-fun $$takeWhileNot$$ (String String) String)
(declare-fun $$dropWhile$$ (String String) String)
-(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 unsat)
)
)
-(assert (= (<= (str.to.int Y) 31) false))
+(assert (= (<= (str.to_int Y) 31) false))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-option :strings-exp true)
(set-info :status sat)
(assert (str.contains joined "<script>alert(1);</script>"))
; (<script>[^<]*</script>)+
-(assert (str.in.re joined
+(assert (str.in_re joined
(re.+ (re.++
- (str.to.re "<script>")
+ (str.to_re "<script>")
(re.*
(re.union
(re.range " " ";")
(re.range "=" "~")
)
)
- (str.to.re "</script>")
+ (str.to_re "</script>")
))
))
; COMMAND-LINE: --incremental --strings-exp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(assert (= (str.at u 8) "6"))
(push 1)
-(assert (str.in.re s (re.range "0" "3")))
+(assert (str.in_re s (re.range "0" "3")))
(check-sat)
(declare-fun x () String)
(assert (forall ((n Int)) (=> (and (<= 0 n) (< n (str.len x)))
(and
-(<= 60 (str.code (str.at x n)))
-(<= (str.code (str.at x n)) 90)
-(< (+ 1 (str.code (str.at x (- n 1)))) (str.code (str.at x n)))
+(<= 60 (str.to_code (str.at x n)))
+(<= (str.to_code (str.at x n)) 90)
+(< (+ 1 (str.to_code (str.at x (- n 1)))) (str.to_code (str.at x n)))
))))
(assert (> (str.len x) 3))
(check-sat)
(declare-fun z () String)
(assert (= x (str.++ "AB" y)))
(assert (or (= y "C") (= y (str.++ "D" z)) (= (str.len y) 10)))
-(assert (str.in.re x
+(assert (str.in_re x
(re.inter
- (re.comp (str.to.re "AB"))
- (re.comp (re.++ (str.to.re "AB") (re.range "A" "E") (re.* re.allchar))))))
+ (re.comp (str.to_re "AB"))
+ (re.comp (re.++ (str.to_re "AB") (re.range "A" "E") (re.* re.allchar))))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-option :strings-exp true)
(set-option :strings-fmf true)
(declare-fun x () String)
(declare-fun y () String)
-(assert (str.in.re x
- (re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+(assert (str.in_re x
+ (re.* (re.++ (re.* (str.to_re "a") ) (str.to_re "b") ))
))
-(assert (str.in.re y
- (re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+(assert (str.in_re y
+ (re.* (re.++ (re.* (str.to_re "a") ) (str.to_re "b") ))
))
(assert (not (= x y)))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-option :strings-exp true)
(set-option :strings-fmf true)
(declare-fun y () String)
(declare-fun z () String)
-(assert (str.in.re x
+(assert (str.in_re x
(re.+ (re.range "a" "c"))
))
(declare-const s String)
(assert (str.in.re s (re.* (re.range "\x00" "\xFF"))))
(assert (str.in.re s (re.range "\x00" "\xFF")))
-(check-sat)
\ No newline at end of file
+(check-sat)
(declare-const action String)
(declare-const example_key String)
-(assert (str.in.re action (re.++
- (str.to.re "foobar:ab")
+(assert (str.in_re action (re.++
+ (str.to_re "foobar:ab")
(re.* re.allchar)
)))
(set-option :produce-models true)
(set-info :status sat)
-(define-fun byte_2_int ((s String)) Int (ite (= (str.len s) 1) (str.code s) 256))
+(define-fun byte_2_int ((s String)) Int (ite (= (str.len s) 1) (str.to_code s) 256))
(define-fun read_buffer16 ((s1 String) (s2 String)) Int
(+ (* 256 (byte_2_int s1))
(declare-const y String)
(declare-const m String)
(declare-const n String)
-(assert (str.in.re x (re.+ (re.range "0" "9"))))
-(assert (= 0 (str.to.int x)))
+(assert (str.in_re x (re.+ (re.range "0" "9"))))
+(assert (= 0 (str.to_int x)))
(assert (not (= x "")))
(assert (not (= x "0")))
(assert (not (= x "3")))
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re (str.++ var_7 "z" var_7 ) (re.* (str.to.re "z"))))
-(assert (str.in.re var_7 (re.* (re.range "a" "u"))))
-(assert (not (str.in.re (str.++ "a" var_7 "z" "a" var_7 ) (re.++ (re.* (re.union (str.to.re "z") (re.++ (str.to.re "a") (re.++ (re.* (str.to.re "a")) (str.to.re "z"))))) (re.++ (str.to.re "a") (re.* (str.to.re "a")))))))
+(assert (str.in_re (str.++ var_7 "z" var_7 ) (re.* (str.to_re "z"))))
+(assert (str.in_re var_7 (re.* (re.range "a" "u"))))
+(assert (not (str.in_re (str.++ "a" var_7 "z" "a" var_7 ) (re.++ (re.* (re.union (str.to_re "z") (re.++ (str.to_re "a") (re.++ (re.* (str.to_re "a")) (str.to_re "z"))))) (re.++ (str.to_re "a") (re.* (str.to_re "a")))))))
(assert (and (<= (str.len var_7) 0 ) (<= 0 (str.len var_7))))
(check-sat)
(set-option :strings-exp true)
(set-info :status unsat)
(declare-const id String)
-(assert (and (str.in.re id (re.+ (re.range "0" "9"))) (str.contains id "value")))
+(assert (and (str.in_re id (re.+ (re.range "0" "9"))) (str.contains id "value")))
(check-sat)
+(set-info :smt-lib-version 2.5)
(set-logic ALL_SUPPORTED)
(set-option :strings-exp true)
(set-info :status sat)
(and
(not (= (ite (= (str.at (str.substr c 1 (- (str.len (str.substr c 0 (- (str.len c) 1))) 1)) (- (str.len (str.substr (str.substr c 1 (- (str.len (str.replace a b "")) 1)) 0 (- (str.len (str.substr (str.replace a b "") 1 (- (str.len (str.replace a b "")) 1))) 1))) 1)) "\t") 1 0) 0))
- (= (ite (= (str.at (str.substr (str.substr c 1 (- (str.len (str.replace a b "")) 1)) 0 (- (str.len (str.substr (str.replace a b "") 1 (- (str.len (str.replace a b "")) 1))) 1)) 0) "\n") 1 0) 0)
+ (= (ite (= (str.at (str.substr (str.substr c 1 (- (str.len (str.replace a b "")) 1)) 0 (- (str.len (str.substr (str.replace a b "") 1 (- (str.len (str.replace a b "")) 1))) 1)) 0) "B") 1 0) 0)
)
(= (ite (= (str.at (str.substr (str.substr c 1 (- (str.len c) 1)) 0 (- (str.len (str.substr (str.replace a b "") 1 (- (str.len (str.replace a b "")) 1))) 1)) 0) " ") 1 0) 0)
(declare-const e String)
(declare-const f String)
(assert (or
- (and (= d (str.++ e g)) (str.in.re e (re.* (str.to.re "HG4"))) (> 0 (str.to.int g)) (= 1 (str.len e)) (= 2 (str.len (str.substr b 0 (str.len d)))))
+ (and (= d (str.++ e g)) (str.in_re e (re.* (str.to_re "HG4"))) (> 0 (str.to_int g)) (= 1 (str.len e)) (= 2 (str.len (str.substr b 0 (str.len d)))))
(and
- (str.in.re (str.replace (str.replace a c "") "T" "") (re.* (re.union (str.to.re "a") (str.to.re ""))))
- (= 0 (str.to.int (str.replace (str.replace a c "") "T" "")))))
+ (str.in_re (str.replace (str.replace a c "") "T" "") (re.* (re.union (str.to_re "a") (str.to_re ""))))
+ (= 0 (str.to_int (str.replace (str.replace a c "") "T" "")))))
)
(assert (= b (str.++ d f)))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(assert (= T_SELECT_1 (not (= PCTEMP_LHS_1 (- 1)))))
(assert (ite T_SELECT_1
- (and (= PCTEMP_LHS_1 (+ I0_2 0))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= I0_2 (str.len T4_2))(= 0 (str.len T0_2))(= T1_2 (str.++ T2_2 T3_2))(= T2_2 (str.++ T4_2 T5_2))(= T5_2 "__utma=169413169.")(not (str.in.re T4_2 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "a") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re ".")))))
- (and (= PCTEMP_LHS_1 (- 1))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= 0 (str.len T0_2))(not (str.in.re T1_2 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "a") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re ".")))))))
+ (and (= PCTEMP_LHS_1 (+ I0_2 0))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= I0_2 (str.len T4_2))(= 0 (str.len T0_2))(= T1_2 (str.++ T2_2 T3_2))(= T2_2 (str.++ T4_2 T5_2))(= T5_2 "__utma=169413169.")(not (str.in_re T4_2 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "a") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re ".")))))
+ (and (= PCTEMP_LHS_1 (- 1))(= var_0xINPUT_12454 (str.++ T0_2 T1_2))(= 0 (str.len T0_2))(not (str.in_re T1_2 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "a") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re ".")))))))
(assert (= T_SELECT_2 (not (= PCTEMP_LHS_2 (- 1)))))
(assert (ite T_SELECT_2
- (and (= PCTEMP_LHS_2 (+ I0_4 0))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= I0_4 (str.len T4_4))(= 0 (str.len T0_4))(= T1_4 (str.++ T2_4 T3_4))(= T2_4 (str.++ T4_4 T5_4))(= T5_4 "__utmb=169413169")(not (str.in.re T4_4 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))
- (and (= PCTEMP_LHS_2 (- 1))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= 0 (str.len T0_4))(not (str.in.re T1_4 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+ (and (= PCTEMP_LHS_2 (+ I0_4 0))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= I0_4 (str.len T4_4))(= 0 (str.len T0_4))(= T1_4 (str.++ T2_4 T3_4))(= T2_4 (str.++ T4_4 T5_4))(= T5_4 "__utmb=169413169")(not (str.in_re T4_4 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "b") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))
+ (and (= PCTEMP_LHS_2 (- 1))(= var_0xINPUT_12454 (str.++ T0_4 T1_4))(= 0 (str.len T0_4))(not (str.in_re T1_4 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "b") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))))
(assert (= T_SELECT_3 (not (= PCTEMP_LHS_3 (- 1)))))
(assert (ite T_SELECT_3
- (and (= PCTEMP_LHS_3 (+ I0_6 0))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= I0_6 (str.len T4_6))(= 0 (str.len T0_6))(= T1_6 (str.++ T2_6 T3_6))(= T2_6 (str.++ T4_6 T5_6))(= T5_6 "__utmc=169413169")(not (str.in.re T4_6 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "c") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))
- (and (= PCTEMP_LHS_3 (- 1))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= 0 (str.len T0_6))(not (str.in.re T1_6 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "c") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+ (and (= PCTEMP_LHS_3 (+ I0_6 0))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= I0_6 (str.len T4_6))(= 0 (str.len T0_6))(= T1_6 (str.++ T2_6 T3_6))(= T2_6 (str.++ T4_6 T5_6))(= T5_6 "__utmc=169413169")(not (str.in_re T4_6 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "c") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))
+ (and (= PCTEMP_LHS_3 (- 1))(= var_0xINPUT_12454 (str.++ T0_6 T1_6))(= 0 (str.len T0_6))(not (str.in_re T1_6 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "c") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))))
(assert (= T_4 (<= 0 PCTEMP_LHS_1)))
(assert T_4)
(assert (= T_5 (<= 0 PCTEMP_LHS_2)))
(assert T_a)
(assert (= T_SELECT_4 (not (= PCTEMP_LHS_4 (- 1)))))
(assert (ite T_SELECT_4
- (and (= PCTEMP_LHS_4 (+ I0_15 0))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= I0_15 (str.len T4_15))(= 0 (str.len T0_15))(= T1_15 (str.++ T2_15 T3_15))(= T2_15 (str.++ T4_15 T5_15))(= T5_15 "__utmb=169413169")(not (str.in.re T4_15 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))
- (and (= PCTEMP_LHS_4 (- 1))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= 0 (str.len T0_15))(not (str.in.re T1_15 (re.++ (str.to.re "_") (str.to.re "_") (str.to.re "u") (str.to.re "t") (str.to.re "m") (str.to.re "b") (str.to.re "=") (str.to.re "1") (str.to.re "6") (str.to.re "9") (str.to.re "4") (str.to.re "1") (str.to.re "3") (str.to.re "1") (str.to.re "6") (str.to.re "9")))))))
+ (and (= PCTEMP_LHS_4 (+ I0_15 0))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= I0_15 (str.len T4_15))(= 0 (str.len T0_15))(= T1_15 (str.++ T2_15 T3_15))(= T2_15 (str.++ T4_15 T5_15))(= T5_15 "__utmb=169413169")(not (str.in_re T4_15 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "b") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))
+ (and (= PCTEMP_LHS_4 (- 1))(= var_0xINPUT_12454 (str.++ T0_15 T1_15))(= 0 (str.len T0_15))(not (str.in_re T1_15 (re.++ (str.to_re "_") (str.to_re "_") (str.to_re "u") (str.to_re "t") (str.to_re "m") (str.to_re "b") (str.to_re "=") (str.to_re "1") (str.to_re "6") (str.to_re "9") (str.to_re "4") (str.to_re "1") (str.to_re "3") (str.to_re "1") (str.to_re "6") (str.to_re "9")))))))
(assert (= T_c (< (- 1) PCTEMP_LHS_4)))
(assert T_c)
(assert (= T_SELECT_5 (not (= PCTEMP_LHS_5 (- 1)))))
(assert (ite T_SELECT_5
- (and (= PCTEMP_LHS_5 (+ I0_18 PCTEMP_LHS_4))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= I0_18 (str.len T4_18))(= PCTEMP_LHS_4 (str.len T0_18))(= T1_18 (str.++ T2_18 T3_18))(= T2_18 (str.++ T4_18 T5_18))(= T5_18 ";")(not (str.in.re T4_18 (str.to.re ";"))))
- (and (= PCTEMP_LHS_5 (- 1))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= PCTEMP_LHS_4 (str.len T0_18))(not (str.in.re T1_18 (str.to.re ";"))))))
+ (and (= PCTEMP_LHS_5 (+ I0_18 PCTEMP_LHS_4))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= I0_18 (str.len T4_18))(= PCTEMP_LHS_4 (str.len T0_18))(= T1_18 (str.++ T2_18 T3_18))(= T2_18 (str.++ T4_18 T5_18))(= T5_18 ";")(not (str.in_re T4_18 (str.to_re ";"))))
+ (and (= PCTEMP_LHS_5 (- 1))(= var_0xINPUT_12454 (str.++ T0_18 T1_18))(= PCTEMP_LHS_4 (str.len T0_18))(not (str.in_re T1_18 (str.to_re ";"))))))
(assert (= T_e (< PCTEMP_LHS_5 0)))
(assert T_e)
; COMMAND-LINE: --strings-exp --no-strings-lazy-pp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(declare-fun result () Int)
(declare-fun s () String)
-(assert (! (not (= (str.to.int s) result)) :named a0))
+(assert (! (not (= (str.to_int s) result)) :named a0))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status unsat)
(set-option :strings-exp true)
; Action: p0.0
(declare-const p0.0.action Bool)
-(assert (= p0.0.action (and (= actionNamespace "foobar") (str.in.re actionName (re.++ (str.to.re "foo") (re.* re.allchar) (re.++ (str.to.re "") re.allchar (str.to.re "bar")))))))
+(assert (= p0.0.action (and (= actionNamespace "foobar") (str.in_re actionName (re.++ (str.to_re "foo") (re.* re.allchar) (re.++ (str.to_re "") re.allchar (str.to_re "bar")))))))
; Policy: 0
(declare-const p0.denies Bool)
; Action: p1.0
(declare-const p1.0.action Bool)
-(assert (= p1.0.action (and (= actionNamespace "foobar") (str.in.re actionName (re.++ (re.++ (str.to.re "foo") re.allchar (str.to.re "")) (re.* re.allchar) (str.to.re "bar"))))))
+(assert (= p1.0.action (and (= actionNamespace "foobar") (str.in_re actionName (re.++ (re.++ (str.to_re "foo") re.allchar (str.to_re "")) (re.* re.allchar) (str.to_re "bar"))))))
; Policy: 1
(declare-const p1.denies Bool)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re "" (re.* (re.range "a" "u"))))
-(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_4 (re.* (re.union (str.to.re "a") (str.to.re "b")))))
-(assert (not (str.in.re (str.++ var_4 "z" ) (re.* (str.to.re "z")))))
+(assert (str.in_re "" (re.* (re.range "a" "u"))))
+(assert (str.in_re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_4 (re.* (re.union (str.to_re "a") (str.to_re "b")))))
+(assert (not (str.in_re (str.++ var_4 "z" ) (re.* (str.to_re "z")))))
(check-sat)
-(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)
(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 "b")) (re.++ (str.to.re "a") (re.union (re.union (str.to.re "z") (str.to.re "b")) (str.to.re "a"))))) (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 "b")) (re.++ (str.to.re "a") (re.union (str.to.re "z") (str.to.re "a"))))) (str.to.re "a"))))
-(assert (str.in.re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (str.to.re "z") (re.++ (re.union (str.to.re "b") (str.to.re "a")) (re.union (str.to.re "z") (str.to.re "b"))))) (re.union (str.to.re "b") (str.to.re "a")))))
-(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_3 (re.* (re.range "a" "u"))))
+(assert (str.in_re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (re.union (str.to_re "z") (str.to_re "b")) (re.++ (str.to_re "a") (re.union (re.union (str.to_re "z") (str.to_re "b")) (str.to_re "a"))))) (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 "b")) (re.++ (str.to_re "a") (re.union (str.to_re "z") (str.to_re "a"))))) (str.to_re "a"))))
+(assert (str.in_re (str.++ var_3 "z" var_4 ) (re.++ (re.* (re.union (str.to_re "z") (re.++ (re.union (str.to_re "b") (str.to_re "a")) (re.union (str.to_re "z") (str.to_re "b"))))) (re.union (str.to_re "b") (str.to_re "a")))))
+(assert (str.in_re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_3 (re.* (re.range "a" "u"))))
(assert (<= 0 (str.len var_4)))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status unsat)
(set-option :strings-exp true)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re var_4 (re.++ (str.to.re "a") (re.* (str.to.re "b")))))
-(assert (str.in.re var_4 (re.++ (re.* (str.to.re "a")) (str.to.re "b"))))
-(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_4 (re.++ (re.* (str.to.re "a")) (re.++ (str.to.re "b") (re.* (str.to.re "b"))))))
-(assert (not (str.in.re (str.++ "a" var_4 "b" ) (re.++ (re.* (str.to.re "a")) (re.++ (str.to.re "b") (re.* (str.to.re "b")))))))
+(assert (str.in_re var_4 (re.++ (str.to_re "a") (re.* (str.to_re "b")))))
+(assert (str.in_re var_4 (re.++ (re.* (str.to_re "a")) (str.to_re "b"))))
+(assert (str.in_re var_4 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_4 (re.++ (re.* (str.to_re "a")) (re.++ (str.to_re "b") (re.* (str.to_re "b"))))))
+(assert (not (str.in_re (str.++ "a" var_4 "b" ) (re.++ (re.* (str.to_re "a")) (re.++ (str.to_re "b") (re.* (str.to_re "b")))))))
(assert (and (<= 0 (str.len var_4)) (not (not (exists ((v Int)) (= (* v 2 ) (+ (str.len var_4) 2 )))))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re var_4 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_4 (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (str.to.re "a")))) (str.to.re "b"))))
-(assert (str.in.re (str.++ "a" var_4 "b" ) (re.* (re.range "a" "u"))))
-(assert (not (str.in.re (str.++ "a" var_4 "b" ) (re.++ (re.* (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.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (str.to_re "a")))) (str.to_re "b"))))
+(assert (str.in_re (str.++ "a" var_4 "b" ) (re.* (re.range "a" "u"))))
+(assert (not (str.in_re (str.++ "a" var_4 "b" ) (re.++ (re.* (str.to_re "a")) (re.++ (str.to_re "b") (re.* (str.to_re "b")))))))
(check-sat)
-(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)
(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)
; COMMAND-LINE: --strings-exp --re-elim
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(declare-const resource_resource String)
(declare-const p1.0.resource Bool)
-(assert (str.in.re resource_resource (re.++ (str.to.re "ab") (re.* re.allchar) (str.to.re "b") )))
+(assert (str.in_re resource_resource (re.++ (str.to_re "ab") (re.* re.allchar) (str.to_re "b") )))
-(assert (= p1.0.resource (str.in.re resource_resource (re.++ (str.to.re "a") (re.* re.allchar) (str.to.re "b") ))))
+(assert (= p1.0.resource (str.in_re resource_resource (re.++ (str.to_re "a") (re.* re.allchar) (str.to_re "b") ))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun x () String)
(assert
-(not (= (str.in.re x (re.++ (re.++ re.allchar re.allchar ) (re.* re.allchar ))) (not (str.in.re x (re.* (str.to.re "A")))))
+(not (= (str.in_re x (re.++ (re.++ re.allchar re.allchar ) (re.* re.allchar ))) (not (str.in_re x (re.* (str.to_re "A")))))
))
(check-sat)
(set-info :smt-lib-version 2.5)\r
(set-logic SLIA)\r
(set-info :status sat)\r
-(set-info :smt-lib-version 2.5)\r
(set-option :strings-exp true)\r
(define-fun stringEval ((?s String)) Bool (str.in.re ?s \r
(re.union \r
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status unsat)
(set-option :strings-exp true)
(set-option :strings-exp true)
(set-option :re-elim false)
(declare-fun x () String)
-(assert (let ((_let_0 (re.* re.allchar ))) (and (not (= (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "A" (str.++ "B" (str.++ "C" "A")))) _let_0 re.allchar _let_0)) (str.in.re x (re.++ _let_0 re.allchar _let_0 re.allchar _let_0 (str.to.re (str.++ "B" (str.++ "C" (str.++ "B" "B")))) _let_0)))) (not (= (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "C" (str.++ "B" "C"))) _let_0 (str.to.re "B") _let_0)) (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re "C") _let_0 (str.to.re (str.++ "B" (str.++ "C" "B"))) _let_0)))))))
+(assert (let ((_let_0 (re.* re.allchar ))) (and (not (= (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "A" (str.++ "B" (str.++ "C" "A")))) _let_0 re.allchar _let_0)) (str.in_re x (re.++ _let_0 re.allchar _let_0 re.allchar _let_0 (str.to_re (str.++ "B" (str.++ "C" (str.++ "B" "B")))) _let_0)))) (not (= (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "C" (str.++ "B" "C"))) _let_0 (str.to_re "B") _let_0)) (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re "C") _let_0 (str.to_re (str.++ "B" (str.++ "C" "B"))) _let_0)))))))
(check-sat)
(set-option :strings-exp true)
(set-option :re-elim false)
(declare-fun x () String)
-(assert (let ((_let_0 (re.* re.allchar ))) (and (not (= (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "B" (str.++ "A" (str.++ "C" "B")))) _let_0 re.allchar _let_0)) (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "A" (str.++ "B" (str.++ "C" "C")))) _let_0 re.allchar _let_0)))) (not (= (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "C" (str.++ "B" (str.++ "A" "B")))) _let_0 re.allchar _let_0)) (str.in.re x (re.++ _let_0 re.allchar _let_0 (str.to.re (str.++ "C" (str.++ "B" "A"))) _let_0 (str.to.re "B") _let_0)))))))
+(assert (let ((_let_0 (re.* re.allchar ))) (and (not (= (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "B" (str.++ "A" (str.++ "C" "B")))) _let_0 re.allchar _let_0)) (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "A" (str.++ "B" (str.++ "C" "C")))) _let_0 re.allchar _let_0)))) (not (= (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "C" (str.++ "B" (str.++ "A" "B")))) _let_0 re.allchar _let_0)) (str.in_re x (re.++ _let_0 re.allchar _let_0 (str.to_re (str.++ "C" (str.++ "B" "A"))) _let_0 (str.to_re "B") _let_0)))))))
(check-sat)
(declare-const y String)
-(assert (str.in.re x (re.* (str.to.re "ab") ) ) )
-(assert (str.in.re x (re.* (str.to.re "abab") ) ) )
-(assert (str.in.re x (re.* (str.to.re "ababac") ) ) )
+(assert (str.in_re x (re.* (str.to_re "ab") ) ) )
+(assert (str.in_re x (re.* (str.to_re "abab") ) ) )
+(assert (str.in_re x (re.* (str.to_re "ababac") ) ) )
(assert (> (str.len x) 1) )
(set-option :re-elim-agg true)
(declare-const x String)
(declare-const y String)
-(assert (str.in.re x (re.* (str.to.re "'\r''k'\n'"))))
-(assert (str.in.re x (re.* (str.to.re "'\r''k'\n''\r''k'\n'"))))
+(assert (str.in_re x (re.* (str.to_re "'\r''k'\n'"))))
+(assert (str.in_re x (re.* (str.to_re "'\r''k'\n''\r''k'\n'"))))
(assert (> (str.len x) 20))
(assert (< (str.len x) 25))
(check-sat)
(declare-fun x () String)
; we should not intersect these two regular expressions
-(assert (str.in.re x (re.++ (str.to.re "abc:def:ghi:") (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ) (str.to.re ":cluster/sflower-bottle-guide-") (re.* re.allchar ))))
-(assert (str.in.re x (re.++ (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ) (str.to.re ":") (re.* re.allchar ))))
+(assert (str.in_re x (re.++ (str.to_re "abc:def:ghi:") (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ) (str.to_re ":cluster/sflower-bottle-guide-") (re.* re.allchar ))))
+(assert (str.in_re x (re.++ (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ) (str.to_re ":") (re.* re.allchar ))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(set-option :re-elim true)
(declare-fun x () String)
-(assert (str.in.re x (re.++ re.allchar (str.to.re "A") re.allchar (str.to.re "B") re.allchar)))
+(assert (str.in_re x (re.++ re.allchar (str.to_re "A") re.allchar (str.to_re "B") re.allchar)))
(check-sat)
-(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 unsat)
(declare-fun y () String)
(declare-fun z () String)
(assert (or (= x y)(= x z)))
-(assert (str.in.re x (re.++ (str.to.re "A") (re.* (str.to.re "BAA")))))
-(assert (str.in.re y (re.++ (str.to.re "AB") (re.* (str.to.re "AAB")) (str.to.re "A"))))
-(assert (str.in.re z (re.++ (str.to.re "AB") (re.* (str.to.re "AAB")) (str.to.re "A"))))
+(assert (str.in_re x (re.++ (str.to_re "A") (re.* (str.to_re "BAA")))))
+(assert (str.in_re y (re.++ (str.to_re "AB") (re.* (str.to_re "AAB")) (str.to_re "A"))))
+(assert (str.in_re z (re.++ (str.to_re "AB") (re.* (str.to_re "AAB")) (str.to_re "A"))))
; requires RE solver to reason modulo string equalties
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun x () String)
(assert (not (= x "")))
-(assert (not (str.in.re x (re.++ (str.to.re "AB") (re.* (str.to.re "A"))))))
-(assert (not (str.in.re x (re.++ (re.* (str.to.re "A")) (str.to.re "B")))))
+(assert (not (str.in_re x (re.++ (str.to_re "AB") (re.* (str.to_re "A"))))))
+(assert (not (str.in_re x (re.++ (re.* (str.to_re "A")) (str.to_re "B")))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status unsat)
(set-option :strings-exp true)
(declare-const x String)
(declare-const y String)
-(assert (and (= y "foobar") (str.in.re x (re.++ (str.to.re "ab") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b")))))
-(assert (not (and (= y "foobar") (str.in.re x (re.++ (str.to.re "a") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b"))))))
+(assert (and (= y "foobar") (str.in_re x (re.++ (str.to_re "ab") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b")))))
+(assert (not (and (= y "foobar") (str.in_re x (re.++ (str.to_re "a") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b"))))))
(check-sat)
; COMMAND-LINE: --strings-print-ascii --strings-exp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(declare-fun x () String)
(assert
(and
(not (=
- (str.in.re x (re.++ (str.to.re "B") (re.* (str.to.re "B"))))
- (str.in.re x (re.++ (str.to.re "B") (str.to.re (str.++ "B" "B"))))
+ (str.in_re x (re.++ (str.to_re "B") (re.* (str.to_re "B"))))
+ (str.in_re x (re.++ (str.to_re "B") (str.to_re (str.++ "B" "B"))))
))
(not (=
- (str.in.re x (re.++ (re.union (re.++ (str.to.re "A") re.allchar ) re.allchar ) (str.to.re "B")))
- (str.in.re x (re.++ (str.to.re "A") (str.to.re "B")))
+ (str.in_re x (re.++ (re.union (re.++ (str.to_re "A") re.allchar ) re.allchar ) (str.to_re "B")))
+ (str.in_re x (re.++ (str.to_re "A") (str.to_re "B")))
))
)
)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status unsat)
(set-option :strings-exp true)
(declare-fun var0 () String)
-(assert (str.in.re var0 (re.* (re.* (str.to.re "0")))))
-(assert (not (str.in.re var0 (re.union (re.+ (str.to.re "0")) (re.* (str.to.re "1"))))))
+(assert (str.in_re var0 (re.* (re.* (str.to_re "0")))))
+(assert (not (str.in_re var0 (re.union (re.+ (str.to_re "0")) (re.* (str.to_re "1"))))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun x () String)
-(assert (str.in.re x
- (re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+(assert (str.in_re x
+ (re.* (re.++ (re.* (str.to_re "a") ) (str.to_re "b") ))
))
(assert (= (str.len x) 3))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun x () String)
(declare-fun y () String)
-(assert (str.in.re x
- (re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+(assert (str.in_re x
+ (re.* (re.++ (re.* (str.to_re "a") ) (str.to_re "b") ))
))
-(assert (str.in.re y
- (re.* (re.++ (re.* (str.to.re "a") ) (str.to.re "b") ))
+(assert (str.in_re y
+ (re.* (re.++ (re.* (str.to_re "a") ) (str.to_re "b") ))
))
(assert (not (= x y)))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(declare-const s String)
-(assert (str.in.re s (re.inter
- (re.++ (str.to.re "a") (re.* (str.to.re "b"))
- (re.inter (str.to.re "c") (re.* (str.to.re "c"))))
- (re.++ (str.to.re "a") (re.* (str.to.re "b")) (re.* (str.to.re "c")))
+(assert (str.in_re s (re.inter
+ (re.++ (str.to_re "a") (re.* (str.to_re "b"))
+ (re.inter (str.to_re "c") (re.* (str.to_re "c"))))
+ (re.++ (str.to_re "a") (re.* (str.to_re "b")) (re.* (str.to_re "c")))
)))
(check-sat)
-(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)
(declare-fun z () String)
(declare-fun w () String)
-(assert (str.in.re x ((_ re.^ 5) (str.to.re "a"))))
-(assert (str.in.re y ((_ re.loop 2 5) (str.to.re "b"))))
-(assert (str.in.re z ((_ re.loop 5 15) (str.to.re "c"))))
+(assert (str.in_re x ((_ re.^ 5) (str.to_re "a"))))
+(assert (str.in_re y ((_ re.loop 2 5) (str.to_re "b"))))
+(assert (str.in_re z ((_ re.loop 5 15) (str.to_re "c"))))
(assert (> (str.len z) 7))
-(assert (str.in.re w ((_ re.loop 2 7) (str.to.re "b"))))
+(assert (str.in_re w ((_ re.loop 2 7) (str.to_re "b"))))
(assert (> (str.len w) 2))
(assert (< (str.len w) 5))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(set-option :strings-fmf true)
(set-option :produce-models true)
(declare-fun x () String)
-(assert (= (str.len (str.replaceall x "B" "CC")) (+ (str.len x) 2)))
+(assert (= (str.len (str.replace_all x "B" "CC")) (+ (str.len x) 2)))
(assert (> (str.len x) 2))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun z () String)
(assert (not (= x "")))
(assert (not (= y "")))
-(assert (not (= (str.replace x y z) (str.replaceall x y z))))
+(assert (not (= (str.replace x y z) (str.replace_all x y z))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status unsat)
(declare-fun x () String)
(assert (not (=
-(str.in.re x (re.++ (re.* re.allchar ) (str.to.re "A") (re.* re.allchar ) re.allchar (re.* re.allchar ) (re.* (str.to.re "A")) (re.* re.allchar )))
-(str.in.re x (re.++ (re.* (str.to.re "A")) (re.* (str.to.re "B")) (re.* re.allchar ) (str.to.re "A") (re.* re.allchar ) re.allchar (re.* re.allchar )))
+(str.in_re x (re.++ (re.* re.allchar ) (str.to_re "A") (re.* re.allchar ) re.allchar (re.* re.allchar ) (re.* (str.to_re "A")) (re.* re.allchar )))
+(str.in_re x (re.++ (re.* (str.to_re "A")) (re.* (str.to_re "B")) (re.* re.allchar ) (str.to_re "A") (re.* re.allchar ) re.allchar (re.* re.allchar )))
)))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(declare-fun x () String)
-(assert (str.in.re (str.++ "bbbbbbbb" x) (re.* (re.++ (str.to.re "bbbb") (re.* (str.to.re "aaaa"))))))
+(assert (str.in_re (str.++ "bbbbbbbb" x) (re.* (re.++ (str.to_re "bbbb") (re.* (str.to_re "aaaa"))))))
(check-sat)
; COMMAND-LINE: --strings-exp
; EXPECT: sat
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(declare-fun s () String)
-(assert (> (str.to.int s) 400000000))
+(assert (> (str.to_int s) 400000000))
(check-sat)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun x () String)
-(assert (= (str.to.int x) 12345))
+(assert (= (str.to_int x) 12345))
(check-sat)
(declare-fun z () String)
(declare-fun w () String)
-(assert (>= (str.code x) 65))
-(assert (<= (str.code x) 75))
+(assert (>= (str.to_code x) 65))
+(assert (<= (str.to_code x) 75))
-(assert (>= (str.code y) 65))
-(assert (<= (str.code y) 75))
+(assert (>= (str.to_code y) 65))
+(assert (<= (str.to_code y) 75))
-(assert (>= (str.code z) 65))
-(assert (<= (str.code z) 75))
+(assert (>= (str.to_code z) 65))
+(assert (<= (str.to_code z) 75))
(assert (= (str.len w) 1))
-(assert (= (+ (str.code x) (str.code y)) 140))
-(assert (= (+ (str.code x) (str.code z)) 141))
+(assert (= (+ (str.to_code x) (str.to_code y)) 140))
+(assert (= (+ (str.to_code x) (str.to_code z)) 141))
(assert (distinct x y z w "A" "B" "C" "D" "AA"))
(set-info :status unsat)
(declare-fun x () String)
(assert (= (str.len x) 1))
-(assert (or (< (str.code x) 0) (> (str.code x) 10000000000000000000000000000)))
+(assert (or (< (str.to_code x) 0) (> (str.to_code x) 10000000000000000000000000000)))
(check-sat)
(declare-fun y () String)
(declare-fun z () String)
-(assert (>= (str.code x) 65))
-(assert (<= (str.code x) 75))
+(assert (>= (str.to_code x) 65))
+(assert (<= (str.to_code x) 75))
-(assert (>= (str.code y) 65))
-(assert (<= (str.code y) 75))
+(assert (>= (str.to_code y) 65))
+(assert (<= (str.to_code y) 75))
-(assert (>= (str.code z) 65))
-(assert (<= (str.code z) 75))
+(assert (>= (str.to_code z) 65))
+(assert (<= (str.to_code z) 75))
-(assert (= (+ (str.code x) (str.code y)) 140))
-(assert (= (+ (str.code x) (str.code z)) 141))
+(assert (= (+ (str.to_code x) (str.to_code y)) 140))
+(assert (= (+ (str.to_code x) (str.to_code z)) 141))
(assert (distinct x y z "B" "C" "D" "E"))
(declare-fun y () String)
(declare-fun z () String)
-(assert (>= (str.code x) 65))
-(assert (<= (str.code x) 75))
+(assert (>= (str.to_code x) 65))
+(assert (<= (str.to_code x) 75))
-(assert (>= (str.code y) 65))
-(assert (<= (str.code y) 75))
+(assert (>= (str.to_code y) 65))
+(assert (<= (str.to_code y) 75))
-(assert (>= (str.code z) 65))
-(assert (<= (str.code z) 75))
+(assert (>= (str.to_code z) 65))
+(assert (<= (str.to_code z) 75))
-(assert (= (+ (str.code x) (str.code y)) 140))
-(assert (= (+ (str.code x) (str.code z)) 140))
+(assert (= (+ (str.to_code x) (str.to_code y)) 140))
+(assert (= (+ (str.to_code x) (str.to_code z)) 140))
(assert (distinct x y z))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-option :strings-exp true)
(set-info :status sat)
(declare-fun y () String)
(declare-fun z () Int)
(assert (and
-(not (= (str.replace "A" (int.to.str z) x) (str.++ "A" (str.replace "" (int.to.str z) x))))
+(not (= (str.replace "A" (str.from_int z) x) (str.++ "A" (str.replace "" (str.from_int z) x))))
(not (= (str.replace x (str.at x z) "") (str.++ (str.replace (str.++ (str.substr x 0 z) (str.substr x z 1)) (str.substr x z 1) "") (str.substr x (+ 1 z) (str.len x)))))
)
)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun i () Int)
(assert (>= i 420))
-(assert (= x (int.to.str i)))
+(assert (= x (str.from_int i)))
(assert (= x (str.++ y "0" z)))
(assert (not (= y "")))
(assert (not (= z "")))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_SLIA)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun i () Int)
(declare-fun s () String)
-(assert (< 67 (str.to.int s)))
+(assert (< 67 (str.to_int s)))
(assert (= (str.len s) 2))
(assert (not (= s "68")))
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic QF_S)
(set-option :strings-exp true)
(set-info :status unsat)
(assert (= (str.len buff) 4))
(assert (= (str.len pass_mem) 1))
-(assert (str.in.re (str.++ buff pass_mem) (re.+ (str.to.re "A"))))
+(assert (str.in_re (str.++ buff pass_mem) (re.+ (str.to_re "A"))))
(assert (str.contains buff "<"))
; COMMAND-LINE: --strings-exp --re-elim
; EXPECT: sat
+(set-info :smt-lib-version 2.5)
(set-option :produce-models true)
(set-logic UFDTSLIA)
-(set-info :smt-lib-version 2.5)
(declare-datatypes () (
(StringRotation (StringRotation$C_StringRotation (StringRotation$C_StringRotation$sr String)))
(StringRotation2 (StringRotation2$C_StringRotation2 (StringRotation2$C_StringRotation2$sr1 StringRotation) (StringRotation2$C_StringRotation2$sr2 StringRotation)))
; Resource: p0.0
(declare-const p0.0.resource Bool)
-(assert (= p0.0.resource (and (= resource_prefix "arn") (= resource_partition "aws") (= resource_service "sqs") (= resource_region "us-east-1") (= resource_account "111144448888") (str.in.re resource_resource (re.++ (str.to.re "ab") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b"))))))
+(assert (= p0.0.resource (and (= resource_prefix "arn") (= resource_partition "aws") (= resource_service "sqs") (= resource_region "us-east-1") (= resource_account "111144448888") (str.in_re resource_resource (re.++ (str.to_re "ab") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b"))))))
; Statement: p0.0
(declare-const p0.0.statement.allows Bool)
; Resource: p1.0
(declare-const p1.0.resource Bool)
-(assert (= p1.0.resource (and (= resource_prefix "arn") (= resource_partition "aws") (= resource_service "sqs") (= resource_region "us-east-1") (= resource_account "111144448888") (str.in.re resource_resource (re.++ (str.to.re "a") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b") (re.* re.allchar) (str.to.re "b"))))))
+(assert (= p1.0.resource (and (= resource_prefix "arn") (= resource_partition "aws") (= resource_service "sqs") (= resource_region "us-east-1") (= resource_account "111144448888") (str.in_re resource_resource (re.++ (str.to_re "a") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b") (re.* re.allchar) (str.to_re "b"))))))
; Statement: p1.0
(declare-const p1.0.statement.allows Bool)
(declare-fun var_11 () String)
(declare-fun var_12 () String)
-(assert (str.in.re (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "b") (str.to.re "a"))) (str.to.re "z"))))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "b") (str.to.re "a")))))))
-(assert (str.in.re (str.++ var_8 "z" var_9 ) (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 (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to.re "a") (re.++ (str.to.re "b") (re.++ (re.* (re.union (str.to.re "z") (str.to.re "a"))) (str.to.re "b"))))) (re.++ (str.to.re "b") (re.* (re.union (str.to.re "z") (str.to.re "a")))))))
-(assert (str.in.re (str.++ var_8 "z" var_9 ) (re.* (re.++ (re.union (str.to.re "b") (str.to.re "a")) (re.++ (re.* (str.to.re "a")) (re.union (str.to.re "z") (str.to.re "b")))))))
-(assert (str.in.re var_9 (re.* (re.range "a" "u"))))
-(assert (str.in.re var_8 (re.* (re.range "a" "u"))))
-(assert (not (str.in.re (str.++ "b" var_8 "z" "b" var_9 ) (re.++ (re.* (re.++ (str.to.re "b") (str.to.re "z"))) (str.to.re "b")))))
+(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "b") (str.to_re "a"))) (str.to_re "z"))))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "b") (str.to_re "a")))))))
+(assert (str.in_re (str.++ var_8 "z" var_9 ) (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 (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "z") (str.to_re "a"))) (str.to_re "b"))))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "z") (str.to_re "a")))))))
+(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.* (re.++ (re.union (str.to_re "b") (str.to_re "a")) (re.++ (re.* (str.to_re "a")) (re.union (str.to_re "z") (str.to_re "b")))))))
+(assert (str.in_re var_9 (re.* (re.range "a" "u"))))
+(assert (str.in_re var_8 (re.* (re.range "a" "u"))))
+(assert (not (str.in_re (str.++ "b" var_8 "z" "b" var_9 ) (re.++ (re.* (re.++ (str.to_re "b") (str.to_re "z"))) (str.to_re "b")))))
(check-sat)
; EXPECT: sat
(set-logic QF_SLIA)
(declare-const x String)
-(assert (str.in.re x ((_ re.loop 12 12) (re.range "0" "9"))))
-(assert (str.in.re x (re.++ (re.* re.allchar) (str.to.re "01") (re.* re.allchar))))
+(assert (str.in_re x ((_ re.loop 12 12) (re.range "0" "9"))))
+(assert (str.in_re x (re.++ (re.* re.allchar) (str.to_re "01") (re.* re.allchar))))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(declare-fun y () String)
(declare-fun z () String)
(declare-fun w () String)
-(assert (= (str.len (str.replaceall x y z)) (+ (str.len (str.replaceall x y w)) 3)))
+(assert (= (str.len (str.replace_all x y z)) (+ (str.len (str.replace_all x y w)) 3)))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(set-option :strings-fmf true)
(declare-fun x () String)
-(assert (= (str.len (str.replaceall "ABBABAAB" x "C")) 5))
+(assert (= (str.len (str.replace_all "ABBABAAB" x "C")) 5))
(check-sat)
-(set-info :smt-lib-version 2.5)
+(set-info :smt-lib-version 2.6)
(set-logic ALL)
(set-info :status sat)
(set-option :strings-exp true)
(set-option :re-elim true)
(declare-const x String)
-(assert (str.in.re x (re.++ (str.to.re "example-bucket/") (re.* re.allchar) (str.to.re "/") re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar (str.to.re "-") re.allchar re.allchar re.allchar re.allchar (str.to.re "-") re.allchar re.allchar re.allchar re.allchar (str.to.re "-") re.allchar re.allchar re.allchar re.allchar (str.to.re "-") re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar (str.to.re "/foo"))))
+(assert (str.in_re x (re.++ (str.to_re "example-bucket/") (re.* re.allchar) (str.to_re "/") re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar (str.to_re "-") re.allchar re.allchar re.allchar re.allchar (str.to_re "-") re.allchar re.allchar re.allchar re.allchar (str.to_re "-") re.allchar re.allchar re.allchar re.allchar (str.to_re "-") re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar re.allchar (str.to_re "/foo"))))
(check-sat)
TS_ASSERT_THROWS_NOTHING(d_solver->setInfo("smt-lib-version", "2.0"));
TS_ASSERT_THROWS_NOTHING(d_solver->setInfo("smt-lib-version", "2.5"));
TS_ASSERT_THROWS_NOTHING(d_solver->setInfo("smt-lib-version", "2.6"));
- TS_ASSERT_THROWS_NOTHING(d_solver->setInfo("smt-lib-version", "2.6.1"));
TS_ASSERT_THROWS(d_solver->setInfo("smt-lib-version", ".0"),
CVC4ApiException&);