3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-10 05:43:22 +00:00

re-organize proof and model converters to be associated with goals instead of external

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-11-18 16:33:54 -08:00
parent 00f5308a0e
commit 4bbece6616
118 changed files with 617 additions and 1070 deletions

View file

@ -528,7 +528,7 @@ expr_ref pred_transformer::get_cover_delta(func_decl* p_orig, int level)
md->register_decl(m_head, fi);
}
model_converter_ref mc = ctx.get_model_converter();
apply(mc, md, 0);
apply(mc, md);
if (p_orig->get_arity() == 0) {
result = md->get_const_interp(p_orig);
} else {
@ -1367,7 +1367,6 @@ void pred_transformer::frames::simplify_formulas ()
// normalize level
unsigned level = i < m_size ? i : infty_level ();
model_converter_ref mc;
expr_dependency_ref core(m);
goal_ref_buffer result;
@ -1394,7 +1393,7 @@ void pred_transformer::frames::simplify_formulas ()
}
// more than one lemma at current level. simplify.
(*simplifier)(g, result, mc, core);
(*simplifier)(g, result, core);
SASSERT(result.size () == 1);
goal *r = result[0];
@ -2062,8 +2061,8 @@ bool context::validate()
expr_ref_vector refs(m);
expr_ref tmp(m);
model_ref model;
vector<relation_info> rs;
model_converter_ref mc;
vector<relation_info> rs;
get_level_property(m_inductive_lvl, refs, rs);
inductive_property ex(m, mc, rs);
ex.to_model(model);

View file

@ -46,10 +46,9 @@ void pred_transformer::legacy_frames::simplify_formulas(tactic& tac,
ast_manager &m = m_pt.get_ast_manager();
goal_ref g(alloc(goal, m, false, false, false));
for (unsigned j = 0; j < v.size(); ++j) { g->assert_expr(v[j].get()); }
model_converter_ref mc;
expr_dependency_ref core(m);
goal_ref_buffer result;
tac(g, result, mc, core);
tac(g, result, core);
SASSERT(result.size() == 1);
goal* r = result[0];
v.reset();

View file

@ -113,7 +113,7 @@ void inductive_property::to_model(model_ref& md) const
}
}
TRACE("spacer", model_smt2_pp(tout, m, *md, 0););
apply(const_cast<model_converter_ref&>(m_mc), md, 0);
apply(const_cast<model_converter_ref&>(m_mc), md);
}
expr_ref inductive_property::to_expr() const

View file

@ -929,11 +929,10 @@ void simplify_bounds_old(expr_ref_vector& cube) {
}
expr_ref tmp(m);
model_converter_ref mc;
expr_dependency_ref core(m);
goal_ref_buffer result;
tactic_ref simplifier = mk_arith_bounds_tactic(m);
(*simplifier)(g, result, mc, core);
(*simplifier)(g, result, core);
SASSERT(result.size() == 1);
goal* r = result[0];
@ -954,14 +953,13 @@ void simplify_bounds_new (expr_ref_vector &cube) {
g->assert_expr(cube.get(i));
}
model_converter_ref mc;
expr_dependency_ref dep(m);
goal_ref_buffer goals;
tactic_ref prop_values = mk_propagate_values_tactic(m);
tactic_ref prop_bounds = mk_propagate_ineqs_tactic(m);
tactic_ref t = and_then(prop_values.get(), prop_bounds.get());
(*t)(g, goals, mc, dep);
(*t)(g, goals, dep);
SASSERT(goals.size() == 1);
g = goals[0];