mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	more stub
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									8730f0aef7
								
							
						
					
					
						commit
						2e4b1fb5e0
					
				
					 2 changed files with 19 additions and 12 deletions
				
			
		|  | @ -102,10 +102,6 @@ namespace polysat { | |||
|     } | ||||
| 
 | ||||
|     void solver::add_eq(pdd const& p, unsigned dep) { | ||||
|         //
 | ||||
|         // TODO reduce p using assignment (at current level, 
 | ||||
|         // assuming constraint is removed also at current level).
 | ||||
|         // 
 | ||||
|         constraint* c = constraint::eq(m_level, p, m_dep_manager.mk_leaf(dep)); | ||||
|         m_constraints.push_back(c); | ||||
|         add_watch(*c); | ||||
|  | @ -370,8 +366,7 @@ namespace polysat { | |||
|             v = m_search[i]; | ||||
|             if (!is_marked(v)) | ||||
|                 continue; | ||||
|             pdd q = isolate(v); | ||||
|             pdd r = resolve(v, q, p); | ||||
|             pdd r = resolve(v, p); | ||||
|             pdd rval = r.subst_val(sub); | ||||
|             if (!rval.is_non_zero()) | ||||
|                 goto backtrack; | ||||
|  | @ -426,8 +421,9 @@ namespace polysat { | |||
|     pdd solver::isolate(unsigned v) { | ||||
|         if (m_cjust[v].empty())  | ||||
|             return sz2pdd(m_size[v]).zero(); | ||||
|         pdd p = m_cjust[v][0]->p(); | ||||
|         for (unsigned i = m_cjust[v].size(); i-- > 1; ) { | ||||
|         auto const& cs = m_cjust[v]; | ||||
|         pdd p = cs[0]->p(); | ||||
|         for (unsigned i = cs.size(); i-- > 1; ) { | ||||
|             // TBD reduce with respect to v
 | ||||
|         } | ||||
|         return p; | ||||
|  | @ -436,9 +432,20 @@ namespace polysat { | |||
|     /**
 | ||||
|      * Return residue of superposing p and q with respect to v. | ||||
|      */ | ||||
|     pdd solver::resolve(unsigned v, pdd const& p, pdd const& q) { | ||||
|         // TBD remove as much trace of v as possible.
 | ||||
|         return p; | ||||
|     pdd solver::resolve(unsigned v, pdd const& p) { | ||||
|         auto degree = p.degree(v); | ||||
|         auto const& cs = m_cjust[v]; | ||||
|         pdd r = p; | ||||
|         while (degree > 0) { | ||||
|             for (auto * c : cs) { | ||||
|                 if (degree >= c->p().degree(v)) { | ||||
|                     // TODO binary resolve, update r using result
 | ||||
|                     // add parity condition to presere falsification
 | ||||
|                     degree = r.degree(v); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return r; | ||||
|     } | ||||
|      | ||||
|     void solver::reset_marks() { | ||||
|  |  | |||
|  | @ -167,7 +167,7 @@ namespace polysat { | |||
|         void set_mark(unsigned v) { m_marks[v] = m_clock; } | ||||
| 
 | ||||
|         pdd isolate(unsigned v); | ||||
|         pdd resolve(unsigned v, pdd const& p, pdd const& q); | ||||
|         pdd resolve(unsigned v, pdd const& p); | ||||
|         void decide(); | ||||
|         void resolve_conflict_core();             | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue