mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Simplify boolean propagation level
This commit is contained in:
		
							parent
							
								
									27d65df70b
								
							
						
					
					
						commit
						abc4cc5295
					
				
					 3 changed files with 2 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -77,16 +77,6 @@ namespace polysat {
 | 
			
		|||
        return out.str();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    unsigned constraint::level(solver& s) const {
 | 
			
		||||
        if (s.m_bvars.value(sat::literal(bvar())) != l_undef)
 | 
			
		||||
            return s.m_bvars.level(bvar());
 | 
			
		||||
        unsigned level = s.base_level();
 | 
			
		||||
        for (auto v : vars())
 | 
			
		||||
            if (s.is_assigned(v))
 | 
			
		||||
                level = std::max(level, s.get_level(v));
 | 
			
		||||
        return level;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    lbool signed_constraint::bvalue(solver& s) const {
 | 
			
		||||
        return get()->has_bvar() ? s.m_bvars.value(blit()) : l_undef;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -108,7 +108,6 @@ namespace polysat {
 | 
			
		|||
        bool contains_var(pvar v) const { return m_vars.contains(v); }
 | 
			
		||||
        sat::bool_var bvar() const { SASSERT(has_bvar()); return m_bvar; }
 | 
			
		||||
        std::string bvar2string() const;
 | 
			
		||||
        unsigned level(solver& s) const;
 | 
			
		||||
 | 
			
		||||
        void set_external(bool sign) { m_external_sign = to_lbool(sign); }
 | 
			
		||||
        void unset_external() { m_external_sign = l_undef; }
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +158,6 @@ namespace polysat {
 | 
			
		|||
        bool is_currently_false(solver& s, assignment_t const& sub) const { return get()->is_currently_false(s, sub, is_positive()); }
 | 
			
		||||
        bool is_currently_true(solver& s, assignment_t const& sub) const { return get()->is_currently_false(s, sub, is_negative()); }
 | 
			
		||||
        lbool bvalue(solver& s) const;
 | 
			
		||||
        unsigned level(solver& s) const { return get()->level(s); }
 | 
			
		||||
        void narrow(solver& s, bool first) { get()->narrow(s, is_positive(), first); }
 | 
			
		||||
        inequality as_inequality() const { return get()->as_inequality(is_positive()); }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -936,9 +936,8 @@ namespace polysat {
 | 
			
		|||
        for (auto lit : cl) {
 | 
			
		||||
            if (lit == lit0)
 | 
			
		||||
                continue;
 | 
			
		||||
            auto c = lit2cnstr(lit);
 | 
			
		||||
            if (m_bvars.is_false(lit) || c.is_currently_false(*this))
 | 
			
		||||
                lvl = std::max(lvl, c.level(*this));
 | 
			
		||||
            SASSERT(m_bvars.is_false(lit));
 | 
			
		||||
            lvl = std::max(lvl, m_bvars.level(lit));
 | 
			
		||||
        }
 | 
			
		||||
        return lvl;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue