3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 03:15:50 +00:00

wip - proofs

This commit is contained in:
Nikolaj Bjorner 2022-10-10 16:41:09 +02:00
parent de69874076
commit fceedf60dc
9 changed files with 110 additions and 38 deletions

View file

@ -183,6 +183,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
if (m_expr2var_replay && m_expr2var_replay->find(n, v))
return v;
v = m_solver.add_var(is_ext);
if (!is_ext && m_euf && ensure_euf()->use_drat())
ensure_euf()->set_bool_var2expr(v, n);
return v;
}
@ -417,7 +419,7 @@ struct goal2sat::imp : public sat::sat_internalizer {
cache(t, l);
sat::literal * lits = m_result_stack.end() - num;
for (unsigned i = 0; i < num; i++)
mk_clause(~lits[i], l);
mk_clause(~lits[i], l, mk_tseitin(~lits[i], l));
m_result_stack.push_back(~l);
lits = m_result_stack.end() - num - 1;
@ -427,7 +429,7 @@ struct goal2sat::imp : public sat::sat_internalizer {
}
// remark: mk_clause may perform destructive updated to lits.
// I have to execute it after the binary mk_clause above.
mk_clause(num+1, lits);
mk_clause(num+1, lits, mk_tseitin(num+1, lits));
if (aig())
aig()->add_or(l, num, aig_lits.data());
@ -470,7 +472,7 @@ struct goal2sat::imp : public sat::sat_internalizer {
// l => /\ lits
for (unsigned i = 0; i < num; i++) {
mk_clause(~l, lits[i]);
mk_clause(~l, lits[i], mk_tseitin(~l, lits[i]));
}
// /\ lits => l
for (unsigned i = 0; i < num; ++i) {
@ -482,7 +484,7 @@ struct goal2sat::imp : public sat::sat_internalizer {
aig_lits.reset();
aig_lits.append(num, lits);
}
mk_clause(num+1, lits);
mk_clause(num+1, lits, mk_tseitin(num+1, lits));
if (aig()) {
aig()->add_and(l, num, aig_lits.data());
}
@ -934,6 +936,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
expr_ref f(m), d_new(m);
ptr_vector<expr> deps;
expr_ref_vector fmls(m);
if (m_euf)
ensure_euf();
for (unsigned idx = 0; idx < size; idx++) {
f = g.form(idx);
// Add assumptions.