Dead helpers
These are defined in lib/solver.eigs and called from nowhere in the repo (.eigs, .sh and .py all checked):
detach_clause_watches (solver.eigs:828) and its inner detach_watch_bucket (solver.eigs:812)
prune_deleted_watches (solver.eigs:942)
find_low_activity_learnt (solver.eigs:852) — superseded by the candidate scan inside reduce_learnt_db, and unlike that scan it has no glue-clause protection, so it would behave differently if it were ever wired back in
Counters that can never be nonzero
The three helpers above are the only writers of six counters, and those counters print on every CDCL line:
$ eigenscript minisat.eigs --cdcl --compact-policy eager tests/fixtures/pigeonhole_6_5.cnf
... compact_runs=25 watch_rebuilds=25
watch_detaches=0 watch_detach_scans=0 watch_detach_removed=0
watch_prunes=0 watch_prune_scans=0 watch_prune_removed=0
Six of the counters in the mode table are structurally zero — not "zero on this instance". For a repo whose second mission is the counter surface as a pressure inventory, they read as measured facts about watch maintenance when they are placeholders.
Telemetry that is computed but never printed
The reverse problem in minisat.eigs:192: cdcl_result returns these, and the CLI counters line omits all of them —
minimize_checks, minimize_removed, minimize_steps, lbd_kept_glue, lbd_improved, peak_learnts, max_level
That is the entire clause-minimisation and LBD signal, plus two of the three axes of the proof-shape triple the --proof-bench docs are built around. They are reachable from bench modes but not from a plain --cdcl run.
Suggested resolution
Either wire the helpers into the compaction path (compact_deleted_clauses currently rebuilds the whole watch table via rebuild_watches, where targeted detach/prune is the cheaper alternative the helpers were presumably written for) and let the counters become real, or delete the helpers and drop the six counters from the output. Splitting the difference — keeping the counters while the writers stay unreachable — is what makes the inventory misleading.
Separately, add the minimise/LBD/proof-shape counters to the --cdcl counters line, or document why they are bench-only.
Found while reviewing for #83-#86; no behaviour change, so nothing here shifts a banked measurement.
Dead helpers
These are defined in
lib/solver.eigsand called from nowhere in the repo (.eigs,.shand.pyall checked):detach_clause_watches(solver.eigs:828) and its innerdetach_watch_bucket(solver.eigs:812)prune_deleted_watches(solver.eigs:942)find_low_activity_learnt(solver.eigs:852) — superseded by the candidate scan insidereduce_learnt_db, and unlike that scan it has no glue-clause protection, so it would behave differently if it were ever wired back inCounters that can never be nonzero
The three helpers above are the only writers of six counters, and those counters print on every CDCL line:
Six of the counters in the mode table are structurally zero — not "zero on this instance". For a repo whose second mission is the counter surface as a pressure inventory, they read as measured facts about watch maintenance when they are placeholders.
Telemetry that is computed but never printed
The reverse problem in
minisat.eigs:192:cdcl_resultreturns these, and the CLI counters line omits all of them —minimize_checks,minimize_removed,minimize_steps,lbd_kept_glue,lbd_improved,peak_learnts,max_levelThat is the entire clause-minimisation and LBD signal, plus two of the three axes of the proof-shape triple the
--proof-benchdocs are built around. They are reachable from bench modes but not from a plain--cdclrun.Suggested resolution
Either wire the helpers into the compaction path (
compact_deleted_clausescurrently rebuilds the whole watch table viarebuild_watches, where targeted detach/prune is the cheaper alternative the helpers were presumably written for) and let the counters become real, or delete the helpers and drop the six counters from the output. Splitting the difference — keeping the counters while the writers stay unreachable — is what makes the inventory misleading.Separately, add the minimise/LBD/proof-shape counters to the
--cdclcounters line, or document why they are bench-only.Found while reviewing for #83-#86; no behaviour change, so nothing here shifts a banked measurement.