3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-25 20:46:01 +00:00

use iterators on goal and other refactoring

This commit is contained in:
Nikolaj Bjorner 2025-03-16 20:04:04 -07:00
parent eb97fcc273
commit 2e2a2e28df
8 changed files with 77 additions and 53 deletions

View file

@ -29,14 +29,13 @@ class cofactor_term_ite_tactic : public tactic {
void process(goal & g) {
ast_manager & m = g.m();
unsigned sz = g.size();
for (unsigned i = 0; i < sz; i++) {
unsigned idx = 0;
for (auto [f, dep, pr] : g) {
if (g.inconsistent())
break;
expr * f = g.form(i);
expr_ref new_f(m);
m_elim_ite(f, new_f);
g.update(i, new_f, nullptr, g.dep(i));
g.update(idx++, new_f, nullptr, dep);
}
}

View file

@ -569,16 +569,15 @@ struct ctx_simplify_tactic::imp {
m_occs.reset();
m_occs(g);
m_num_steps = 0;
unsigned sz = g.size();
tactic_report report("ctx-simplify", g);
if (g.proofs_enabled()) {
expr_ref r(m);
for (unsigned i = 0; !g.inconsistent() && i < sz; ++i) {
expr * t = g.form(i);
unsigned idx = 0;
for (auto [t, dep, pr] : g) {
process(t, r);
proof_ref new_pr(m.mk_rewrite(t, r), m);
new_pr = m.mk_modus_ponens(g.pr(i), new_pr);
g.update(i, r, new_pr, g.dep(i));
new_pr = m.mk_modus_ponens(pr, new_pr);
g.update(idx++, r, new_pr, dep);
}
}
else {

View file

@ -34,21 +34,16 @@ class der_tactic : public tactic {
}
void operator()(goal & g) {
bool proofs_enabled = g.proofs_enabled();
tactic_report report("der", g);
expr_ref new_curr(m());
proof_ref new_pr(m());
unsigned size = g.size();
for (unsigned idx = 0; idx < size; idx++) {
unsigned idx = 0;
for (auto [curr, dep, pr] : g) {
if (g.inconsistent())
break;
expr * curr = g.form(idx);
m_r(curr, new_curr, new_pr);
if (proofs_enabled) {
proof * pr = g.pr(idx);
new_pr = m().mk_modus_ponens(pr, new_pr);
}
g.update(idx, new_curr, new_pr, g.dep(idx));
new_pr = m().mk_modus_ponens(pr, new_pr);
g.update(idx++, new_curr, new_pr, dep);
}
g.elim_redundancies();
}