mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	add propagation rule for strict inequality to force univariate polynomials
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									317edb2b03
								
							
						
					
					
						commit
						ef811a3dd8
					
				
					 2 changed files with 11 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -426,6 +426,8 @@ namespace polysat {
 | 
			
		|||
        signed_constraint ult(pdd const& p, pdd const& q) { return m_constraints.ult(p, q); }
 | 
			
		||||
        signed_constraint ult(pdd const& p, rational const& q) { return ult(p, p.manager().mk_val(q)); }
 | 
			
		||||
        signed_constraint ult(rational const& p, pdd const& q) { return ult(q.manager().mk_val(p), q); }
 | 
			
		||||
        signed_constraint ult(int p, pdd const& q) { return ult(rational(p), q); }
 | 
			
		||||
        signed_constraint ult(pdd const& p, int q) { return ult(p, rational(q)); }
 | 
			
		||||
        signed_constraint sle(pdd const& p, pdd const& q) { return m_constraints.sle(p, q); }
 | 
			
		||||
        signed_constraint slt(pdd const& p, pdd const& q) { return m_constraints.slt(p, q); }
 | 
			
		||||
        signed_constraint slt(pdd const& p, rational const& q) { return slt(p, p.manager().mk_val(q)); }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -200,6 +200,15 @@ namespace polysat {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        s.m_viable.intersect(p, q, sc);
 | 
			
		||||
 | 
			
		||||
        if (first && !is_positive) {
 | 
			
		||||
            if (!p.is_val()) 
 | 
			
		||||
                // -1 > q
 | 
			
		||||
                s.add_clause(~sc, s.ult(q, -1), false);
 | 
			
		||||
            if (!q.is_val())
 | 
			
		||||
                // p > 0
 | 
			
		||||
                s.add_clause(~sc, s.ult(0, q), false);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Evaluate lhs <= rhs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue