mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +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
					
				
					 3 changed files with 4 additions and 1 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue