3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-11 19:53:34 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-07 12:34:07 +01:00
parent bdd66e1fa0
commit c765869d38

View file

@ -680,19 +680,25 @@ class solve_eqs_tactic : public tactic {
}
void distribute_and_or(goal & g) {
if (m_produce_proofs)
return;
unsigned size = g.size();
hoist_rewriter_star rw(m());
th_rewriter thrw(m());
expr_ref tmp(m()), tmp2(m());
// TRACE("solve_eqs", g.display(tout););
for (unsigned idx = 0; idx < size; idx++) {
checkpoint();
if (g.is_decided_unsat()) break;
expr* f = g.form(idx);
thrw(f, tmp);
rw(tmp, tmp2);
TRACE("solve_eqs", tout << mk_pp(f, m()) << " " << tmp2 << "\n";);
g.update(idx, tmp2, g.pr(idx), g.dep(idx));
proof_ref pr1(m()), pr2(m());
thrw(f, tmp, pr1);
rw(tmp, tmp2, pr2);
pr1 = m().mk_transitivity(pr1, pr2);
TRACE("solve_eqs", tout << mk_pp(f, m()) << " " << tmp2 << "\n" << pr1 << "\n" << mk_pp(g.pr(idx), m()) << "\n";);
if (!pr1) pr1 = g.pr(idx); else pr1 = m().mk_modus_ponens(g.pr(idx), pr1);
g.update(idx, tmp2, pr1, g.dep(idx));
}
}