3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-08 18:19:40 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-07-04 06:20:24 +07:00
parent 1517ca907e
commit 8e2ad4e461
7 changed files with 68 additions and 25 deletions

View file

@ -5923,10 +5923,11 @@ void theory_seq::propagate_not_suffix(expr* e) {
e1 < e2 => e1 = empty or e1 = xcy
e1 < e2 => e1 = empty or c < d
e1 < e2 => e2 = xdz
!(e1 < e2) => e1 = e2 or e2 = empty or e2 = xcy
!(e1 < e2) => e1 = e2 or e2 = empty or c < d
!(e1 < e2) => e1 = e2 or e1 = xdz
!(e1 < e2) => e1 = e2 or e2 = empty or e2 = xdz
!(e1 < e2) => e1 = e2 or e2 = empty or d < c
!(e1 < e2) => e1 = e2 or e1 = xcy
optional:
e1 < e2 or e1 = e2 or e2 < e1
!(e1 = e2) or !(e1 < e2)
!(e1 = e2) or !(e2 < e1)
@ -5952,15 +5953,14 @@ void theory_seq::add_lt_axiom(expr* n) {
literal eq = mk_eq(e1, e2, false);
literal e1xcy = mk_eq(e1, xcy, false);
literal e2xdz = mk_eq(e2, xdz, false);
literal e2xcy = mk_eq(e2, xcy, false);
literal e1xdz = mk_eq(e1, xdz, false);
literal ltcd = mk_literal(m_util.mk_lt(c, d));
literal ltdc = mk_literal(m_util.mk_lt(d, c));
add_axiom(~lt, e2xdz);
add_axiom(~lt, emp1, e1xcy);
add_axiom(~lt, emp1, ltcd);
add_axiom(lt, eq, e1xdz);
add_axiom(lt, eq, emp2, ltcd);
add_axiom(lt, eq, emp2, e2xcy);
add_axiom(lt, eq, e1xcy);
add_axiom(lt, eq, emp2, ltdc);
add_axiom(lt, eq, emp2, e2xdz);
if (e1->get_id() <= e2->get_id()) {
literal gt = mk_literal(m_util.str.mk_lex_lt(e2, e1));
add_axiom(lt, eq, gt);