Skip to content

refactor(Channel/FixedPoint): use CLMs in Cesaro limits#3097

Merged
LionSR merged 1 commit into
mainfrom
codex/cesaro-limit-clms
Jun 20, 2026
Merged

refactor(Channel/FixedPoint): use CLMs in Cesaro limits#3097
LionSR merged 1 commit into
mainfrom
codex/cesaro-limit-clms

Conversation

@LionSR

@LionSR LionSR commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Motivation

The Cesaro fixed-point arguments transported convergence through a channel by first proving continuity from finite dimensionality. Mathlib 4.31 provides the finite-dimensional map from linear maps to continuous linear maps, so these proof-local continuity witnesses can be removed.

Description

This PR replaces the local LinearMap.continuous_of_finiteDimensional continuity facts in IsChannel.exists_posSemidef_fixedPoint and IsChannel.cesaroMean_subseq_limit_fixedPoint with bundled maps LinearMap.toContinuousLinearMap E. The mathematical statements and telescoping arguments are unchanged.

Files modified:

  • TNLean/Channel/FixedPoint/Cesaro.lean
  • TNLean/Channel/Irreducible/Ergodicity.lean

Testing

  • lake exe cache get
  • lake build TNLean.Channel.FixedPoint.Cesaro TNLean.Channel.Irreducible.Ergodicity -q --log-level=info
  • python3 scripts/check_reader_facing_prose.py --root . --diff-base origin/main
  • python3 scripts/blueprint_lean_sync.py --root . --ci
  • git diff --check
  • git diff --cached --check

Note

Low Risk
Proof-only refactor in channel fixed-point/ergodicity lemmas; no API, runtime, or mathematical statement changes.

Overview
Cesàro fixed-point proofs now push convergence through LinearMap.toContinuousLinearMap E instead of ad hoc LinearMap.continuous_of_finiteDimensional witnesses.

In IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean) and IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean), the local continuity fact is replaced by a bundled continuous linear map E', and Filter.Tendsto for E along Cesàro subsequences is obtained via E'.continuous.tendsto. The ergodicity lemma additionally rewrites the goal as E ∘ … before simpa. Telescoping identities and limit arguments are unchanged.

Reviewed by Cursor Bugbot for commit 90bed29. Bugbot is set up for automated code reviews on this repo. Configure here.


Note

Low Risk
Proof-only refactor in channel fixed-point lemmas; no API or statement changes.

Overview
Cesàro fixed-point proofs now route Filter.Tendsto for channel iterates through a bundled LinearMap.toContinuousLinearMap E (E') instead of a local LinearMap.continuous_of_finiteDimensional witness.

In IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean) and IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean), continuity is obtained via E'.continuous.tendsto, with simpa [E'] to align E with the CLM. The ergodicity lemma adds a change to E ∘ … before that step. Telescoping and limit arguments are unchanged.

Reviewed by Cursor Bugbot for commit 47f0402. Bugbot is set up for automated code reviews on this repo. Configure here.

@claude claude Bot added the cleanup Code cleanup and style fixes label Jun 20, 2026
@claude

claude Bot commented Jun 20, 2026

Copy link
Copy Markdown

PR cleanup

Field Before After
Title refactor(Channel/FixedPoint): use CLMs in Cesaro limits unchanged — already compliant
Body missing Addresses #N footer; Cursor Bugbot block wrapped in HTML comment delimiters restructured to template; Bugbot > [!NOTE] block preserved verbatim; file list added to Description
Labels (none) added: cleanup
Issue no issue found — branch name contains no issue-N pattern; PR body has no Refs/Closes/Addresses reference; commit messages contain no issue numbers; open-issue search found no match

No linked issue was found after checking the branch name (codex/cesaro-limit-clms), PR body, commit messages, and open issues. Please link the relevant issue manually by adding Addresses #N to the PR body, or open one if none exists.

Conventions: CONTRIBUTING.md

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blueprint ↔ Lean sync and prose review — 0 equivalence mismatches, 0 stale status tags, 0 prose issues.

Category A — Blueprint ↔ Lean equivalence

Only proof bodies are changed; no .tex blueprint files and no theorem signatures are touched.

  • IsChannel.exists_posSemidef_fixedPoint is linked in ch04_channels.tex line 362 (\lean{IsChannel.exists_posSemidef_fixedPoint}) with \leanok on both statement and proof. The Lean signature (hE : IsChannel E) (hD : 0 < D) : ∃ ρ, ρ.PosSemidef ∧ ρ ≠ 0 ∧ E ρ = ρ matches the blueprint's statement (channel $E$ on $\mathcal{M}_D$ with $D \ge 1$, nonzero PSD fixed point). No sorry or admit present in either modified file, so both \leanok tags remain valid.
  • IsChannel.cesaroMean_subseq_limit_fixedPoint is a helper lemma with no blueprint entry; none is required.
  • No \notready tags affected.

Category B — Prose quality

No .tex files changed; no Lean docstrings or inline comments added or modified. Nothing to flag.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: refactor(Channel/FixedPoint): use CLMs in Cesaro limits

Verdict: Approve. No 🔴 or 🟡 issues found.

This is a minimal, proof-only refactor that swaps the local continuity witness LinearMap.continuous_of_finiteDimensional E for the bundled E' := LinearMap.toContinuousLinearMap E in two limit arguments. The mathematical statements are unchanged.

Correctness

In both files E : Matrix (Fin D) (Fin D) ℂ →ₗ[ℂ] Matrix (Fin D) (Fin D) ℂ is a linear endomorphism of a finite-dimensional ℂ-space, so LinearMap.toContinuousLinearMap applies and rests on exactly the same finite-dimensionality used by the original continuous_of_finiteDimensional. The coercion of E' back to a function is definitionally E, so:

  • IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean:295-296): simpa [E'] using (E'.continuous.tendsto ρ).comp hφ_tendsto correctly re-derives Tendsto (E ∘ σ ∘ φ) atTop (nhds (E ρ)).
  • IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean:102-106): the added change to E ∘ (fun k => cesaroMean E ρ (ψ k + 1)) plus simpa [E'] is the right shape; (E'.continuous.tendsto σ).comp hσ_tendsto matches nhds (E σ).

The telescoping identities (cesaroMean_telescope) and the h_diff/h_rhs_zero limit chains are untouched and continue to feed tendsto_nhds_unique as before.

Checks

  • Proof integrity: No sorry/admit/axiom/native_decide introduced.
  • Build: lake build TNLean.Channel.FixedPoint.Cesaro TNLean.Channel.Irreducible.Ergodicity completes successfully (8631 jobs, exit 0). The only warnings are pre-existing "Copyright too short" header-linter notes, unrelated to this diff.
  • Style/type safety: The let E' : … →L[ℂ] … binding is idiomatic and well-typed; no coercion or universe concerns.
  • Docs/paper-gaps: No statement, API, or docs/paper-gaps/ changes, so nothing to document.

Nice cleanup — leveraging the bundled finite-dimensional map removes the ad hoc continuity witnesses without altering any obligation.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Summary

This is a clean, focused proof-only refactor that replaces local LinearMap.continuous_of_finiteDimensional continuity witnesses with Mathlib's bundled LinearMap.toContinuousLinearMap API in two Cesàro fixed-point theorems.

What changed

  • IsChannel.exists_posSemidef_fixedPoint (TNLean/Channel/FixedPoint/Cesaro.lean): replaced hE_cont : Continuous E with let E' : ... →L[ℂ] ... := LinearMap.toContinuousLinearMap E, then used E'.continuous.tendsto via simpa.
  • IsChannel.cesaroMean_subseq_limit_fixedPoint (TNLean/Channel/Irreducible/Ergodicity.lean): same replacement, with a change step to align the goal's syntactic form for simpa.

Category-by-category assessment

