3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-04 06:15:46 +00:00

u256, separate viable_set

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-07-04 23:47:12 -07:00
parent aeec3bb6df
commit 04ce8ca5ef
18 changed files with 374 additions and 167 deletions

View file

@ -7,9 +7,15 @@ Module Name:
Author:
Nikolaj Bjorner (nbjorner) 2021-03-19
Jakob Rath 2021-04-6
Notes:
Builds a clause from literals and constraints.
Takes care to
- resolve with unit clauses and accumulate their dependencies,
- skip trivial new constraints such as "4 <= 1".
--*/
#pragma once
#include "math/polysat/constraint.h"
@ -17,16 +23,12 @@ Author:
namespace polysat {
/// Builds a clause from literals and constraints.
/// Takes care to
/// - resolve with unit clauses and accumulate their dependencies,
/// - skip trivial new constraints such as "4 <= 1".
class clause_builder {
solver& m_solver;
sat::literal_vector m_literals;
solver& m_solver;
sat::literal_vector m_literals;
constraint_ref_vector m_new_constraints;
p_dependency_ref m_dep;
unsigned m_level = 0;
p_dependency_ref m_dep;
unsigned m_level = 0;
public:
clause_builder(solver& s);
@ -42,6 +44,7 @@ namespace polysat {
/// Add a literal to the clause.
/// Intended to be used for literals representing a constraint that already exists.
void push_literal(sat::literal lit);
/// Add a constraint to the clause that does not yet exist in the solver so far.
void push_new_constraint(constraint_literal c);
};