3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-05 10:50:24 +00:00

working on card

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-01-18 15:40:39 -08:00
parent e1640fcee9
commit 238e85867a
2 changed files with 185 additions and 83 deletions

View file

@ -324,6 +324,7 @@ namespace smt {
unsigned_vector m_card_lim;
bool is_cardinality_constraint(app * atom);
bool internalize_card(app * atom, bool gate_ctx);
void card2conjunction(card const& c);
void watch_literal(literal lit, card* c);
void unwatch_literal(literal w, card* c);
@ -367,20 +368,22 @@ namespace smt {
unsigned m_num_marks;
unsigned_vector m_resolved;
unsigned m_conflict_lvl;
// Conflict PB constraints
svector<int> m_coeffs;
svector<bool_var> m_active_coeffs;
int m_bound;
literal_vector m_antecedents;
uint_set m_seen;
void normalize_active_coeffs();
void inc_coeff(literal l, int offset);
int get_coeff(bool_var v) const;
int get_abs_coeff(bool_var v) const;
int get_abs_coeff(bool_var v) const;
int arg_max(uint_set& seen, int& coeff);
void reset_coeffs();
literal cardinality_reduction();
literal cardinality_reduction(card*& c);
bool resolve_conflict(card& c, literal_vector const& conflict_clause);
void process_antecedent(literal l, int offset);