Category Verdict
🔴 Proof integrity ✅ No blockers — no sorry, axiom, native_decide, or kernel bypasses introduced
🔴 Proof correctness ✅ The mathematical logic is unchanged; LinearMap.toContinuousLinearMap produces the same Continuous property that continuous_of_finiteDimensional provided, now bundled as a ContinuousLinearMap
🟡 Mathlib style ✅ Idiomatic use of let, simpa, and change; type annotation on let binding is appropriate
🔴 Type safety ✅ Domain Matrix (Fin D) (Fin D) ℂ is finite-dimensional, so LinearMap.toContinuousLinearMap is valid
🟡 Performance ✅ No performance impact — both old and new are thin wrappers
🟡 Modularity ✅ This is a modularity improvement — it uses Mathlib's bundled CLM API instead of ad hoc continuity proofs
🟡 Documentation ✅ N/A — proof-internal change only; theorem docstrings already present
🟡 Paper-gap notes ✅ N/A — no paper-gap notes changed

Build

lake build TNLean.Channel.FixedPoint.Cesaro TNLean.Channel.Irreducible.Ergodicity
# Build completed successfully (8631 jobs)

No new warnings introduced.

Verdict

APPROVE. No 🔴 or 🟡 issues found. This is a minimal, well-scoped refactor that improves alignment with Mathlib conventions.

@LionSR LionSR force-pushed the codex/cesaro-limit-clms branch from 90bed29 to 50143f3 Compare June 20, 2026 04:29
@LionSR LionSR marked this pull request as ready for review June 20, 2026 04:30

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blueprint ↔ Lean sync and prose review — 0 equivalence mismatches, 0 stale status tags, 0 prose issues.

Category A — Blueprint ↔ Lean equivalence

No .tex blueprint files are changed. Both modified files touch only proof bodies inside have blocks, with no change to any theorem signature.

  • IsChannel.exists_posSemidef_fixedPoint carries \lean{IsChannel.exists_posSemidef_fixedPoint} and \leanok on both statement and proof in the blueprint. The Lean signature is unchanged and no sorry or admit is introduced, so both tags remain valid.
  • IsChannel.cesaroMean_subseq_limit_fixedPoint has no blueprint entry; none is required for a proof-internal helper.
  • No \notready tags are affected. No declarations renamed or removed.

Category B — Prose quality

No .tex files changed. No Lean docstrings, module/sectioning comments, or inline comments are added or modified. Nothing to flag.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Summary

Proof-only refactor that replaces the local LinearMap.continuous_of_finiteDimensional E continuity witnesses with the bundled finite-dimensional map E' := LinearMap.toContinuousLinearMap E in two Cesàro fixed-point arguments. No mathematical statement, hypothesis, or API changes.

Verification (commit 50143f3, current HEAD)

  • Build: lake build TNLean.Channel.FixedPoint.Cesaro TNLean.Channel.Irreducible.Ergodicity → exit 0, "Build completed successfully (8631 jobs)". The only warnings are pre-existing "Copyright too short" header-linter notes on unrelated files, not introduced by this diff.
  • Proof integrity: no sorry/admit/axiom/native_decide/kernel bypasses added.

Correctness

In both theorems E : Matrix (Fin D) (Fin D) ℂ →ₗ[ℂ] Matrix (Fin D) (Fin D) ℂ is a linear endomorphism of a finite-dimensional ℂ-space, so LinearMap.toContinuousLinearMap is valid and rests on the same finite-dimensionality previously supplied by continuous_of_finiteDimensional. The coercion of E' back to a function is definitionally E, so simpa [E'] recovers the original goal shape:

  • IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean:295-296): simpa [E'] using (E'.continuous.tendsto ρ).comp hφ_tendsto re-derives Tendsto (E ∘ σ ∘ φ) atTop (nhds (E ρ)).
  • IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean:104-106): the added change to E ∘ (fun k => cesaroMean E ρ (ψ k + 1)) followed by simpa [E'] aligns the goal with (E'.continuous.tendsto σ).comp hσ_tendsto at nhds (E σ).

The downstream telescoping (cesaroMean_telescope), h_diff, and h_rhs_zero chains feeding tendsto_nhds_unique are untouched.

Category assessment

Category Verdict
🔴 Proof integrity ✅ No blockers
🔴 Proof correctness ✅ Logic unchanged; toContinuousLinearMap yields the same continuity
🔴 Type safety ✅ Domain is finite-dimensional; let E' : … →L[ℂ] … is well-typed
🟡 Mathlib style ✅ Idiomatic let/simpa/change
🟡 Performance ✅ Thin wrappers; no impact
🟡 Modularity ✅ Improvement — uses bundled Mathlib CLM API over ad hoc witnesses
🟡 Documentation ✅ N/A — proof-internal only
🟡 Paper-gap notes ✅ N/A — none changed

Verdict: APPROVE. No 🔴 or 🟡 issues. Clean, well-scoped cleanup.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: APPROVE ✅

Summary

Clean, well-scoped, proof-only refactor replacing ad hoc LinearMap.continuous_of_finiteDimensional witnesses with bundled LinearMap.toContinuousLinearMap E. No mathematical statement changes, no API changes.

Category-by-category assessment

Category Severity Status
1. Proof integrity 🔴 ✅ Pass
2. Proof correctness 🔴 ✅ Pass
3. Mathlib style 🟡 ✅ Pass
4. Type safety 🔴 ✅ Pass
5. Performance 🟡 ✅ Pass
6. Modularity & duplication 🟡 ✅ Pass
7. Documentation 🟡 ✅ Pass
8. Paper-gap notes 🟡 ✅ Pass

Details

