Skip to content

docs(errata): PR1 of 2 — false-claim corrections from #4984 campaign errata - #5030

Draft
phasetr wants to merge 11 commits into
mainfrom
docs/4984-errata-pr1-false-claims
Draft

docs(errata): PR1 of 2 — false-claim corrections from #4984 campaign errata#5030
phasetr wants to merge 11 commits into
mainfrom
docs/4984-errata-pr1-false-claims

Conversation

@phasetr

@phasetr phasetr commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Purpose

PR 1 of 2 in the capped errata-correction window authorized per Codex's final ruling in
.self-local/reports/dev-review-4984-post-triage-remainder.md (item 1: "scope down and
AUTHORIZE NOW, hard cap 2 PRs / ~12-20 h"). This PR corrects false/misleading substantive prose
(declaration docs, module headers, docs/index.md) found during the #4984 header-rewrite
campaign. It does not touch declaration deletion, renaming, imports, umbrellas, D1/#5028, or any
mechanical citation population (those are excluded per the ruling and/or handled elsewhere).

Scope (verified live against merge base 532fe328a9bcf67d9797790ae07052cc310d3439 before

scaffolding)

Exclusions (binding, per the ruling)

No declaration deletion or rename, no import/umbrella changes, no D1/#5028 work, no PR #N
provenance cleanup, no corpus-wide audit, no new scanners/gates/baselines, no blanket
substitutions, no third PR.

Test plan

  • grep -rn "sorry" IsingModel/ stays empty (doc-only edits; no proof-term changes expected).
  • Local build/lint/#print axioms per lean-verify-audit before merge.
  • Independent cross-review (dev-cross-cli-review) before merge.
  • Each corrected claim re-derived against the live merge base at fix time (issue-body numbers in
    this campaign have repeatedly been found stale).

Notes

This is a draft PR opened with the standard empty-commit scaffold; implementation is a
separate dispatch. Refs #N trailers are used (not Closes #N) because issue-by-issue closure
decisions are made after each fix is verified, and several of the above issues (#5000/#5002/#5011)
retain a PARKED portion that stays open regardless of this PR's outcome.

Refs #4987
Refs #5000
Refs #5002
Refs #5005
Refs #5008
Refs #5011
Refs #5017
Refs #5019
Refs #5022
Refs #5026

This was referenced Aug 11, 2026
phasetr and others added 10 commits August 11, 2026 20:13
Six module headers expanded the `vd` prefix as "van-den-Berg". In this
repository `vd` abbreviates vertex-disjoint: `vdCompatiblePolymerFamilies`
is defined by filtering on `IsCompatiblePolymerFamilyVertexDisjoint`
(`ClusterExpansion/Families/VertexDisjoint.lean`), and no van den Berg
result is cited anywhere in the tree.

Verified: `grep -rn "Berg" IsingModel/ docs/ README.md scripts/` returned
these six lines before and returns nothing after. Comment-only.

Refs #4987

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
`freeEnergyAlongExhaustion_latticeGraph_eq_log_div_card` was documented as
an "alternate form of `freeEnergyAlongExhaustion_eq_inv_card_mul_log` using
the Fintype-card expression", but the lemma it names already uses
`Fintype.card`, so no distinction is being drawn. The doc now records that
the two conclusions are the same proposition and differ only in the ambient
lemma delegated to, and points at
`freeEnergyAlongExhaustion_latticeGraph_eq_inv_Λcard_mul_log` as the
genuinely different cardinality spelling.

Verified in Lean: `@..._eq_log_div_card = @..._eq_inv_card_mul_log := rfl`
is accepted, at both the lattice-graph and the ambient layer. Comment-only;
no declaration is added, removed or renamed.

Refs #5000

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
`correlationInfinite_le_const_mul_beta_of_high_temp` was documented as
holding "For `0 ≤ J`, `1 ≤ d`, `0 < b` ...", but its binder telescope
carries no `1 ≤ d`; the dimension bound is dropped from the prose.

`freeEnergyComplex_continuousAt_real_pos_h_latticeGraph` was documented as
continuity at "real positive `h₀`", but it takes `(h₀ : ℝ)` with no
positivity hypothesis and holds at every real `h₀`. The headline is
corrected and the mismatch with the `_pos_h_` in the name is recorded.

Both telescopes read off `#check`. Comment-only; the names are left alone,
since renaming is a separate decision.

Refs #5002

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
correlation length

Three sites asserted that `−log tanh(βJ)`, or a finite-region infimum of
per-pair pseudo-masses, *is* the inverse correlation length. The tree
proves only bounds: `latticeMass_le_neg_log_tanh_betaJ`,
`latticeMass_two_sided_bound`, and
`onAxisInverseCorrelationLength_le_neg_log_tanh` are all inequalities, and
no equality with that rate exists anywhere.

* `UnconditionalFiniteRegionLipschitz.lean` header: "faithful
  inverse-correlation-length rate" -> "direct-path rate", the name the
  neighbouring `LatticeMassHighTemperature/UpperBound.lean` already uses.
* `finiteRegionPseudoMassDist`: the claim that the finite infimum "is the
  genuine inverse correlation length restricted to `A`" is replaced by the
  faithful-radius statement plus an explicit note that no relation to
  `latticeMass` is proved here. Measured at the merge base: the file sets
  mentioning `finiteRegionPseudoMassDist` (24) and `latticeMass` (85)
  intersect in zero files.
* `docs/index.md` #4333 row: it simultaneously claimed the `hprofile` of
  #4330-#4332 "is now an unconditional theorem" and, in parentheses, that
  the theorem is at a different rate. The row now states that the
  unconditional bound does not discharge that binder -- `#check` shows the
  binder is `pseudoMassG α ρ (−log(βJ·2d))` at a fixed radius while the
  theorem is `pseudoMassG α (latticeDistance d x z) (−log tanh(βJ))` -- and
  names the rate-agnostic engine as what it does discharge.

Lean changes are comment-only. `citation_audit.py` is unaffected: the
findings/ratchet counts are identical with the merge base's `docs/index.md`.

Refs #5005

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The docstring of `truncated4Infinite_J_zero_of_pairwise_distinct` called
the closed form `-2·tanh(β·h)^4` "(non-vanishing)". `Ferromagnetic ⟨0,h,β⟩`
only requires `0 ≤ h`, so `h = 0` is admissible and there the form is `0`.

Replaced by the zero/nonzero split over the admissible range, matching the
already-corrected sibling in `TwoPointTruncatedTrivialSlices.lean`. Both
halves checked in Lean: `-2 * Real.tanh (β * 0) ^ 4 = 0`, and
`-2 * Real.tanh (β * h) ^ 4 < 0` for `0 < h`, `0 < β`. The surrounding
`-2·t⁴ ≤ 0` sentence was correct and is kept. Comment-only.

Refs #5008

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
`partitionFunctionAlongExhaustion_high_temp_expansion_h_zero_pow_two_lt_of_nonempty`
was documented as holding "under nonempty volume". Its hypotheses are
`0 < β * J` and `0 < |E|`; it takes no `(Λ.volume n).Nonempty`, unlike the
`_of_nonempty` wrappers in `HighTemperatureBoundsRatioLogFeNonempty`, which
do take it and convert it with `hne.card_pos`.

The doc now names the hypotheses it actually has and records the divergence
from its siblings. Telescope read off `#check`. Comment-only; the duplicate
declaration itself is left in place.

Refs #5011

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* `magnetizationΛ_ge_tanh`: "`|A|^1 = |A|.card = 1`" is not a well-formed
  identity. Replaced by the wording already used for the parallel
  `magnetizationInfinite_J_zero`: `A.card = 1`, so the power reduces to
  `tanh(β·h)` -- which is exactly what the proof's `Finset.card_singleton`
  rewrite does.
* `correlationAlongExhaustion_J_zero_of_subset` and
  `correlationInfinite_J_zero` called the `J = 0` slice the
  "infinite-temperature slice". Infinite temperature is `β → 0`; `J = 0` is
  the non-interacting slice, and `β` is free in the first while the second
  requires `0 < β` through `Ferromagnetic`. Both now say what
  `MagnetizationInfinite/TrivialSlices.lean` already says.
* `susceptibilityInfinite`: the doc asserted `|χ_Λ(i)| ≤ 2·|Λ|` as an
  available fact. No such bound exists in the tree (that string occurs
  nowhere else). Replaced by the provable point the sentence was making --
  `susceptibility` sums `truncated2` over the volume, so the summand count
  grows with the stage and no stage-uniform bound is proved here.
* `susceptibilityInfinite_le_abs_h`: cited `ciSup_le_ciSup`, which does not
  exist at this mathlib pin. The proof applies `ciSup_mono`.

Comment-only.

Refs #5017

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* `partitionFunctionΛ_high_temp_expansion_h_zero_closed_evenSubgraphs`
  carried an odd number of `**` markers, so its bold span did not close
  where it appeared to. Stray marker removed.
* Declaration docs across `Analyticity*` use `pFE`, `vdSum` and `ε(t)` as
  if they named definitions. `vdPolymerFamilies_sum` and its `.erase ∅`
  variant have no definition at all -- they are written out in full in
  every statement -- and neither `pFE` nor `vdSum` is introduced anywhere.
  Each affected module header now carries the expansion and says these are
  prose shorthands rather than library names, extending the legend device
  the same headers already use for `Ξ` and `ε`.

`AnalyticityLambdaMayerRecurrenceEpsilon` and
`AnalyticityLambdaMayerPfeEdgeBounds` are unchanged: their headers already
introduce `ε t` as a shorthand with no definition behind it, which is the
only shorthand their declaration docs use.

Comment-only.

Refs #5019

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
`partitionFunctionΛ_high_temp_expansion_h_zero_upper_bound` was documented
as a "ℤ^d wrapper". `#check` shows it is stated for an arbitrary
`G : SimpleGraph V` over an arbitrary `V` with `Λ : Finset V`; nothing in
its signature or proof mentions `latticeGraph`, `cubicExhaustion` or any
other ℤ^d construct. In the `AmbientLattice/` tree ℤ^d vocabulary is what
has to be absent, since the layer is graph-generic and the specializations
live downstream in `Concrete/`.

Reworded to the form its siblings in the same file already use, naming the
wrapped `IsingModel.partitionFunction_high_temp_expansion_h_zero_upper_bound`.
The provenance token in the sentence is re-emitted unchanged. Comment-only.

Refs #5022

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
difference is not a ratio

* `freeEnergyInfinite_high_temp_h_zero_upper_bound_exp_uniform` was
  advertised as "globally tighter than `freeEnergyInfinite_le_uniform_upper_bound`
  at `h = 0` (the cosh-based bound)". Both claims are wrong. The right-hand
  sides are the same real number under this theorem's hypotheses --
  `log 2 + |β|·(|J|·c + |0|) = log 2 + β·J·c` for `0 ≤ J`, `0 < β`, checked
  in Lean -- and the named lemma's conclusion contains no `Real.cosh` at
  all; `cosh` enters only through the lower bound used for coboundedness.
* `freeEnergyInfinite_high_temp_h_zero_ratio_bound` and its `_beta_zero`
  companion are headlined as "ratio upper bound" while their conclusions
  bound a difference, which their own doc bodies display two lines below.
  Both headlines corrected, each noting that the `_ratio_bound` in the name
  does not describe the statement.

Renames are a separate decision and are not made here. Comment-only.

Refs #5026

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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