3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-23 20:58:54 +00:00

expose extension conflict resolution as plugin to sat solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-02-05 10:08:57 -08:00
parent 5f70e4823d
commit 15283e4e7c
9 changed files with 223 additions and 307 deletions

View file

@ -94,8 +94,9 @@ namespace sat {
svector<bool_var> m_active_vars;
int m_bound;
tracked_uint_set m_active_var_set;
literal_vector m_conflict;
literal_vector m_lemma;
literal_vector m_literals;
unsigned m_num_propagations_since_pop;
solver& s() const { return *m_solver; }
void init_watch(card& c, bool is_true);
@ -103,7 +104,7 @@ namespace sat {
void assign(card& c, literal lit);
lbool add_assign(card& c, literal lit);
void watch_literal(card& c, literal lit);
void set_conflict(card& c);
void set_conflict(card& c, literal lit);
literal last_false_literal(card& c);
void clear_watch(card& c);
void reset_coeffs();
@ -122,9 +123,8 @@ namespace sat {
literal_vector& get_literals() { m_literals.reset(); return m_literals; }
literal get_asserting_literal(literal conseq);
bool resolve_conflict(card& c, literal alit);
void process_antecedent(literal l, int offset);
void process_card(card& c, int offset);
bool process_card(card& c, int offset);
void cut();
// validation utilities
@ -148,6 +148,7 @@ namespace sat {
virtual void set_solver(solver* s) { m_solver = s; }
void add_at_least(bool_var v, literal_vector const& lits, unsigned k);
virtual void propagate(literal l, ext_constraint_idx idx, bool & keep);
virtual bool resolve_conflict();
virtual void get_antecedents(literal l, ext_justification_idx idx, literal_vector & r);
virtual void asserted(literal l);
virtual check_result check();