mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	lit_pp with extra information
This commit is contained in:
		
							parent
							
								
									618b3945c1
								
							
						
					
					
						commit
						201d841a90
					
				
					 2 changed files with 23 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -920,7 +920,7 @@ namespace polysat {
 | 
			
		|||
    void solver::add_clause(clause& clause) {
 | 
			
		||||
        LOG((clause.is_redundant() ? "Lemma: ": "Aux: ") << clause);
 | 
			
		||||
        for (sat::literal lit : clause) {
 | 
			
		||||
            LOG("   Literal " << lit << " is: " << lit2cnstr(lit));
 | 
			
		||||
            LOG("   Literal " << lit << " is: " << lit_pp(*this, lit));
 | 
			
		||||
            // SASSERT(m_bvars.value(lit) != l_true);
 | 
			
		||||
            // it could be that such a literal has been created previously but we don't detect it when e.g. narrowing a mul_ovfl_constraint
 | 
			
		||||
            if (m_bvars.value(lit) == l_true) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1046,6 +1046,17 @@ namespace polysat {
 | 
			
		|||
        return out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::ostream& lit_pp::display(std::ostream& out) const {
 | 
			
		||||
        auto c = s.lit2cnstr(lit);
 | 
			
		||||
        out << lit << ": " << c << "  [";
 | 
			
		||||
        out << " bvalue=" << s.m_bvars.value(lit);
 | 
			
		||||
        if (s.m_bvars.is_assigned(lit))
 | 
			
		||||
            out << " @" << s.m_bvars.level(lit);
 | 
			
		||||
        out << " pwatched=" << c->is_pwatched();
 | 
			
		||||
        out << "  ]";
 | 
			
		||||
        return out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::ostream& num_pp::display(std::ostream& out) const {
 | 
			
		||||
        rational const& p = rational::power_of_two(s.size(var));
 | 
			
		||||
        if (val > mod(-val, p))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,6 +80,7 @@ namespace polysat {
 | 
			
		|||
        friend class viable_fallback;
 | 
			
		||||
        friend class search_state;
 | 
			
		||||
        friend class num_pp;
 | 
			
		||||
        friend class lit_pp;
 | 
			
		||||
        friend class assignment_pp;
 | 
			
		||||
        friend class assignments_pp;
 | 
			
		||||
        friend class ex_polynomial_superposition;
 | 
			
		||||
| 
						 | 
				
			
			@ -420,6 +421,14 @@ namespace polysat {
 | 
			
		|||
        std::ostream& display(std::ostream& out) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class lit_pp {
 | 
			
		||||
        solver const& s;
 | 
			
		||||
        sat::literal lit;
 | 
			
		||||
    public:
 | 
			
		||||
        lit_pp(solver const& s, sat::literal lit): s(s), lit(lit) {}
 | 
			
		||||
        std::ostream& display(std::ostream& out) const;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    /** Format value 'val' as member of the domain of 'var' */
 | 
			
		||||
    class num_pp {
 | 
			
		||||
        solver const& s;
 | 
			
		||||
| 
						 | 
				
			
			@ -434,6 +443,8 @@ namespace polysat {
 | 
			
		|||
 | 
			
		||||
    inline std::ostream& operator<<(std::ostream& out, num_pp const& v) { return v.display(out); }
 | 
			
		||||
 | 
			
		||||
    inline std::ostream& operator<<(std::ostream& out, lit_pp const& l) { return l.display(out); }
 | 
			
		||||
 | 
			
		||||
    inline std::ostream& operator<<(std::ostream& out, assignment_pp const& p) { return p.display(out); }
 | 
			
		||||
 | 
			
		||||
    inline std::ostream& operator<<(std::ostream& out, assignments_pp const& a) { return a.display(out); }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue