mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 19:52:29 +00:00 
			
		
		
		
	Polysat disjunctive lemmas (WIP) (#5275)
* Extend search state by boolean literals * Only resolve against positive equality * mk_dep_ref * Make clause non-owning * scoped_clause * Use scoped_clause * minor * scoped_ptr move assignment * WIP: internal handling of disjunctive constraints * leaf_value * disjunctive constraints continued * Fix bool_lit * Actually add constraints to storage * Some fixes * more fixes * constraint should have a bool_lit instead of a bool_var * propagate(bool_lit) * updates * interface changes * small fixes * Make sat::dimacs_lit's constructor explicit (otherwise, calling operator<< with sat::literal is ambiguous) * Use sat::literal * Print test name at the beginning * Convention: constraint corresponds to the positive boolean literal * Make constraint ownership more explicit * clause stores literals
This commit is contained in:
		
							parent
							
								
									49e9782238
								
							
						
					
					
						commit
						28996429df
					
				
					 24 changed files with 1196 additions and 360 deletions
				
			
		|  | @ -21,8 +21,8 @@ namespace polysat { | |||
|         pdd m_lhs; | ||||
|         pdd m_rhs; | ||||
|     public: | ||||
|         ule_constraint(unsigned lvl, bool_var bvar, csign_t sign, pdd const& l, pdd const& r, p_dependency_ref const& dep): | ||||
|             constraint(lvl, bvar, sign, dep, ckind_t::ule_t), m_lhs(l), m_rhs(r) { | ||||
|         ule_constraint(constraint_manager& m, unsigned lvl, csign_t sign, pdd const& l, pdd const& r, p_dependency_ref const& dep): | ||||
|             constraint(m, lvl, sign, dep, ckind_t::ule_t), m_lhs(l), m_rhs(r) { | ||||
|             m_vars.append(l.free_vars()); | ||||
|             for (auto v : r.free_vars()) | ||||
|                 if (!m_vars.contains(v)) | ||||
|  | @ -32,7 +32,7 @@ namespace polysat { | |||
|         pdd const& lhs() const { return m_lhs; } | ||||
|         pdd const& rhs() const { return m_rhs; } | ||||
|         std::ostream& display(std::ostream& out) const override; | ||||
|         constraint* resolve(solver& s, pvar v) override; | ||||
|         scoped_ptr<constraint> resolve(solver& s, pvar v) override; | ||||
|         bool is_always_false(pdd const& lhs, pdd const& rhs); | ||||
|         bool is_always_false() override; | ||||
|         bool is_currently_false(solver& s) override; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue