{
Assert(nb.empty());
Assert(ne.empty());
+ Trace("strings-entail") << "Component contains: " << std::endl;
+ Trace("strings-entail") << "n1 = " << n1 << std::endl;
+ Trace("strings-entail") << "n2 = " << n2 << std::endl;
// if n2 is a singleton, we can do optimized version here
if (n2.size() == 1)
{
-1,
computeRemainder && remainderDir != -1))
{
+ Trace("strings-entail-debug")
+ << "Last remainder begin is " << n1rb_last << std::endl;
+ Trace("strings-entail-debug")
+ << "Last remainder end is " << n1re_last << std::endl;
Assert(n1rb_last.isNull());
if (computeRemainder)
{
}
}
}
+ Trace("strings-entail-debug") << "ne = " << ne << std::endl;
+ Trace("strings-entail-debug") << "nb = " << nb << std::endl;
+ Trace("strings-entail-debug") << "...return " << i << std::endl;
return i;
}
else
{
return false;
}
- if (dir != 1)
+ if (dir != -1)
{
n1rb = nm->mkNode(
STRING_SUBSTR, n2[0], nm->mkConst(Rational(0)), start_pos);
}
- if (dir != -1)
+ if (dir != 1)
{
n1re = nm->mkNode(STRING_SUBSTR, n2[0], end_pos, len_n2s);
}
regress1/strings/issue3657-unexpectedUnsatCVC4.smt2
regress1/strings/issue4379.smt2
regress1/strings/issue4608-re-derive.smt2
+ regress1/strings/issue4701_substr_splice.smt2
regress1/strings/issue4735.smt2
regress1/strings/issue4735_2.smt2
regress1/strings/issue4759-comp-delta.smt2
--- /dev/null
+(set-logic QF_SLIA)
+(set-info :status sat)
+(set-option :strings-exp true)
+(declare-fun a () String)
+(declare-fun b () String)
+(declare-fun c () String)
+(declare-fun e () String)
+(assert (= e (str.++ b (str.substr a 0 1))))
+(assert (= a (str.substr c 0 (str.len e))))
+(assert (= "a" b))
+(assert (= (str.++ b a) (str.replace c e a)))
+(check-sat)