mirror of
https://github.com/Z3Prover/z3
synced 2025-08-26 13:06:05 +00:00
Narrow conflicting constraint after backjumping
This commit is contained in:
parent
54ed6d4413
commit
4406652c7b
3 changed files with 36 additions and 0 deletions
|
@ -111,6 +111,11 @@ namespace polysat {
|
|||
// Additional lemmas that justify new constraints generated during conflict resolution
|
||||
clause_ref_vector m_lemmas;
|
||||
|
||||
// Store constraints that should be narrowed after backjumping.
|
||||
// This allows us to perform propagations that are missed by the two-watched-variables scheme,
|
||||
// e.g., because one of the watched variables is unassigned but irrelevant (e.g., x is irrelevant in x*y if y := 0).
|
||||
sat::literal_vector m_narrow_queue;
|
||||
|
||||
conflict_kind_t m_kind = conflict_kind_t::ok;
|
||||
|
||||
// Level at which the conflict was discovered
|
||||
|
@ -233,6 +238,9 @@ namespace polysat {
|
|||
|
||||
clause_ref_vector const& side_lemmas() const { return m_lemmas; }
|
||||
|
||||
/** Move the literals to be narrowed out of the conflict */
|
||||
sat::literal_vector take_narrow_queue();
|
||||
|
||||
std::ostream& display(std::ostream& out) const;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue