mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	#6364 - remove option of redundant clauses from internalization
gc-ing definitions leads to unsoundness when they are not replayed. Instead of attempting to replay definitions theory internalization is irredundant by default. This is also the old solver behavior where TH_LEMMA is essentially never used, but is valid for top-level theory lemmas.
This commit is contained in:
		
							parent
							
								
									c8e1e180ea
								
							
						
					
					
						commit
						5c7eaec566
					
				
					 29 changed files with 133 additions and 147 deletions
				
			
		|  | @ -804,8 +804,8 @@ namespace dt { | |||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     sat::literal solver::internalize(expr* e, bool sign, bool root, bool redundant) { | ||||
|         if (!visit_rec(m, e, sign, root, redundant))  | ||||
|     sat::literal solver::internalize(expr* e, bool sign, bool root) { | ||||
|         if (!visit_rec(m, e, sign, root))  | ||||
|             return sat::null_literal;         | ||||
|         auto lit = ctx.expr2literal(e); | ||||
|         if (sign) | ||||
|  | @ -813,15 +813,15 @@ namespace dt { | |||
|         return lit; | ||||
|     } | ||||
| 
 | ||||
|     void solver::internalize(expr* e, bool redundant) { | ||||
|         visit_rec(m, e, false, false, redundant); | ||||
|     void solver::internalize(expr* e) { | ||||
|         visit_rec(m, e, false, false); | ||||
|     } | ||||
| 
 | ||||
|     bool solver::visit(expr* e) { | ||||
|         if (visited(e)) | ||||
|             return true; | ||||
|         if (!is_app(e) || to_app(e)->get_family_id() != get_id()) { | ||||
|             ctx.internalize(e, m_is_redundant); | ||||
|             ctx.internalize(e); | ||||
|             if (is_datatype(e)) | ||||
|                 mk_var(expr2enode(e)); | ||||
|             return true; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue