mirror of
https://github.com/Z3Prover/z3
synced 2025-08-11 21:50:52 +00:00
parent
780346c7ca
commit
e63992c8bd
3 changed files with 14 additions and 3 deletions
|
@ -252,10 +252,14 @@ void seq_axioms::add_extract_suffix_axiom(expr* e, expr* s, expr* i) {
|
|||
s = "" or !contains(x*s1, s)
|
||||
*/
|
||||
void seq_axioms::tightest_prefix(expr* s, expr* x) {
|
||||
literal s_eq_emp = mk_eq_empty(s);
|
||||
if (seq.str.max_length(s) <= 1) {
|
||||
add_axiom(s_eq_emp, ~mk_literal(seq.str.mk_contains(x, s)));
|
||||
return;
|
||||
}
|
||||
expr_ref s1 = m_sk.mk_first(s);
|
||||
expr_ref c = m_sk.mk_last(s);
|
||||
expr_ref s1c = mk_concat(s1, seq.str.mk_unit(c));
|
||||
literal s_eq_emp = mk_eq_empty(s);
|
||||
add_axiom(s_eq_emp, mk_seq_eq(s, s1c));
|
||||
add_axiom(s_eq_emp, ~mk_literal(seq.str.mk_contains(mk_concat(x, s1), s)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue