mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	close entire tree when sibling resolvent is empty
This commit is contained in:
		
							parent
							
								
									5143ba0118
								
							
						
					
					
						commit
						f75d137911
					
				
					 1 changed files with 5 additions and 10 deletions
				
			
		|  | @ -211,12 +211,11 @@ namespace search_tree { | |||
| 
 | ||||
|               auto resolvent = compute_sibling_resolvent(left, right); | ||||
| 
 | ||||
|               // empty resolvent → subtree is UNSAT
 | ||||
|               // empty resolvent of sibling complement (i.e. tautology) -> global UNSAT
 | ||||
|               if (resolvent.empty()) { | ||||
|                   p->set_core(resolvent); // empty core
 | ||||
|                   close_node(p); | ||||
|                   p = p->parent(); | ||||
|                   continue; | ||||
|                   m_root->set_core(resolvent); | ||||
|                   close_node(m_root.get()); | ||||
|                   return; | ||||
|               } | ||||
| 
 | ||||
|               // if p already has the same core, nothing more to do
 | ||||
|  | @ -288,12 +287,8 @@ namespace search_tree { | |||
|         // they are a subset of literals on the path from root to n
 | ||||
|         void backtrack(node<Config>* n, vector<literal> const& conflict) { | ||||
|             if (conflict.empty()) { | ||||
|                 m_root->set_core(conflict); | ||||
|                 close_node(m_root.get()); | ||||
|                 m_root->set_status(status::closed); | ||||
|                  | ||||
|                 // store empty core at root to signal global unsat if you like
 | ||||
|                 m_root->set_core(vector<literal>()); // optional
 | ||||
|                  | ||||
|                 return; | ||||
|             }            | ||||
|             SASSERT(n != m_root.get()); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue