mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	significant update to Horn routines: add module hnf to extract Horn normal form (removed from rule_manager). Associate proof objects with rules to track (all) rewrites, so that proof traces can be tracked back to original rules after transformations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									e73c06a8b0
								
							
						
					
					
						commit
						26f4d3be20
					
				
					 60 changed files with 591 additions and 428 deletions
				
			
		|  | @ -42,29 +42,20 @@ namespace datalog { | |||
|                 if (m_unify.unify_rules(r, tail_idx, r2) && | ||||
|                     m_unify.apply(r, tail_idx, r2, new_rule)) { | ||||
|                     expr_ref_vector s1 = m_unify.get_rule_subst(r, true); | ||||
|                     expr_ref_vector s2 = m_unify.get_rule_subst(r2, false); | ||||
|                     resolve_rule(m_pc, r, r2, tail_idx, s1, s2, *new_rule.get()); | ||||
|                     expr_ref_vector s2 = m_unify.get_rule_subst(r2, false);                     | ||||
|                     resolve_rule(r, r2, tail_idx, s1, s2, *new_rule.get()); | ||||
|                     expand_tail(*new_rule.get(), tail_idx+r2.get_uninterpreted_tail_size(), src, dst); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|          | ||||
|     rule_set * mk_unfold::operator()(rule_set const & source, model_converter_ref& mc, proof_converter_ref& pc) { | ||||
|         m_pc = 0; | ||||
|         ref<replace_proof_converter> rpc; | ||||
|         if (pc) { | ||||
|             rpc = alloc(replace_proof_converter, m); | ||||
|             m_pc = rpc.get(); | ||||
|         } | ||||
|     rule_set * mk_unfold::operator()(rule_set const & source, model_converter_ref& mc) { | ||||
|         rule_set* rules = alloc(rule_set, m_ctx); | ||||
|         rule_set::iterator it = source.begin(), end = source.end(); | ||||
|         for (; it != end; ++it) { | ||||
|             expand_tail(**it, 0, source, *rules); | ||||
|         } | ||||
|         if (pc) { | ||||
|             pc = concat(pc.get(), rpc.get()); | ||||
|         } | ||||
|         return rules; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue