mirror of
https://github.com/Z3Prover/z3
synced 2025-11-05 22:06:03 +00:00
wip - adding proof checkers, fixes to quantifier proof certificates
This commit is contained in:
parent
4623117af8
commit
de69874076
16 changed files with 241 additions and 58 deletions
|
|
@ -160,8 +160,13 @@ namespace euf {
|
|||
s().set_external(v);
|
||||
s().set_eliminated(v, false);
|
||||
sat::literal lit2 = literal(v, false);
|
||||
s().mk_clause(~lit, lit2, sat::status::th(m_is_redundant, m.get_basic_family_id()));
|
||||
s().mk_clause(lit, ~lit2, sat::status::th(m_is_redundant, m.get_basic_family_id()));
|
||||
th_proof_hint* ph1 = nullptr, * ph2 = nullptr;
|
||||
if (use_drat()) {
|
||||
ph1 = mk_smt_hint(symbol("tseitin"), ~lit, lit2);
|
||||
ph2 = mk_smt_hint(symbol("tseitin"), lit, ~lit2);
|
||||
}
|
||||
s().mk_clause(~lit, lit2, sat::status::th(m_is_redundant, m.get_basic_family_id(), ph1));
|
||||
s().mk_clause(lit, ~lit2, sat::status::th(m_is_redundant, m.get_basic_family_id(), ph2));
|
||||
add_aux(~lit, lit2);
|
||||
add_aux(lit, ~lit2);
|
||||
lit = lit2;
|
||||
|
|
@ -310,8 +315,8 @@ namespace euf {
|
|||
sat::literal lit_el = mk_literal(eq_el);
|
||||
add_root(~lit_c, lit_th);
|
||||
add_root(lit_c, lit_el);
|
||||
s().add_clause(~lit_c, lit_th, st);
|
||||
s().add_clause(lit_c, lit_el, st);
|
||||
s().add_clause(~lit_c, lit_th, mk_tseitin_status(~lit_c, lit_th));
|
||||
s().add_clause(lit_c, lit_el, mk_tseitin_status(lit_c, lit_el));
|
||||
}
|
||||
}
|
||||
else if (m.is_distinct(e)) {
|
||||
|
|
@ -329,8 +334,8 @@ namespace euf {
|
|||
sat::literal some_eq = si.internalize(fml, m_is_redundant);
|
||||
add_root(~dist, ~some_eq);
|
||||
add_root(dist, some_eq);
|
||||
s().add_clause(~dist, ~some_eq, st);
|
||||
s().add_clause(dist, some_eq, st);
|
||||
s().add_clause(~dist, ~some_eq, mk_tseitin_status(~dist, ~some_eq));
|
||||
s().add_clause(dist, some_eq, mk_tseitin_status(dist, some_eq));
|
||||
}
|
||||
else if (m.is_eq(e, th, el) && !m.is_iff(e)) {
|
||||
sat::literal lit1 = expr2literal(e);
|
||||
|
|
@ -341,8 +346,8 @@ namespace euf {
|
|||
sat::literal lit2 = expr2literal(e2);
|
||||
add_root(~lit1, lit2);
|
||||
add_root(lit1, ~lit2);
|
||||
s().add_clause(~lit1, lit2, st);
|
||||
s().add_clause(lit1, ~lit2, st);
|
||||
s().add_clause(~lit1, lit2, mk_tseitin_status(~lit1, lit2));
|
||||
s().add_clause(lit1, ~lit2, mk_tseitin_status(lit1, ~lit2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue