mirror of
https://github.com/Z3Prover/z3
synced 2026-07-25 08:22:35 +00:00
Try to do some processing already during assignments
This commit is contained in:
parent
fc2124890e
commit
e983bc76d4
7 changed files with 256 additions and 0 deletions
|
|
@ -77,8 +77,19 @@ namespace smt {
|
|||
unsigned m_last_constraint_added = 0;
|
||||
bool m_can_hot_restart = false;
|
||||
|
||||
// Eager structural pre-check (see eager_structural_check): m_eager_dirty is
|
||||
// a monotone counter bumped whenever a Nielsen-relevant constraint (word eq,
|
||||
// diseq, or membership) is enqueued; m_eager_seen records the value at the
|
||||
// last eager run, so the cheap closure is re-run only when the set changed.
|
||||
// m_eager_processed = how many m_prop_queue items are already folded into the
|
||||
// incremental eager chain (`m_nielsen`'s deterministic leaf).
|
||||
unsigned m_eager_dirty = 0;
|
||||
unsigned m_eager_seen = 0;
|
||||
unsigned m_eager_processed = 0;
|
||||
|
||||
// statistics
|
||||
unsigned m_num_conflicts = 0;
|
||||
unsigned m_num_eager_conflicts = 0; // conflicts found by the eager structural closure
|
||||
unsigned m_num_final_checks = 0;
|
||||
unsigned m_num_sat_revalidations = 0; // times the cached SAT path was reused instead of rebuilding
|
||||
unsigned m_num_length_axioms = 0;
|
||||
|
|
@ -135,6 +146,7 @@ namespace smt {
|
|||
|
||||
// private helpers
|
||||
void populate_nielsen_graph();
|
||||
void eager_structural_check();
|
||||
void explain_nielsen_conflict();
|
||||
void set_conflict(enode_pair_vector const& eqs, literal_vector const& lits) const;
|
||||
void set_conflict(literal_vector const& lits) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue