mirror of
https://github.com/Z3Prover/z3
synced 2026-07-16 20:15:43 +00:00
seq_split: dedup identical <D,N> pairs in intersect (sound, memory-only)
A split-set denotes the UNION of its pairs, so identical (hash-consed) <D,N> pairs are redundant; skipping them in the De Morgan cross-product cuts the materialized split-set ~7x on L15 negcount (65536 -> 9216) with no behaviour change (verified L11 sat / L14 unsat). NOTE: memory-only -- it does not fix the underlying combinatorial blow-up of complement()'s structural De Morgan on a concatenation of predicates (root cause; see spec analysis). Adds nseq-split-dedup-drops counter. Easily reverted if a derivative/minterm-based complement supersedes the cross-product. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
8992d5fc53
commit
07c797c32b
3 changed files with 13 additions and 0 deletions
|
|
@ -72,6 +72,7 @@ struct split_stats {
|
|||
unsigned m_giveups = 0; // iterator give-ups (unsupported/weak/overrun)
|
||||
unsigned m_threshold_overruns = 0; // threshold hits (intersect/complement/iterator)
|
||||
unsigned m_max_split_set = 0; // largest materialized split-set seen
|
||||
unsigned m_dedup_drops = 0; // duplicate <D,N> pairs skipped in intersect
|
||||
unsigned m_simplify = 0; // simplify() calls
|
||||
void reset() { *this = split_stats(); }
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue