mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
Cleanup derivation::create_next_child
This commit is contained in:
parent
c5ff5ac2a1
commit
da66ad6f80
1 changed files with 14 additions and 16 deletions
|
@ -191,8 +191,7 @@ void derivation::add_premise (pred_transformer &pt,
|
|||
|
||||
|
||||
|
||||
pob *derivation::create_first_child (model_evaluator_util &mev)
|
||||
{
|
||||
pob *derivation::create_first_child (model_evaluator_util &mev) {
|
||||
if (m_premises.empty()) { return nullptr; }
|
||||
m_active = 0;
|
||||
return create_next_child(mev);
|
||||
|
@ -262,9 +261,8 @@ pob *derivation::create_next_child (model_evaluator_util &mev)
|
|||
verbose_stream ());
|
||||
pt().mbp(vars, m_trans, mev.get_model(),
|
||||
true, pt().get_context().use_ground_cti());
|
||||
//qe::reduce_array_selects (*mev.get_model (), m_trans);
|
||||
// remember variables that need to be existentially quantified
|
||||
m_evars.append (vars);
|
||||
vars.reset();
|
||||
}
|
||||
|
||||
if (!mev.is_true (m_premises[m_active].get_summary())) {
|
||||
|
@ -273,28 +271,28 @@ pob *derivation::create_next_child (model_evaluator_util &mev)
|
|||
}
|
||||
|
||||
|
||||
// create the post condition by compute post-image over summaries
|
||||
// create the post-condition by computing a post-image over summaries
|
||||
// that precede currently active premise
|
||||
vars.reset ();
|
||||
for (unsigned i = m_active + 1; i < m_premises.size(); ++i) {
|
||||
summaries.push_back (m_premises [i].get_summary ());
|
||||
vars.append (m_premises [i].get_ovars ());
|
||||
}
|
||||
summaries.push_back (m_trans);
|
||||
|
||||
expr_ref post(m);
|
||||
post = mk_and (summaries);
|
||||
post = mk_and(summaries);
|
||||
summaries.reset ();
|
||||
|
||||
if (!vars.empty()) {
|
||||
timeit _timer2 (is_trace_enabled("spacer_timeit"),
|
||||
"create_next_child::qproject2",
|
||||
verbose_stream ());
|
||||
timeit _timer2(is_trace_enabled("spacer_timeit"),
|
||||
"create_next_child::qproject2",
|
||||
verbose_stream ());
|
||||
pt().mbp(vars, post, mev.get_model(),
|
||||
true, pt().get_context().use_ground_cti());
|
||||
//qe::reduce_array_selects (*mev.get_model (), post);
|
||||
|
||||
// remember variables that need to be existentially quantified
|
||||
m_evars.append (vars);
|
||||
m_evars.append(vars);
|
||||
vars.reset();
|
||||
}
|
||||
|
||||
if (!m_evars.empty()) {
|
||||
|
@ -649,6 +647,7 @@ void lemma::mk_insts(expr_ref_vector &out, expr* e)
|
|||
}
|
||||
|
||||
|
||||
|
||||
// ----------------
|
||||
// pred_tansformer
|
||||
|
||||
|
@ -3633,8 +3632,8 @@ bool context::create_children(pob& n, datalog::rule const& r,
|
|||
|
||||
compute_implicant_literals (mev, forms, lits);
|
||||
expr_ref phi = mk_and (lits);
|
||||
// primed variables of the head
|
||||
|
||||
// primed variables of the head
|
||||
app_ref_vector vars(m);
|
||||
for (unsigned i = 0, sz = pt.head()->get_arity(); i < sz; ++i) {
|
||||
vars.push_back(m.mk_const(m_pm.o2n(pt.sig(i), 0)));
|
||||
|
@ -3643,9 +3642,8 @@ bool context::create_children(pob& n, datalog::rule const& r,
|
|||
ptr_vector<app>& aux_vars = pt.get_aux_vars(r);
|
||||
vars.append(aux_vars.size(), aux_vars.c_ptr());
|
||||
|
||||
n.get_skolems(vars);
|
||||
n.get_skolems(vars);
|
||||
// skolems of the pob
|
||||
n.get_skolems(vars);
|
||||
|
||||
n.pt().mbp(vars, phi, mev.get_model (), true, use_ground_cti());
|
||||
//qe::reduce_array_selects (*mev.get_model (), phi1);
|
||||
|
@ -3666,10 +3664,10 @@ bool context::create_children(pob& n, datalog::rule const& r,
|
|||
kid_order.resize(preds.size(), 0);
|
||||
for (unsigned i = 0, sz = preds.size(); i < sz; ++i) kid_order[i] = i;
|
||||
if (get_params().spacer_order_children() == 1) kid_order.reverse();
|
||||
|
||||
for (unsigned i = 0, sz = preds.size(); i < sz; ++i) {
|
||||
unsigned j = kid_order[i];
|
||||
|
||||
|
||||
pred_transformer &pt = get_pred_transformer(preds.get(j));
|
||||
|
||||
const ptr_vector<app> *aux = nullptr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue