mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 03:15:50 +00:00
updates to seq and bug fixes (#4056)
* na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4037 * nicer output for skolem functions * more overhaul of seq, some bug fixes * na * added offset_eq file * na * fix #4044 * fix #4040 * fix #4045 * updated ignore * new rewrites for indexof based on #4036 * add shortcuts * updated ne solver for seq, fix #4025 * use pair vectors for equalities that are reduced by seq_rewriter * use erase_and_swap * remove unit-walk * na * add check for #3200 * nits Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * name a type Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove fp check Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove unsound axiom instantiation for non-contains Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix rewrites Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4053 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #4052 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
53c14bd554
commit
95a78b2450
39 changed files with 1516 additions and 1654 deletions
|
@ -177,7 +177,8 @@ namespace smt {
|
|||
|
||||
|
||||
void mp_iff_justification::get_antecedents(conflict_resolution & cr) {
|
||||
SASSERT(m_node1 != m_node2);
|
||||
if (m_node1 == m_node2)
|
||||
return;
|
||||
cr.mark_eq(m_node1, m_node2);
|
||||
context & ctx = cr.get_context();
|
||||
bool_var v = ctx.enode2bool_var(m_node1);
|
||||
|
@ -187,6 +188,9 @@ namespace smt {
|
|||
}
|
||||
|
||||
proof * mp_iff_justification::mk_proof(conflict_resolution & cr) {
|
||||
ast_manager& m = cr.get_manager();
|
||||
if (m_node1 == m_node2)
|
||||
return m.mk_reflexivity(m_node1->get_owner());
|
||||
proof * pr1 = cr.get_proof(m_node1, m_node2);
|
||||
context & ctx = cr.get_context();
|
||||
bool_var v = ctx.enode2bool_var(m_node1);
|
||||
|
@ -194,7 +198,7 @@ namespace smt {
|
|||
literal l(v, val == l_false);
|
||||
proof * pr2 = cr.get_proof(l);
|
||||
if (pr1 && pr2) {
|
||||
ast_manager & m = cr.get_manager();
|
||||
|
||||
proof * pr;
|
||||
SASSERT(m.has_fact(pr1));
|
||||
SASSERT(m.has_fact(pr2));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue