3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-16 20:21:04 -07:00
parent d002423133
commit f06deca7e0

View file

@ -523,6 +523,7 @@ struct ctx_simplify_tactic::imp {
void process_goal(goal & g) {
SASSERT(scope_level() == 0);
// go forwards
expr_ref_vector pinned(m);
unsigned old_lvl = scope_level();
unsigned sz = g.size();
expr_ref r(m);
@ -532,6 +533,7 @@ struct ctx_simplify_tactic::imp {
if (i < sz - 1 && !m.is_true(r) && !m.is_false(r) && !g.dep(i) && !assert_expr(r, false)) {
r = m.mk_false();
}
pinned.push_back(r);
g.update(i, r, nullptr, g.dep(i));
}
pop(scope_level() - old_lvl);
@ -570,12 +572,16 @@ struct ctx_simplify_tactic::imp {
void operator()(goal & g) {
m_occs.reset();
expr_ref_vector pinned(m);
m_occs(g);
unsigned sz = g.size();
for (unsigned i = 0; i < sz; ++i) {
pinned.push_back(g.form(i));
}
m_num_steps = 0;
tactic_report report("ctx-simplify", g);
if (g.proofs_enabled()) {
expr_ref r(m);
unsigned sz = g.size();
for (unsigned i = 0; !g.inconsistent() && i < sz; ++i) {
expr * t = g.form(i);
process(t, r);