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

update conflict resolution for cardinality case

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-12-28 12:44:30 -08:00
parent e36eba1168
commit cb6c6332b3
6 changed files with 189 additions and 328 deletions

View file

@ -225,7 +225,7 @@ namespace smt {
bool validate_assign(theory_pb& th, literal_vector const& lits, literal l);
void set_conflict(theory_pb& th, literal l1, literal l2);
void set_conflict(theory_pb& th, literal l);
};
typedef ptr_vector<card> card_watch;
@ -366,22 +366,19 @@ namespace smt {
//
unsigned m_num_marks;
unsigned m_conflict_lvl;
arg_t m_lemma;
literal_vector m_ineq_literals;
svector<bool_var> m_marked;
svector<int> m_coeffs;
svector<bool_var> m_active_coeffs;
int m_bound;
literal_vector m_antecedents;
// bool_var |-> index into m_lemma
unsigned_vector m_conseq_index;
static const unsigned null_index;
bool is_marked(bool_var v) const;
void set_mark(bool_var v, unsigned idx);
void unset_mark(bool_var v);
void unset_marks();
void inc_coeff(literal l, int offset);
int get_coeff(bool_var v) const;
bool resolve_conflict(ineq& c);
void process_antecedent(literal l, numeral coeff);
void process_ineq(ineq& c, literal conseq, numeral coeff);
void remove_from_lemma(unsigned idx);
void reset_coeffs();
bool resolve_conflict(card& c, literal_vector const& conflict_clause);
void process_antecedent(literal l, int offset);
void process_card(card& c, int offset);
bool is_proof_justification(justification const& j) const;
void hoist_maximal_values();