mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Rotate first entry for refinement
This commit is contained in:
		
							parent
							
								
									86a36a524a
								
							
						
					
					
						commit
						e5b142b265
					
				
					 1 changed files with 8 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -308,6 +308,10 @@ namespace polysat {
 | 
			
		|||
        rational const& max_value = s.var2pdd(v).max_value();
 | 
			
		||||
        rational mod_value = max_value + 1;
 | 
			
		||||
 | 
			
		||||
        // Rotate the 'first' entry, to prevent getting stuck in a refinement loop
 | 
			
		||||
        // with an early entry when a later entry could give a better interval.
 | 
			
		||||
        m_equal_lin[v] = m_equal_lin[v]->next();
 | 
			
		||||
 | 
			
		||||
        auto delta_l = [&](rational const& coeff_val) {
 | 
			
		||||
            return floor((coeff_val - e->interval.lo_val()) / e->coeff);
 | 
			
		||||
        };
 | 
			
		||||
| 
						 | 
				
			
			@ -418,6 +422,10 @@ namespace polysat {
 | 
			
		|||
        rational const& max_value = s.var2pdd(v).max_value();
 | 
			
		||||
        rational const mod_value = max_value + 1;
 | 
			
		||||
 | 
			
		||||
        // Rotate the 'first' entry, to prevent getting stuck in a refinement loop
 | 
			
		||||
        // with an early entry when a later entry could give a better interval.
 | 
			
		||||
        m_diseq_lin[v] = m_diseq_lin[v]->next();
 | 
			
		||||
 | 
			
		||||
        do {
 | 
			
		||||
            LOG("refine-disequal-lin for src: " << e->src);
 | 
			
		||||
            // We compute an interval if the concrete value 'val' violates the constraint:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue