mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	another bug fix
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									caef8d026f
								
							
						
					
					
						commit
						adf41c5d02
					
				
					 2 changed files with 7 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -141,7 +141,7 @@ namespace polysat {
 | 
			
		|||
        SASSERT(well_formed(m_viable[v]));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool viable::has_viable(pvar v) { 
 | 
			
		||||
    bool viable::has_viable(pvar v) {         
 | 
			
		||||
        auto* e = m_viable[v];
 | 
			
		||||
        if (!e)
 | 
			
		||||
            return true;
 | 
			
		||||
| 
						 | 
				
			
			@ -150,17 +150,16 @@ namespace polysat {
 | 
			
		|||
 | 
			
		||||
        // quick check: last interval doesn't wrap around, so hi_val
 | 
			
		||||
        // has not been covered
 | 
			
		||||
        if (last->interval.lo_val() < last->interval.hi_val())
 | 
			
		||||
            return true;
 | 
			
		||||
 | 
			
		||||
        auto const& max_value = s.var2pdd(v).max_value();
 | 
			
		||||
        if (last->interval.lo_val() < last->interval.hi_val()) 
 | 
			
		||||
            return true;        
 | 
			
		||||
        
 | 
			
		||||
        do {
 | 
			
		||||
            if (e->interval.is_full())
 | 
			
		||||
                return false;
 | 
			
		||||
            entry* n = e->next();
 | 
			
		||||
            if (n == e)
 | 
			
		||||
                return true;
 | 
			
		||||
            if (e->interval.hi_val() < n->interval.lo_val())
 | 
			
		||||
            if (!n->interval.currently_contains(e->interval.hi_val()))
 | 
			
		||||
                return true;
 | 
			
		||||
            if (n == first)
 | 
			
		||||
                return e->interval.lo_val() <= e->interval.hi_val();
 | 
			
		||||
| 
						 | 
				
			
			@ -276,6 +275,7 @@ namespace polysat {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    bool viable::resolve(pvar v, conflict& core) {
 | 
			
		||||
        std::cout << "resolve " << v << "\n";
 | 
			
		||||
        if (has_viable(v))
 | 
			
		||||
            return false;
 | 
			
		||||
        auto* e = m_viable[v];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1068,6 +1068,7 @@ namespace polysat {
 | 
			
		|||
void tst_polysat() {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    polysat::test_ineq_basic6();
 | 
			
		||||
            
 | 
			
		||||
    // polysat::test_monot_bounds(8);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue