mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	fix #6686
This commit is contained in:
		
							parent
							
								
									eba0732629
								
							
						
					
					
						commit
						f0afbcbb87
					
				
					 2 changed files with 11 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -72,6 +72,7 @@ public:
 | 
			
		|||
    void set_upper_is_open(interval & a, bool v) { a.m_upper_open = v; }
 | 
			
		||||
    void set_lower_is_inf(interval & a, bool v) { a.m_lower_inf = v; }
 | 
			
		||||
    void set_upper_is_inf(interval & a, bool v) { a.m_upper_inf = v; }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    // Reference to numeral manager
 | 
			
		||||
    numeral_manager & m() const { return m_manager; }
 | 
			
		||||
| 
						 | 
				
			
			@ -184,6 +185,14 @@ public:
 | 
			
		|||
    bool upper_is_open(interval const & a) const { return m_c.upper_is_open(a); }
 | 
			
		||||
    bool lower_is_inf(interval const & a) const { return m_c.lower_is_inf(a); }
 | 
			
		||||
    bool upper_is_inf(interval const & a) const { return m_c.upper_is_inf(a); }
 | 
			
		||||
    bool is_empty(interval const& a) const {
 | 
			
		||||
        if (lower_is_inf(a) || upper_is_inf(a))
 | 
			
		||||
            return false;
 | 
			
		||||
        ext_numeral_kind lk = lower_kind(a), uk = upper_kind(a);
 | 
			
		||||
        if (lower_is_open(a) || upper_is_open(a))
 | 
			
		||||
            return !(::lt(m(), lower(a), lk, upper(a), uk));
 | 
			
		||||
        return ::lt(m(), upper(a), uk, lower(a), lk);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    bool lower_is_neg(interval const & a) const { return ::is_neg(m(), lower(a), lower_kind(a)); }
 | 
			
		||||
    bool lower_is_pos(interval const & a) const { return ::is_pos(m(), lower(a), lower_kind(a)); }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -681,7 +681,7 @@ void interval_manager<C>::set(interval & t, interval const & s) {
 | 
			
		|||
    }
 | 
			
		||||
    set_lower_is_open(t, lower_is_open(s));
 | 
			
		||||
    set_upper_is_open(t, upper_is_open(s));
 | 
			
		||||
    SASSERT(check_invariant(t));
 | 
			
		||||
    SASSERT(is_empty(t) || check_invariant(t));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<typename C>
 | 
			
		||||
| 
						 | 
				
			
			@ -813,7 +813,7 @@ void interval_manager<C>::add(interval const & a, interval const & b, interval &
 | 
			
		|||
    set_upper_is_inf(c, new_u_kind == EN_PLUS_INFINITY);
 | 
			
		||||
    set_lower_is_open(c, lower_is_open(a) || lower_is_open(b));
 | 
			
		||||
    set_upper_is_open(c, upper_is_open(a) || upper_is_open(b));
 | 
			
		||||
    SASSERT(check_invariant(c));
 | 
			
		||||
    SASSERT(is_empty(a) || is_empty(b) || check_invariant(c));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<typename C>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue