3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-28 10:51:28 +00:00

Polysat: conflict resolution wip (#5529)

* conflict_core doesn't need gc() anymore

* update comments, ensure_bvar for new constraints

* Make sure constraints can only be created through constraint_manager

* fix constraint::display if no boolean variable is assigned

* Move clause into separate file

* Add conflict_core binary resolution

* conflict_core additions

* reactivate conflict resolution outer loop

* wip

* seems commented includes break CI build
This commit is contained in:
Jakob Rath 2021-09-01 18:10:10 +02:00 committed by GitHub
parent 8b374c3745
commit dc547510db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 423 additions and 335 deletions

View file

@ -53,6 +53,7 @@ namespace polysat {
friend class ule_constraint;
friend class clause;
friend class clause_builder;
friend class conflict_core;
friend class conflict_explainer;
friend class forbidden_intervals;
friend class linear_solver;
@ -191,8 +192,6 @@ namespace polysat {
unsigned m_conflict_level { 0 };
clause_ref resolve_bool(sat::literal lit);
bool can_decide() const { return !m_free_vars.empty(); }
void decide();
void decide(pvar v);
@ -211,10 +210,13 @@ namespace polysat {
unsigned base_level() const;
void resolve_conflict();
void backtrack(unsigned i, clause_ref lemma);
bool resolve_value(pvar v);
void resolve_bool(sat::literal lit);
void resolve_bailout(unsigned i);
void revert_decision(pvar v);
void revert_bool_decision(sat::literal lit);
void report_unsat();
void revert_decision(pvar v, clause_ref reason);
void revert_bool_decision(sat::literal lit, clause_ref reason);
void learn_lemma(pvar v, clause_ref lemma);
void backjump(unsigned new_level);
void add_lemma(clause_ref lemma);