mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
parent
2ca83d0095
commit
559f57470e
2 changed files with 6 additions and 7 deletions
|
@ -4735,7 +4735,6 @@ bool theory_seq::get_length(expr* e, rational& val) const {
|
|||
}
|
||||
|
||||
/*
|
||||
TBD: check semantics of extract.
|
||||
|
||||
let e = extract(s, i, l)
|
||||
|
||||
|
@ -4797,15 +4796,16 @@ void theory_seq::add_extract_axiom(expr* e) {
|
|||
literal li_ge_ls = mk_simplified_literal(m_autil.mk_ge(ls_minus_i_l, zero));
|
||||
literal l_ge_zero = mk_simplified_literal(m_autil.mk_ge(l, zero));
|
||||
literal ls_le_0 = mk_simplified_literal(m_autil.mk_le(ls, zero));
|
||||
literal le_is_0 = mk_eq(le, zero, false);
|
||||
|
||||
add_axiom(~i_ge_0, ~ls_le_i, mk_seq_eq(xey, s));
|
||||
add_axiom(~i_ge_0, ~ls_le_i, mk_eq(lx, i, false));
|
||||
add_axiom(~i_ge_0, ~ls_le_i, ~l_ge_zero, ~li_ge_ls, mk_eq(le, l, false));
|
||||
add_axiom(~i_ge_0, ~ls_le_i, li_ge_ls, mk_eq(le, mk_sub(ls, i), false));
|
||||
add_axiom(~i_ge_0, ~ls_le_i, l_ge_zero, mk_eq(le, zero, false));
|
||||
add_axiom(i_ge_0, mk_eq(le, zero, false));
|
||||
add_axiom(ls_le_i, mk_eq(le, zero, false));
|
||||
add_axiom(~ls_le_0, mk_eq(le, zero, false));
|
||||
add_axiom(i_ge_0, le_is_0);
|
||||
add_axiom(ls_le_i, le_is_0);
|
||||
add_axiom(~ls_le_0, le_is_0);
|
||||
}
|
||||
|
||||
void theory_seq::add_tail_axiom(expr* e, expr* s) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue