Commit 35da29b
Add algebraic_multiplicity option + M-row truncation in analysis_utils
`EstimationOptions.algebraic_multiplicity::Union{Int, Nothing} = nothing`.
When set to a positive integer M, the output of
analyze_estimation_result truncates `cluster_reps` to
`min(M, branch_top_k, length(cluster_reps))` rows. When `nothing`
(default), behavior is byte-identical to before — slice to branch_top_k.
`branch_top_k` retains its role as a safety cap (so if M is set
incorrectly large, we still bound the output). The two knobs compose
multiplicatively: M is the algebraic intent, branch_top_k is the
numerical cap.
Validator rejects non-positive Ints. fast_core 258/258 stays green
(default-path is byte-identical).
Calling convention for downstream:
- Pass M from a per-system catalog (PEB's generate_scripts.py now
injects from config/systems.json[*].algebraic_multiplicity).
- When ODEPE has an auto-compute (SI gate + HC root count via
upstream Pogudin patch — TODO local-claude), the caller can stop
setting this field and ODEPE will compute M itself.
See PEB `results/wallaby_analysis/multiplicity/M_INFERENCE_INVESTIGATION.md`
for the full investigation including:
- Why count(:locally) is NOT the multiplicity (it's the swap-subspace
dimensionality; for our 4 mult-2 systems n_locally varies 4-6 but M=2).
- Failed attempt to harvest check_primality_zerodim's dim (it's over
the LEADER ring not parameter ring; gave M=1 for daisy_mamil4
instead of 2).
- Where M IS computed but not exposed: SIAN-Julia SIAN.jl:265 has
the right Gröbner basis whose quotient_basis dim is M. A small
upstream patch (~5 lines) would expose it.
- Catalog-fallback approach used today (PEB injects per-system M
from config/systems.json).
Impact on benchmark stats (estimated from existing wallaby data via
PEB `results/wallaby_analysis/m_truncation_impact.md`):
- Paper-headline M-bounded metric: 0pp change (definition).
- K=20 oracle ceiling diagnostic: -2.6pp polish / -4.1pp nopolish
@10% — that diagnostic disappears because result.csv no longer
contains rows beyond M.
- Top-1: 0pp change (row 0 doesn't move).
- 10 cells / 2300 ODEPE cells (0.4%) lose accuracy under truncation,
concentrated at high noise where polish put truth at rank > M.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent b623e5e commit 35da29b
2 files changed
Lines changed: 44 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
934 | 934 | | |
935 | 935 | | |
936 | 936 | | |
937 | | - | |
938 | | - | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
939 | 956 | | |
940 | 957 | | |
941 | 958 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
317 | 317 | | |
318 | 318 | | |
319 | 319 | | |
320 | | - | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
321 | 341 | | |
322 | 342 | | |
323 | 343 | | |
| |||
1249 | 1269 | | |
1250 | 1270 | | |
1251 | 1271 | | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
1252 | 1276 | | |
1253 | 1277 | | |
1254 | 1278 | | |
| |||
0 commit comments