3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-25 04:26:00 +00:00

Add separate state for deciding on lemmas

This commit is contained in:
Jakob Rath 2022-01-21 11:55:03 +01:00
parent aea3545fcc
commit 0a48846add
2 changed files with 43 additions and 16 deletions

View file

@ -105,8 +105,9 @@ namespace polysat {
vector<signed_constraints> m_pwatch; // watch list datastructure into constraints.
#ifndef NDEBUG
std::optional<pvar> m_locked_wlist; // restrict watch list modification while it is being propagated
#endif
bool m_propagating = false; // set to true during propagation
#endif
ptr_vector<clause> m_lemmas;
unsigned_vector m_activity;
vector<pdd> m_vars;
@ -155,15 +156,18 @@ namespace polysat {
void assign_eval(sat::literal lit);
void activate_constraint(signed_constraint c);
void deactivate_constraint(signed_constraint c);
void decide_bool(clause& lemma);
void decide_bool(sat::literal lit, clause* lemma);
unsigned level(sat::literal lit, clause const& cl);
bool can_decide_on_lemma();
void decide_on_lemma();
void decide_on_lemma(clause& lemma);
void enqueue_decision_on_lemma(clause& lemma);
void drop_enqueued_lemma();
void assign_core(pvar v, rational const& val, justification const& j);
bool is_assigned(pvar v) const { return !m_justification[v].is_unassigned(); }
bool is_decision(search_item const& item) const;
bool should_search();
void propagate(sat::literal lit);
@ -369,7 +373,7 @@ namespace polysat {
void updt_params(params_ref const& p);
};
}; // class solver
class assignments_pp {
solver const& s;