mirror of
https://github.com/Z3Prover/z3
synced 2025-04-06 17:44:08 +00:00
always reduce macro expansions in model evaluation #4588
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
094e41d21d
commit
9729db16a2
|
@ -390,6 +390,7 @@ struct default_rewriter_cfg {
|
|||
}
|
||||
bool reduce_var(var * t, expr_ref & result, proof_ref & result_pr) { return false; }
|
||||
bool get_macro(func_decl * d, expr * & def, quantifier * & q, proof * & def_pr) { return false; }
|
||||
bool reduce_macro() { return false; }
|
||||
bool get_subst(expr * s, expr * & t, proof * & t_pr) { return false; }
|
||||
void reset() {}
|
||||
void cleanup() {}
|
||||
|
|
|
@ -394,7 +394,7 @@ void rewriter_tpl<Config>::process_app(app * t, frame & fr) {
|
|||
SASSERT(!f->is_associative() || !flat_assoc(f));
|
||||
SASSERT(new_num_args == t->get_num_args());
|
||||
SASSERT(m().get_sort(def) == m().get_sort(t));
|
||||
if (is_ground(def)) {
|
||||
if (is_ground(def) && !m_cfg.reduce_macro()) {
|
||||
m_r = def;
|
||||
if (ProofGen) {
|
||||
m_pr = m().mk_transitivity(m_pr, def_pr);
|
||||
|
|
|
@ -296,6 +296,8 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
}
|
||||
}
|
||||
|
||||
bool reduce_macro() { return true; }
|
||||
|
||||
bool get_macro(func_decl * f, expr * & def, quantifier * & , proof * &) {
|
||||
func_interp * fi = m_model.get_func_interp(f);
|
||||
def = nullptr;
|
||||
|
|
Loading…
Reference in a new issue