mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32: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) { |     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)); |         constraint* c = constraint::eq(m_level, p, m_dep_manager.mk_leaf(dep)); | ||||||
|         m_constraints.push_back(c); |         m_constraints.push_back(c); | ||||||
|         add_watch(*c); |         add_watch(*c); | ||||||
|  | @ -370,8 +366,7 @@ namespace polysat { | ||||||
|             v = m_search[i]; |             v = m_search[i]; | ||||||
|             if (!is_marked(v)) |             if (!is_marked(v)) | ||||||
|                 continue; |                 continue; | ||||||
|             pdd q = isolate(v); |             pdd r = resolve(v, p); | ||||||
|             pdd r = resolve(v, q, p); |  | ||||||
|             pdd rval = r.subst_val(sub); |             pdd rval = r.subst_val(sub); | ||||||
|             if (!rval.is_non_zero()) |             if (!rval.is_non_zero()) | ||||||
|                 goto backtrack; |                 goto backtrack; | ||||||
|  | @ -426,8 +421,9 @@ namespace polysat { | ||||||
|     pdd solver::isolate(unsigned v) { |     pdd solver::isolate(unsigned v) { | ||||||
|         if (m_cjust[v].empty())  |         if (m_cjust[v].empty())  | ||||||
|             return sz2pdd(m_size[v]).zero(); |             return sz2pdd(m_size[v]).zero(); | ||||||
|         pdd p = m_cjust[v][0]->p(); |         auto const& cs = m_cjust[v]; | ||||||
|         for (unsigned i = m_cjust[v].size(); i-- > 1; ) { |         pdd p = cs[0]->p(); | ||||||
|  |         for (unsigned i = cs.size(); i-- > 1; ) { | ||||||
|             // TBD reduce with respect to v
 |             // TBD reduce with respect to v
 | ||||||
|         } |         } | ||||||
|         return p; |         return p; | ||||||
|  | @ -436,9 +432,20 @@ namespace polysat { | ||||||
|     /**
 |     /**
 | ||||||
|      * Return residue of superposing p and q with respect to v. |      * Return residue of superposing p and q with respect to v. | ||||||
|      */ |      */ | ||||||
|     pdd solver::resolve(unsigned v, pdd const& p, pdd const& q) { |     pdd solver::resolve(unsigned v, pdd const& p) { | ||||||
|         // TBD remove as much trace of v as possible.
 |         auto degree = p.degree(v); | ||||||
|         return p; |         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() { |     void solver::reset_marks() { | ||||||
|  |  | ||||||
|  | @ -167,7 +167,7 @@ namespace polysat { | ||||||
|         void set_mark(unsigned v) { m_marks[v] = m_clock; } |         void set_mark(unsigned v) { m_marks[v] = m_clock; } | ||||||
| 
 | 
 | ||||||
|         pdd isolate(unsigned v); |         pdd isolate(unsigned v); | ||||||
|         pdd resolve(unsigned v, pdd const& p, pdd const& q); |         pdd resolve(unsigned v, pdd const& p); | ||||||
|         void decide(); |         void decide(); | ||||||
|         void resolve_conflict_core();             |         void resolve_conflict_core();             | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue