3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-14 04:48:45 +00:00

apply rewriting if result of destructive equality resolution is simplified

This commit is contained in:
Nikolaj Bjorner 2023-02-19 11:03:04 -08:00
parent bc6037464d
commit 6454e7fa3f

View file

@ -821,17 +821,28 @@ struct th_rewriter_cfg : public default_rewriter_cfg {
result_pr = m().mk_transitivity(p1, p2);
}
TRACE("reduce_quantifier", tout << "after elim_unused_vars:\n" << result << " " << result_pr << "\n" ;);
proof_ref p2(m());
expr_ref r(m());
bool der_change = false;
if (is_quantifier(result)) {
proof_ref p2(m());
expr_ref r(m());
m_der(to_quantifier(result), r, p2);
der_change = result.get() != r.get();
if (m().proofs_enabled() && der_change)
result_pr = m().mk_transitivity(result_pr, p2);
result = r;
}
if (der_change) {
th_rewriter rw(m());
rw(result, r, p2);
if (m().proofs_enabled() && result.get() != r.get())
result_pr = m().mk_transitivity(result_pr, p2);
result = r;
}
TRACE("reduce_quantifier", tout << "after elim_unused_vars:\n" << result << " " << result_pr << "\n" ;);
SASSERT(old_q->get_sort() == result->get_sort());
return true;
}