Proof correctness: The simpa [E'] calls correctly use the @[simp] lemma coe_toContinuousLinearMap' (Mathlib Topology/Algebra/Module/FiniteDimension.lean:315) — ⇑(toContinuousLinearMap f) = f — to reduce E' applications to E applications. The telescoping and limit arguments are mathematically identical to the original proofs. The change in Ergodicity.lean is semantically redundant (E ∘ f is definitionally fun x ↦ E (f x)) but harmless.

No issues found. No 🔴 blockers, no 🟡 required changes.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: refactor(Channel/FixedPoint): use CLMs in Cesaro limits

Verdict: APPROVE. No 🔴 or 🟡 issues found. This is a correct, mathematically-equivalent proof-only refactor of two lemmas.

Scope

  • IsChannel.exists_posSemidef_fixedPoint (TNLean/Channel/FixedPoint/Cesaro.lean)
  • IsChannel.cesaroMean_subseq_limit_fixedPoint (TNLean/Channel/Irreducible/Ergodicity.lean)

Both replace the local continuity witness have hE_cont : Continuous E := LinearMap.continuous_of_finiteDimensional E with a bundled map E' := LinearMap.toContinuousLinearMap E, then obtain the Filter.Tendsto of E along the convergent (sub)sequence via E'.continuous.tendsto.

Correctness

  • Type safety ✓E : Matrix (Fin D) (Fin D) ℂ →ₗ[ℂ] Matrix (Fin D) (Fin D) ℂ (Cesaro.lean:38) is a LinearMap on a finite-dimensional ℂ-space, so LinearMap.toContinuousLinearMap E is well-typed.
  • The simpa [E'] bridge is soundLinearMap.coe_toContinuousLinearMap' (Mathlib/Topology/Algebra/Module/FiniteDimension.lean:315) is a non-deprecated @[simp] rfl-lemma stating ⇑(toContinuousLinearMap f) = f, so E' ρ/E' ∘ … reduce to E ρ/E ∘ … definitionally. In Ergodicity.lean the preceding change to E ∘ fun k => … correctly aligns the goal before simpa.
  • The telescoping identities (cesaroMean_telescope), h_diff, and the 0-limit arguments are untouched. Mathematical statements and hypotheses are unchanged.

Proof integrity ✓

No sorry/axiom/native_decide/kernel bypass introduced; no maxHeartbeats or debug artifacts. No documentation changes needed (statements unchanged). No docs/paper-gaps/ files touched.

ℹ️ Advisory (does not block)

The PR motivation ("Mathlib 4.31 provides the finite-dimensional map … so these proof-local continuity witnesses can be removed") is slightly misleading. LinearMap.continuous_of_finiteDimensional is not deprecated — it is exactly the lemma Mathlib uses to construct toContinuousLinearMap (FiniteDimension.lean:300, toFun f := ⟨f, f.continuous_of_finiteDimensional⟩). The previous two-line form was arguably more direct and avoided the let + coercion-bridging simpa (the diff grows from 2→4 lines in Cesaro.lean and 3→6 in Ergodicity.lean). Either form is correct; this is a stylistic preference, not the removal of an obsolete API.

Note: I could not run lake build locally (project oleans not built in this environment), so correctness above is established by reading the diff against the cited Mathlib lemmas; the PR reports a successful targeted build of both files.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: APPROVE ✅

Summary

Clean, minimal, proof-only refactor that replaces the local LinearMap.continuous_of_finiteDimensional E continuity witnesses with the bundled E' := LinearMap.toContinuousLinearMap E in two Cesàro fixed-point limit arguments. No mathematical statement, hypothesis, API, or blueprint changes.

Category-by-category assessment

Category Severity Status
1. Proof integrity 🔴 ✅ Pass
2. Proof correctness 🔴 ✅ Pass
3. Mathlib style 🟡 ✅ Pass
4. Type safety 🔴 ✅ Pass
5. Performance 🟡 ✅ Pass
6. Modularity & duplication 🟡 ✅ Pass
7. Documentation 🟡 ✅ Pass
8. Paper-gap notes 🟡 ✅ Pass

Details

Proof correctness: The simpa [E'] calls correctly exploit the @[simp] lemma coe_toContinuousLinearMap' (Mathlib Topology/Algebra/Module/FiniteDimension.lean) — ⇑(toContinuousLinearMap f) = f — to reduce E' applications to E applications. The change in Ergodicity.lean:104-105 is semantically neutral (E ∘ f is definitionally fun x ↦ E (f x)) and just aligns the goal shape for simpa. The downstream telescoping (cesaroMean_telescope), h_diff, and h_rhs_zero chains feeding tendsto_nhds_unique are completely untouched.

Proof integrity: No sorry, axiom, admit, native_decide, or kernel bypasses introduced. Build succeeds with 8631 jobs; the only warnings are pre-existing "Copyright too short" header-linter notes on unrelated files.

Type safety: Matrix (Fin D) (Fin D) ℂ is finite-dimensional, so LinearMap.toContinuousLinearMap is valid and rests on the same finite-dimensionality that the original continuous_of_finiteDimensional used.

No 🔴 blockers. No 🟡 required changes.

@LionSR LionSR force-pushed the codex/cesaro-limit-clms branch from 50143f3 to 47f0402 Compare June 20, 2026 05:09

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blueprint ↔ Lean sync and prose review — 0 equivalence mismatches, 0 stale status tags, 0 prose issues.

Category A — Blueprint ↔ Lean equivalence

No .tex blueprint files are changed. Both modified files touch only proof bodies (proof-internal have/let blocks); no theorem signature is altered.

  • IsChannel.exists_posSemidef_fixedPoint carries \lean{IsChannel.exists_posSemidef_fixedPoint} with \leanok on statement and proof in the blueprint. The Lean signature is unchanged and no sorry or admit is introduced, so both tags remain valid.
  • IsChannel.cesaroMean_subseq_limit_fixedPoint has no blueprint entry; none is required for a proof-internal helper lemma.
  • No \notready tags affected. No declarations renamed or removed.

Category B — Prose quality

No .tex files changed. No Lean docstrings, module/sectioning comments, or inline comments are added or modified. Nothing to flag.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: APPROVE ✅

Clean, minimal, proof-only refactor. The local continuity witnesses LinearMap.continuous_of_finiteDimensional E in two Cesàro fixed-point limit arguments are replaced by the bundled continuous linear map E' := LinearMap.toContinuousLinearMap E. No theorem signature, hypothesis, mathematical statement, API, or blueprint entry changes.

Category-by-category assessment

Category Severity Status
1. Proof integrity 🔴 ✅ Pass
2. Proof correctness 🔴 ✅ Pass
3. Mathlib style 🟡 ✅ Pass
4. Type safety 🔴 ✅ Pass
5. Performance 🟡 ✅ Pass
6. Modularity & duplication 🟡 ✅ Pass
7. Documentation 🟡 ✅ Pass
8. Paper-gap notes 🟡 ✅ Pass

Details

Proof correctness. In IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean:292–296) and IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean:100–106), the Filter.Tendsto fact for E along the Cesàro subsequence is now obtained from E'.continuous.tendsto _ composed with the Cesàro convergence hypothesis. The simpa [E'] step is sound: it unfolds the let-bound E' and applies the @[simp] lemma LinearMap.coe_toContinuousLinearMap' (Mathlib/Topology/Algebra/Module/FiniteDimension.lean:315, ⇑(toContinuousLinearMap f) = f) to rewrite E' applications back to E. The change to E ∘ (fun k ↦ …) in Ergodicity.lean:104–105 is definitionally neutral and only aligns the goal shape for simpa. The downstream telescoping (cesaroMean_telescope), h_diff, h_rhs_zero, and tendsto_nhds_unique chains are unchanged.

