3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-23 15:32:32 +00:00

seq_split: add behaviour-neutral perf counters, surfaced via nseq -st

Adds a split_stats struct to seq_split (make/sigma-expand/materialize/splits/pushes/oracle-prunes/intersect/intersect-pairs/complement/giveups/threshold-overruns/max-split-set/simplify) and reports them in nielsen_graph::collect_statistics as 'nseq split *'. Read-only counters; solver behaviour is unchanged (verified: L11 sat, L14 unsat, gen cssfunc sat). Diagnosis on gen-lb L15 negcount: the De Morgan complement -> intersect cross-product blows up to 2^16 split-set pairs (1.3M intersect-pairs) while simplify() and the oracle never fire on that path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Margus Veanes 2026-07-03 16:05:31 +03:00
parent 7cc5a73bd8
commit 8992d5fc53
4 changed files with 69 additions and 3 deletions

View file

@ -439,6 +439,10 @@ public:
return m_split.split_membership(str, regex, threshold, result);
}
// split-algebra performance counters (surfaced via nseq -st)
split_stats const& get_split_stats() const { return m_split.stats(); }
void reset_split_stats() { m_split.reset_stats(); }
expr_ref mk_symmetric_diff(expr *r1, expr *r2);
/**