mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*++
 | |
| Copyright (c) 2020 Microsoft Corporation
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|     q_clause.cpp
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
|     Clause and literals
 | |
| 
 | |
| Author:
 | |
| 
 | |
|     Nikolaj Bjorner (nbjorner) 2021-01-24
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #include "sat/smt/q_clause.h"
 | |
| 
 | |
| 
 | |
| namespace q {
 | |
| 
 | |
|     std::ostream& lit::display(std::ostream& out) const {
 | |
|         ast_manager& m = lhs.m();
 | |
|         if (m.is_true(rhs) && !sign) 
 | |
|             return out << lhs;
 | |
|         if (m.is_false(rhs) && !sign) 
 | |
|             return out << "(not " << lhs << ")";
 | |
|         return 
 | |
|             out << mk_bounded_pp(lhs, m, 2) 
 | |
|                 << (sign ? " != " : " == ") 
 | |
|                 << mk_bounded_pp(rhs, m, 2);
 | |
|     }
 | |
| 
 | |
|     std::ostream& binding::display(euf::solver& ctx, std::ostream& out) const {
 | |
|         for (unsigned i = 0; i < size(); ++i) 
 | |
|             out << ctx.bpp((*this)[i]) << " ";
 | |
|         return out;
 | |
|     }
 | |
| 
 | |
|     std::ostream& clause::display(euf::solver& ctx, std::ostream& out) const {
 | |
|         out << "clause:\n";
 | |
|         for (auto const& lit : m_lits)
 | |
|             lit.display(out) << "\n";
 | |
|         binding* b = m_bindings;
 | |
|         if (!b)
 | |
|             return out;
 | |
|         do {
 | |
|             b->display(ctx, out) << "\n";
 | |
|             b = b->next();
 | |
|         } 
 | |
|         while (b != m_bindings);
 | |
|         return out;
 | |
|     }
 | |
| 
 | |
| 
 | |
| }
 |