Proof integrity. No sorry, axiom, admit, native_decide, or kernel bypasses; no maxHeartbeats or debug artifacts.

Type safety. Matrix (Fin D) (Fin D) ℂ is finite-dimensional, so LinearMap.toContinuousLinearMap applies on the same finite-dimensionality the original continuous_of_finiteDimensional relied on.

ℹ️ Advisory (does not block)

The PR motivation states the proof-local continuity witnesses "can be removed" because Mathlib 4.31 provides the bundled map. To be precise, LinearMap.continuous_of_finiteDimensional is not deprecated — it is exactly what toContinuousLinearMap is built from. Both forms are correct; this is a stylistic preference rather than removal of an obsolete API. Not a blocker.

No 🔴 blockers, no 🟡 required changes.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: APPROVE ✅

Clean, proof-only refactor replacing ad hoc LinearMap.continuous_of_finiteDimensional witnesses with the bundled LinearMap.toContinuousLinearMap E in two Cesàro fixed-point limit arguments. No mathematical statement, hypothesis, API, or blueprint changes.

Category-by-category assessment

Category Severity Status
1. Proof integrity 🔴 ✅ Pass — no sorry/axiom/admit/native_decide/kernel bypasses
2. Proof correctness 🔴 ✅ Pass — simpa [E'] correctly uses coe_toContinuousLinearMap' (@[simp]); limit arguments logically identical
3. Mathlib style 🟡 ✅ Pass — idiomatic let/simpa/change
4. Type safety 🔴 ✅ Pass — domain Matrix (Fin D) (Fin D) ℂ is finite-dimensional; toContinuousLinearMap valid
5. Performance 🟡 ✅ Pass — trivial rewrites, no performance impact
6. Modularity 🟡 ✅ Pass — net improvement: uses Mathlib's bundled CLM API
7. Documentation 🟡 ✅ N/A — proof-internal change only; no new statements
8. Paper-gap notes 🟡 ✅ N/A — no paper-gap files changed

Verification

  • Build: lake build TNLean.Channel.FixedPoint.Cesaro TNLean.Channel.Irreducible.Ergodicity → exit 0, 8631 jobs. Only pre-existing "Copyright too short" header-linter warnings, unrelated to this diff.
  • rg scan: No sorry/axiom/admit/native_decide/unsafeCast in changed files.

Correctness detail

In IsChannel.exists_posSemidef_fixedPoint (Cesaro.lean:292–296): E'.continuous.tendsto ρ yields Tendsto E' (nhds ρ) (nhds (E' ρ)); composing with hφ_tendsto gives Tendsto (E' ∘ σ ∘ φ) atTop (nhds (E' ρ)); simpa [E'] reduces E' to E via coe_toContinuousLinearMap'. Telescoping (cesaroMean_telescope), h_diff, and h_rhs_zero chains are untouched.

In IsChannel.cesaroMean_subseq_limit_fixedPoint (Ergodicity.lean:100–106): same mechanism, with a semantically neutral change to E ∘ … before simpa to align the goal shape. Downstream logic unchanged.

No 🔴 blockers. No 🟡 required changes. Approved.

@LionSR LionSR merged commit 42474c1 into main Jun 20, 2026
13 checks passed
@LionSR LionSR deleted the codex/cesaro-limit-clms branch June 20, 2026 05:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleanup Code cleanup and style fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants