mirror of
https://github.com/Z3Prover/z3
synced 2025-06-04 13:21:22 +00:00
add rewrite rule
This commit is contained in:
parent
430b4ea252
commit
f5f980fa38
1 changed files with 8 additions and 0 deletions
|
@ -1428,6 +1428,7 @@ br_status seq_rewriter::mk_seq_last_index(expr* a, expr* b, expr_ref& result) {
|
||||||
indexof("", b, r) -> if b = "" and r = 0 then 0 else -1
|
indexof("", b, r) -> if b = "" and r = 0 then 0 else -1
|
||||||
indexof(unit(x)+a, b, r+1) -> indexof(a, b, r)
|
indexof(unit(x)+a, b, r+1) -> indexof(a, b, r)
|
||||||
indexof(unit(x)+a, unit(y)+b, 0) -> indexof(a,unit(y)+b, 0) if x != y
|
indexof(unit(x)+a, unit(y)+b, 0) -> indexof(a,unit(y)+b, 0) if x != y
|
||||||
|
indexof(substr(x,y,len1), z, len2) -> -1 if len2 > len1
|
||||||
*/
|
*/
|
||||||
br_status seq_rewriter::mk_seq_index(expr* a, expr* b, expr* c, expr_ref& result) {
|
br_status seq_rewriter::mk_seq_index(expr* a, expr* b, expr* c, expr_ref& result) {
|
||||||
zstring s1, s2;
|
zstring s1, s2;
|
||||||
|
@ -1468,6 +1469,13 @@ br_status seq_rewriter::mk_seq_index(expr* a, expr* b, expr* c, expr_ref& result
|
||||||
return BR_REWRITE2;
|
return BR_REWRITE2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
expr* x = nullptr, *y = nullptr, *len1 = nullptr;
|
||||||
|
rational r1, r2;
|
||||||
|
if (str().is_extract(a, x, y, len1) && m_autil.is_numeral(len1, r1) &&
|
||||||
|
m_autil.is_numeral(c, r2) && r2 > r1) {
|
||||||
|
result = minus_one();
|
||||||
|
return BR_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
expr_ref_vector as(m()), bs(m());
|
expr_ref_vector as(m()), bs(m());
|
||||||
str().get_concat_units(a, as);
|
str().get_concat_units(a, as);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue