3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-23 14:23:40 +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) { void process_goal(goal & g) {
SASSERT(scope_level() == 0); SASSERT(scope_level() == 0);
// go forwards // go forwards
expr_ref_vector pinned(m);
unsigned old_lvl = scope_level(); unsigned old_lvl = scope_level();
unsigned sz = g.size(); unsigned sz = g.size();
expr_ref r(m); 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)) { if (i < sz - 1 && !m.is_true(r) && !m.is_false(r) && !g.dep(i) && !assert_expr(r, false)) {
r = m.mk_false(); r = m.mk_false();
} }
pinned.push_back(r);
g.update(i, r, nullptr, g.dep(i)); g.update(i, r, nullptr, g.dep(i));
} }
pop(scope_level() - old_lvl); pop(scope_level() - old_lvl);
@ -570,12 +572,16 @@ struct ctx_simplify_tactic::imp {
void operator()(goal & g) { void operator()(goal & g) {
m_occs.reset(); m_occs.reset();
expr_ref_vector pinned(m);
m_occs(g); m_occs(g);
unsigned sz = g.size();
for (unsigned i = 0; i < sz; ++i) {
pinned.push_back(g.form(i));
}
m_num_steps = 0; m_num_steps = 0;
tactic_report report("ctx-simplify", g); tactic_report report("ctx-simplify", g);
if (g.proofs_enabled()) { if (g.proofs_enabled()) {
expr_ref r(m); expr_ref r(m);
unsigned sz = g.size();
for (unsigned i = 0; !g.inconsistent() && i < sz; ++i) { for (unsigned i = 0; !g.inconsistent() && i < sz; ++i) {
expr * t = g.form(i); expr * t = g.form(i);
process(t, r); process(t, r);