3
0
Fork 0
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:
Nikolaj Bjorner 2020-08-13 17:39:15 -07:00
parent 094e41d21d
commit 9729db16a2
3 changed files with 4 additions and 1 deletions

View file

@ -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() {}

View file

@ -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);

View file

@ -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;