Skip to content

Remove Late Move Reductions: stronger at every TC, provable as written - #141

Merged
thomasahle merged 2 commits into
masterfrom
remove-lmr
Aug 6, 2026
Merged

Remove Late Move Reductions: stronger at every TC, provable as written#141
thomasahle merged 2 commits into
masterfrom
remove-lmr

Conversation

@thomasahle

Copy link
Copy Markdown
Owner

The capstone of the LMR investigation. Two commits: the removal (full measured story in its message) and the documentation pass (README doctrine, paper's second epilogue, 23pp PDF).

The measurements (all frozen-snapshot, paired-opening, time-loss-audited):

  • Removal vs master: +69 ± 40 and +29 ± 33 (4+0.04, 300g each), +19 ± 45 (60+1, 200g — and noLMR ate 2× the machine-stall time losses, so this is a floor).
  • The historical +49 for adding re-search LMR reproduces (+41 ± 36 replaying the exact A/B) — the old ledger was sound.
  • Resolution: re-search LMR is +20 ± 36 over noLMR, but the honest min-semantics variant (identical cutoffs, sound bound algebra) is exactly 0.00 ± 34 — the entire edge was over-claimed bounds, i.e. the machine-checked TT-crossing bug. Deterministic LMR's believed −16 was really ~−50 (net negative); a decision hinging on a sub-error-bar difference needs SPRT (lesson recorded).

Fixed-depth floors all improve or hold: mate4 1→4/10, WAC 87→94/300, Bratko-Kopec 4→5/24 (floor bumps for #138's ladder noted), everything else unchanged.

Formal: Lmr.lean, LmrDet.lean, TableClamp.lean deleted with their mechanism — git is the archive. Six files, zero sorries, and bound()'s docstring is provable as written (bound_spec): no reduction hypotheses, no interval readings, no clamp. The doctrine survives in README: every stored bound describes one value function determined by the transposition key.

🤖 Generated with Claude Code

thomasahle and others added 2 commits August 6, 2026 18:17
…th loop

The measured record, all per docs/TESTING.md (frozen snapshots, paired
openings, per-engine time-loss accounting):

- Removing deterministic LMR: +69 +/- 40 and +29 +/- 33 (two 300-game
  matches, 4+0.04), +19 +/- 45 at 60+1 (200 games) - noLMR is stronger
  at every time control tested, and fixed-depth suites corroborate
  (mate4, Bratko-Kopec, WAC all improve without LMR).
- The original re-search LMR (+49 when added at 58883ea) REPRODUCES:
  +41 +/- 36 replaying the exact historical A/B today. The ledger was
  never wrong.
- The resolution: re-search LMR grafted on today's baseline is +20 +/-
  36 over noLMR - but an honest variant (min-semantics, identical
  cutoffs, sound bound propagation) scores exactly 0.00 +/- 34 vs
  noLMR. Re-search LMR's entire edge lives in its over-claimed bounds:
  fail-highs propagated as facts about a depth they did not search.
  That is not a trade-off between strength and provability; it is
  strength borrowed from a bug (contradictory transposition entries,
  machine-checked while the mechanism existed).
- Deterministic LMR (7f9f164) was believed -16 vs re-search; the true
  price was ~-50, below zero net. A decision that hinges on a
  difference smaller than its error bars needs SPRT or a bigger
  sample - added to docs/TESTING.md's lessons.

With no reduction anywhere, every move is searched at depth - 1,
bound()'s docstring is provable as written (Bound.lean's point spec,
zero sorries), the killer duplicate is same-depth idempotent, and the
formal record needs no LMR machinery: Lmr.lean, LmrDet.lean,
TableClamp.lean and their interval-spec/clamp apparatus are deleted -
git is the archive. The doctrine they taught survives in
formal/README.md: every stored bound must describe one value function
determined by the transposition key; 'the truth lies within an
unboundable gap' is not a spec.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
formal/README.md and formal/paper describe the post-removal reality:
six core Lean files, the shipped loop matching Bound.lean's searchMoves
exactly, the measurement campaign's numbers, and the retired mechanisms
paragraph pointing at git. Paper: 23 pages, builds clean, new second
epilogue with the full campaign. Residual stale comments in CanNull and
Tricks swept.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@thomasahle
thomasahle merged commit e8d10a3 into master Aug 6, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant