3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-07 08:21:56 +00:00

working on adding basic cores to efficient SAT solver

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2014-07-29 07:22:59 -07:00
parent 96dc933c99
commit e98acf4ece
8 changed files with 203 additions and 30 deletions

View file

@ -118,6 +118,9 @@ namespace sat {
stopwatch m_stopwatch;
params_ref m_params;
scoped_ptr<solver> m_clone; // for debugging purposes
literal_vector m_assumptions;
literal_set m_assumption_set;
literal_vector m_core;
void del_clauses(clause * const * begin, clause * const * end);
@ -250,8 +253,9 @@ namespace sat {
//
// -----------------------
public:
lbool check();
lbool check(unsigned num_lits = 0, literal const* lits = 0);
model const & get_model() const { return m_model; }
literal_vector const& get_core() const { return m_core; }
model_converter const & get_model_converter() const { return m_mc; }
protected:
@ -267,6 +271,11 @@ namespace sat {
bool_var next_var();
lbool bounded_search();
void init_search();
void init_assumptions(unsigned num_lits, literal const* lits);
void reinit_assumptions();
bool tracking_assumptions() const;
bool is_assumption(literal l) const;
void mk_unsat_core();
void simplify_problem();
void mk_model();
bool check_model(model const & m) const;
@ -311,9 +320,9 @@ namespace sat {
literal_vector m_lemma;
literal_vector m_ext_antecedents;
bool resolve_conflict();
bool resolve_conflict_core();
bool resolve_conflict_core(bool generate_core);
unsigned get_max_lvl(literal consequent, justification js);
void process_antecedent(literal antecedent, unsigned & num_marks);
void process_antecedent(bool generate_coe, literal antecedent, unsigned & num_marks);
void fill_ext_antecedents(literal consequent, justification js);
unsigned skip_literals_above_conflict_level();
void forget_phase_of_vars(unsigned from_lvl);