mirror of
https://github.com/Z3Prover/z3
synced 2025-11-05 13:56:03 +00:00
parent
8290cfadcc
commit
3eefd18c58
5 changed files with 38 additions and 46 deletions
|
|
@ -121,7 +121,8 @@ bool macro_manager::insert(func_decl * f, quantifier * q, proof * pr, expr_depen
|
|||
m_macros.push_back(q);
|
||||
if (m.proofs_enabled()) {
|
||||
m_macro_prs.push_back(pr);
|
||||
m_decl2macro_pr.insert(f, pr);
|
||||
m_decl2macro_pr.insert(f, pr);
|
||||
SASSERT(m.get_fact(pr) == q);
|
||||
}
|
||||
m_macro_deps.push_back(dep);
|
||||
m_decl2macro_dep.insert(f, dep);
|
||||
|
|
@ -274,8 +275,7 @@ struct macro_manager::macro_expander_cfg : public default_rewriter_cfg {
|
|||
quantifier * q = nullptr;
|
||||
func_decl * d = n->get_decl();
|
||||
TRACE("macro_manager", tout << "trying to expand:\n" << mk_pp(n, m) << "\nd:\n" << d->get_name() << "\n";);
|
||||
if (mm.m_decl2macro.find(d, q)) {
|
||||
|
||||
if (mm.m_decl2macro.find(d, q)) {
|
||||
app * head = nullptr;
|
||||
expr * def = nullptr;
|
||||
bool revert = false;
|
||||
|
|
@ -300,9 +300,7 @@ struct macro_manager::macro_expander_cfg : public default_rewriter_cfg {
|
|||
if (m.proofs_enabled()) {
|
||||
expr_ref instance = s(q->get_expr(), num, subst_args.c_ptr());
|
||||
proof * qi_pr = m.mk_quant_inst(m.mk_or(m.mk_not(q), instance), num, subst_args.c_ptr());
|
||||
proof * q_pr = nullptr;
|
||||
mm.m_decl2macro_pr.find(d, q_pr);
|
||||
SASSERT(q_pr);
|
||||
proof * q_pr = mm.m_decl2macro_pr.find(d);
|
||||
proof * prs[2] = { qi_pr, q_pr };
|
||||
p = m.mk_unit_resolution(2, prs);
|
||||
if (revert) p = m.mk_symmetry(p);
|
||||
|
|
@ -352,6 +350,7 @@ void macro_manager::expand_macros(expr * n, proof * pr, expr_dependency * dep, e
|
|||
old_pr = new_pr;
|
||||
old_dep = new_dep;
|
||||
change = true;
|
||||
SASSERT(!new_pr || m.get_fact(new_pr) == r);
|
||||
}
|
||||
// apply th_rewrite to the result.
|
||||
if (change) {
|
||||
|
|
@ -360,6 +359,7 @@ void macro_manager::expand_macros(expr * n, proof * pr, expr_dependency * dep, e
|
|||
expr_ref r1(r, m);
|
||||
rw(r1, r, rw_pr);
|
||||
new_pr = m.mk_modus_ponens(new_pr, rw_pr);
|
||||
SASSERT(!new_pr || m.get_fact(new_pr) == r);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -367,5 +367,7 @@ void macro_manager::expand_macros(expr * n, proof * pr, expr_dependency * dep, e
|
|||
new_pr = pr;
|
||||
new_dep = dep;
|
||||
}
|
||||
|
||||
SASSERT(!new_pr || m.get_fact(new_pr) == r);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue