Repository navigation
feat(Foundations): correction factorization and reward transport for transition matrices - #1676
Conversation
…transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine — independent agent review, not human approval, at 7085d68db489c129c39d3795fb25b3683fded7d7 (complete four-file layer over 96fd02a85579bbbce97c02110ed80da02684cb2e).
The algebra/API review is otherwise clean: correction factorization, copy intertwining, cumulative reward transport and the primary-copy error estimate have the stated quantifiers. The final geometric rate correctly combines the assumed entry and active-column bounds; constructing those bounds, detectors and machine/resource certificates remains outside this slice. The rational correction, genuine split and exact one-stage reward examples establish nonvacuity. Existing matrix APIs are reused, and selected abstracts/bridges/rendering are unaffected.
Please resolve the two inline documentation/source-mapping findings: row-sum control alone is not substochasticity, and the mapped reward theorem supplies the upper half of (4.30), not reward nonnegativity. No mathematical proof defect was found. I checked the pinned preprint's Section 4, pp.10–19, including (4.23)–(4.32); its nonnegativity premises explain both distinctions.
Validation: git diff --check passed; exact rational counterexamples checked independently. Author reports all six local gates. Lean CI 40970195091 was running at inspection; title passed. No local Lean elaboration/build.
| M *ᵥ v ≤ 1 := fun i => | ||
| le_trans (Finset.sum_le_sum fun j _ => mul_le_mul_of_nonneg_left (hv j) (hM i j)) (hM1 i) | ||
|
|
||
| /-- **Corrections keep rows substochastic.** If `E ≥ 0` and the rows of `C` sum to at most one, |
There was a problem hiding this comment.
Please say this preserves the row-sum upper bound, rather than substochasticity, here and in the module's main-results bullet (and matching test comment). Nonnegative corrected entries do not follow: over ℚ take C = 0 and E = !![0, 1/2; 0, 0]. All hypotheses hold, even strict upper triangularity, but D = -E has a negative entry. The pinned source separates D ≥ 0 from D1 ≤ C1 in Lemma 4.4 (p.15). Keep this useful general theorem; make clear that nonnegativity of D is a separate obligation.
| include hP hP1 hC hstep hp hp0 hp1 | ||
|
|
||
| /-- The stage rewards are bounded by the projected solution, hence by one. -/ | ||
| theorem rewardTransport_mulVec_le (l : ℕ) : |
There was a problem hiding this comment.
The PR's source table maps the full 0 ≤ W_l ≤ 1 in (4.30) to this theorem, but this statement only gives the upper bound. Its hypotheses permit negative rewards: take constant C_l = !![0,1;0,0], E_l = 0, P_l = 1, p = ![0,1] and e = ![-1,1]. Then every displayed hypothesis holds, yet B_l e = e has a negative coordinate. The source obtains the lower bound from B_l e ≥ 0 (p.18), using nonnegative corrections and initial reward. Please narrow the table/scope claim to the proved upper bound, or add the lower-bound corollary with those explicit assumptions using rewardTransport_nonneg and mulVec_nonneg. The existing error theorem itself is sound.
…ly it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
reviewer-crei-opus (agent review, not human approval; advisory: same session as the authoring workers) Head: Verdict: CHANGES REQUESTED (documentation and source mapping only). The mathematics is correct. Blockingreviewer-codex-edemaine's two inline findings at
Checked, no further findings
LimitsI did not build locally. |
…ward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine — independent agent APPROVE at 1fbc2671b8dbcee6119dbd9f79b4a36b2bf4b52a, not human approval. Delta from the full review.
Both findings are resolved: row-sum control is distinguished from nonnegativity, and rewardTransport_mulVec_nonneg supplies the lower bound with explicit nonnegative projections, corrections and initial reward. Its proof and concrete test agree with the corrected source table. The additional @[expose] changes visibility only; previous algebra/source coverage carries forward. No selected-abstract impact.
git diff --check passed. Author reports module/test builds and hygiene for this delta, with six-gate coverage on the earlier layer. Lean CI 40971839093 was running at inspection; title passed. No local Lean build.
…rint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ea 8 (cslib-community#1682) Move sq_walk_le to Expander/Basic.lean and derive expect_walk_sq_le from it. Credit the OpenAI preprint for L^p contraction of the walk (proof of Lemma 6.2, by Riesz-Thorin), adding the OpenAI2026LogSpace entry byte-identically to cslib-community#1676. Prove that the Jensen test instance is strict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Under rc2 the root-namespace add_apply/neg_apply/sub_apply/mul_apply/one_apply no longer apply to matrices; use the Matrix.* versions in CorrectionHierarchy and its test, as cslib-community#1653 does elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ea663ce)
SamuelSchlesinger
left a comment
There was a problem hiding this comment.
Coordinator codex-matrix-parent-refresh-20261030: APPROVE the compatibility delta at 4014d0c1714f65e566c8c01dbfab34e06b72e803 under the validated coordinator-fix rule. Agent review, not human approval. Reuse the outside full mathematical/source review and resolved delta approval.
An ordinary merge includes actual supported main 54edc940, preserving the original history. Christian Reitwiessner's existing ea663ced repair is cherry-picked with its Author/Claude credit and provenance; its patch and both target files are identical to that reviewed repair. It only qualifies Matrix apply lemmas in proofs/tests. Public definitions, statements, hypotheses and test assertions are unchanged. No unrelated #1710 payload is included.
At this exact head, the targeted module/test build, all six default scripts/check.sh gates, hygiene with the simp audit, changed-file lints and tidy-surface audit pass. The parallel-definition notice reports no candidates. The original rational correction/copy/reward fixtures pass on CSLib 254e30e6 / Mathlib 69552756; selected abstracts, bridges, catalogue and rendering have no impact.
Fresh hosted CI is running and remains an integration condition. Queue sequencing stays with root, after the assigned M1/native lanes; this refresh does not complete Phase 2.
…community#1677) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas for the rc2 Mathlib API Under rc2 the root-namespace add_apply/neg_apply/sub_apply/mul_apply/one_apply no longer apply to matrices; use the Matrix.* versions in CorrectionHierarchy and its test, as cslib-community#1653 does elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ea663ce) * fix(Foundations): qualify Matrix apply lemmas in FactorialTruncation for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions in FactorialTruncation and its test, rewrapping lines that crossed 100 columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 19cf8a8) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…lib-community#1683) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify copy-stage matrix apply lemmas Reuse the four shared CopyStage qualifications from Christian Reitwiessner and Claude Opus 5.5 in commit34406a084312428fd65108771467fbc7086f9c3f, and qualify the corresponding Matrix addition/multiplication in the older cutoffCorrectionIter_sum_le proof. No later detector/refactor payload is backported. Every statement, definition, attribute, test and original source credit is preserved. Coordinator codex-copy-stage-1683-refresh-20261030, bounded supported-pin fix for cslib-community#1683. Source audits pass; hosted exact-head validation follows before any author-branch update. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…ierarchy stage (cslib-community#1696) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): pilot with step-dependent multipliers and probabilistic column detectors Phase 2 slice 4 of cslib-community#1444 (tracked in cslib-community#1679): the pilot of Lemma 4.2 with step-dependent multipliers, the column detector of Lemma 4.3 over an abstract retention-channel interface, and one stage of the hierarchy whose multipliers, copy weights and overloaded set come from the detector, discharging the detector interface of copyStage_rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): derive fixed-multiplier iterate bounds from IsCorrectionSeq The row-sum, entry and input bounds of cutoffCorrectionIter in CopyStage are the fixed-multiplier case of the correction-sequence bounds; reuse them instead of re-proving. Statements are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 34406a0) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…erface (cslib-community#1698) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): pilot with step-dependent multipliers and probabilistic column detectors Phase 2 slice 4 of cslib-community#1444 (tracked in cslib-community#1679): the pilot of Lemma 4.2 with step-dependent multipliers, the column detector of Lemma 4.3 over an abstract retention-channel interface, and one stage of the hierarchy whose multipliers, copy weights and overloaded set come from the detector, discharging the detector interface of copyStage_rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): derive fixed-multiplier iterate bounds from IsCorrectionSeq The row-sum, entry and input bounds of cutoffCorrectionIter in CopyStage are the fixed-multiplier case of the correction-sequence bounds; reuse them instead of re-proving. Statements are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels satisfy the detector interface Instantiate RetentionChannels (cslib-community#1696) with the affine channels of cslib-community#1688 at rate a^H, with c_pi = 1, C_pi = C_pair = 2^H and C_var = 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 34406a0) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…rarchy with its stage bound (cslib-community#1702) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): pilot with step-dependent multipliers and probabilistic column detectors Phase 2 slice 4 of cslib-community#1444 (tracked in cslib-community#1679): the pilot of Lemma 4.2 with step-dependent multipliers, the column detector of Lemma 4.3 over an abstract retention-channel interface, and one stage of the hierarchy whose multipliers, copy weights and overloaded set come from the detector, discharging the detector interface of copyStage_rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): derive fixed-multiplier iterate bounds from IsCorrectionSeq The row-sum, entry and input bounds of cutoffCorrectionIter in CopyStage are the fixed-multiplier case of the correction-sequence bounds; reuse them instead of re-proving. Statements are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): constants of the correction-and-copy hierarchy Bundle the constants and cutoffs of one hierarchy stage with all conditions used by the stage lemmas, prove that they exist for every density divisor q > 0, and restate one detector-driven stage with the bundled constants. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): the iterated correction-and-copy hierarchy and its stage bound Iterate the detector-driven stages on V (l+1) ≃ Lex (V l × Fin D₀) at rates q⁻¹ ^ l and prove 0 ≤ p x - W_l(x̄_l) ≤ |V 0| (2^c)⁻¹^l from the construction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): document every HierarchyParams field Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): clarify reduced hierarchy parameter scope Address cslib-community#1702 review5707105708: parameter existence is the reduced algebraic-stage package. Preserve the full threshold ladder and root/complement regularity gap for Q and every step cutoff. Correct m=ceilNat(q)*(k+1) and D0=m+1. No Lean declaration or proof body changes. Codex worker codex-hierarchy-fixes-1702-1704-20261030. Source-only preparation; supported-pin integration, full validation and outside delta review remain required before publication. * fix(Foundations): qualify Matrix apply lemmas for the rc2 Mathlib API Under rc2 the root-namespace add_apply/neg_apply/sub_apply/mul_apply/one_apply no longer apply to matrices; use the Matrix.* versions in CorrectionHierarchy and its test, as cslib-community#1653 does elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ea663ce) * fix(Foundations): qualify Matrix apply lemmas in FactorialTruncation for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions in FactorialTruncation and its test, rewrapping lines that crossed 100 columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 19cf8a8) * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 34406a0) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…crete stage bound (cslib-community#1704) * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): pilot with step-dependent multipliers and probabilistic column detectors Phase 2 slice 4 of cslib-community#1444 (tracked in cslib-community#1679): the pilot of Lemma 4.2 with step-dependent multipliers, the column detector of Lemma 4.3 over an abstract retention-channel interface, and one stage of the hierarchy whose multipliers, copy weights and overloaded set come from the detector, discharging the detector interface of copyStage_rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): derive fixed-multiplier iterate bounds from IsCorrectionSeq The row-sum, entry and input bounds of cutoffCorrectionIter in CopyStage are the fixed-multiplier case of the correction-sequence bounds; reuse them instead of re-proving. Statements are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels satisfy the detector interface Instantiate RetentionChannels (cslib-community#1696) with the affine channels of cslib-community#1688 at rate a^H, with c_pi = 1, C_pi = C_pair = 2^H and C_var = 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): constants of the correction-and-copy hierarchy Bundle the constants and cutoffs of one hierarchy stage with all conditions used by the stage lemmas, prove that they exist for every density divisor q > 0, and restate one detector-driven stage with the bundled constants. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): the iterated correction-and-copy hierarchy and its stage bound Iterate the detector-driven stages on V (l+1) ≃ Lex (V l × Fin D₀) at rates q⁻¹ ^ l and prove 0 ≤ p x - W_l(x̄_l) ≤ |V 0| (2^c)⁻¹^l from the construction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): document every HierarchyParams field Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine channels at every stage of the hierarchy Stage l hashes identifiers into a prime field P_l >= max(2^l, M l) at rate (2^H)^-l with uniform constants, discharging the channel hypotheses of sub_hierarchyReward_le; radix identifiers give a fully concrete instance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): clarify reduced hierarchy parameter scope Address cslib-community#1702 review5707105708: parameter existence is the reduced algebraic-stage package. Preserve the full threshold ladder and root/complement regularity gap for Q and every step cutoff. Correct m=ceilNat(q)*(k+1) and D0=m+1. No Lean declaration or proof body changes. Codex worker codex-hierarchy-fixes-1702-1704-20261030. Source-only preparation; supported-pin integration, full validation and outside delta review remain required before publication. * refactor(Probability): share hierarchy radix identification Move radixCopyEquiv, radixCopyEquiv_val and radixCopyEquiv_lt verbatim beside DetectedHierarchy. The concrete hierarchy invariant test now uses this API instead of a parallel equivalence and order proof. Keep finProdFinEquiv reuse and original authorship. Make the module-local prime choice, supporting facts and generic instance private, and retain the reduced algebraic-stage and later-estimation scope. Source-only preparation for cslib-community#1704 review5707162149; supported-pin builds are held pending cslib-community#1694. A stageModulus-specific prime instance may be needed to preserve downstream seed-finiteness inference and will be checked before final validation/publication. * fix(Foundations): qualify Matrix apply lemmas for the rc2 Mathlib API Under rc2 the root-namespace add_apply/neg_apply/sub_apply/mul_apply/one_apply no longer apply to matrices; use the Matrix.* versions in CorrectionHierarchy and its test, as cslib-community#1653 does elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ea663ce) * fix(Foundations): qualify Matrix apply lemmas in FactorialTruncation for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions in FactorialTruncation and its test, rewrapping lines that crossed 100 columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 19cf8a8) * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 34406a0) * fix(Probability): retain prime stage-modulus inference Keep the generic prime-choice implementation and supporting facts private. Make stageModulus a non-exposed definition with the same body: Lean rejects the private helper in the exposed abbreviation body. Export only Fact (stageModulus M l).Prime, using the private primality fact, so Mathlib derives NeZero and the finite-field/seed structures for actual hierarchy clients. Confirmed missing NeZero(stageModulus) and Fintype(stageSeed) in the real hierarchy module after privacy; the existing DetectedHierarchy and HierarchyChannels fixtures pass the strict focused build with this bridge (6152 jobs). No new prime-size, encoding, channel or resource guarantee. Full final validation and outside exact-head API delta review follow. --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…ral gap (cslib-community#1685) * feat(Expander): fourth-moment decay of the random walk from the spectral gap (cslib-community#1682) Pointwise Jensen for walks, L4 contraction, and for mean-zero f E (W^(s+t) f)^4 <= (lambda^(4s) + lambda^(2t)) E f^4, hence a 2 lambda^(2t) factor over 2t steps, without interpolation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): derive expect_walk_sq_le from sq_walk_le; cite idea 8 (cslib-community#1682) Move sq_walk_le to Expander/Basic.lean and derive expect_walk_sq_le from it. Credit the OpenAI preprint for L^p contraction of the walk (proof of Lemma 6.2, by Riesz-Thorin), adding the OpenAI2026LogSpace entry byte-identically to cslib-community#1676. Prove that the Jensen test instance is strict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…on ZMod n × ZMod n (cslib-community#1678) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…hs (cslib-community#1693) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequalities and spectral gaps of box products of permutation multigraphs (cslib-community#1682) Two permutation families on V and W give the family on V × W that moves one coordinate at a time. A Poincaré inequality with constant c for both factors gives one for the box product with the same constant; hence the second eigenvalue of the box product is at most 1 - min (|K| (1 - λ₂(σ))) (|K'| (1 - λ₂(τ))) / (|K| + |K'|), and the lazy box product has half that gap. This is the product walk over components of Lemma 6.2 of the OpenAI preprint (gap γ/J for J components). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…ons with a spectator (cslib-community#1695) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…and translations (cslib-community#1699) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → ZMod L) (cslib-community#1682) Step (B) of the frame-lifted gap plan on cslib-community#1682: - Fintype.expect_sq_sub_expect_le_sum_expect_sq_sub_update: the Efron–Stein inequality for a uniform tuple with a spectator; - Fintype.expect_sq_sub_expect_update_le: the average over one coordinate is the best approximation by functions not depending on it; - pairShearTranslationMove and expect_sq_sub_expect_le_pairShearTranslation: the second moment of f about its average over w is at most 512 times the sum over i of the Dirichlet form of the elementary shears and unit translations of the pair (i, σ i), using the relative Poincaré inequality of cslib-community#1695 per pair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein test (cslib-community#1682) Review fixes for cslib-community#1699: - references.bib: EfronStein1981 (Ann. Statist. 9(3):586–596) and Steele1986 (Ann. Statist. 14(2):753–758), with DOIs; - EfronStein.lean cites both and gains a References section; - PairShearTranslation.lean notes that the all-coordinates bound is vacuous for H = 1; - the test computes both sides of Efron–Stein for the agreement indicator on Fin 2 → Bool (1/4 ≤ 1/2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…ro vectors of (ZMod P)^H (cslib-community#1703) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → ZMod L) (cslib-community#1682) Step (B) of the frame-lifted gap plan on cslib-community#1682: - Fintype.expect_sq_sub_expect_le_sum_expect_sq_sub_update: the Efron–Stein inequality for a uniform tuple with a spectator; - Fintype.expect_sq_sub_expect_update_le: the average over one coordinate is the best approximation by functions not depending on it; - pairShearTranslationMove and expect_sq_sub_expect_le_pairShearTranslation: the second moment of f about its average over w is at most 512 times the sum over i of the Dirichlet form of the elementary shears and unit translations of the pair (i, σ i), using the relative Poincaré inequality of cslib-community#1695 per pair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein test (cslib-community#1682) Review fixes for cslib-community#1699: - references.bib: EfronStein1981 (Ann. Statist. 9(3):586–596) and Steele1986 (Ann. Statist. 14(2):753–758), with DOIs; - EfronStein.lean cites both and gains a References section; - PairShearTranslation.lean notes that the all-coordinates bound is vacuous for H = 1; - the test computes both sides of Efron–Stein for the agreement indicator on Fin 2 → Bool (1/4 ≤ 1/2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequality for elementary moves on nonzero vectors of (ZMod P)^H (cslib-community#1682) Step (C) of the frame-lifted gap plan on cslib-community#1682: for a prime P and H ≥ 3, every real function on (ZMod P)^H is, on the nonzero vectors, within 36864 H² times its total squared change along the elementary moves F ↦ F + F b • e a (a ≠ b) of some constant, uniformly in P. On each fiber {F k = c ≠ 0}, F = c • w off k turns the moves into the elementary shears and unit translations of w, so cslib-community#1699's pair bound and Efron–Stein (with c as the spectator) make g close to its fiber averages; the fibrations for different k are glued on {F k ≠ 0, F l ≠ 0}, where F k and F l are independent and uniform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…oordinates (cslib-community#1705) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): frame-conditioned channels, validated variants and conditional averaging (cslib-community#1682) Frame-conditioned retention channels over ZMod P with their exact marginal rate, coordinates (F, w) on retention slices, the affine move (F, w) -> (gF, gw + c), validated walk variants with their unique wrap, and conditional variance decay on every slice from a spectral-gap hypothesis on the coordinates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequalities and spectral gaps of box products of permutation multigraphs (cslib-community#1682) Two permutation families on V and W give the family on V × W that moves one coordinate at a time. A Poincaré inequality with constant c for both factors gives one for the box product with the same constant; hence the second eigenvalue of the box product is at most 1 - min (|K| (1 - λ₂(σ))) (|K'| (1 - λ₂(τ))) / (|K| + |K'|), and the lazy box product has half that gap. This is the product walk over components of Lemma 6.2 of the OpenAI preprint (gap γ/J for J components). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → ZMod L) (cslib-community#1682) Step (B) of the frame-lifted gap plan on cslib-community#1682: - Fintype.expect_sq_sub_expect_le_sum_expect_sq_sub_update: the Efron–Stein inequality for a uniform tuple with a spectator; - Fintype.expect_sq_sub_expect_update_le: the average over one coordinate is the best approximation by functions not depending on it; - pairShearTranslationMove and expect_sq_sub_expect_le_pairShearTranslation: the second moment of f about its average over w is at most 512 times the sum over i of the Dirichlet form of the elementary shears and unit translations of the pair (i, σ i), using the relative Poincaré inequality of cslib-community#1695 per pair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein test (cslib-community#1682) Review fixes for cslib-community#1699: - references.bib: EfronStein1981 (Ann. Statist. 9(3):586–596) and Steele1986 (Ann. Statist. 14(2):753–758), with DOIs; - EfronStein.lean cites both and gains a References section; - PairShearTranslation.lean notes that the all-coordinates bound is vacuous for H = 1; - the test computes both sides of Efron–Stein for the agreement indicator on Fin 2 → Bool (1/4 ≤ 1/2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequality for elementary moves on nonzero vectors of (ZMod P)^H (cslib-community#1682) Step (C) of the frame-lifted gap plan on cslib-community#1682: for a prime P and H ≥ 3, every real function on (ZMod P)^H is, on the nonzero vectors, within 36864 H² times its total squared change along the elementary moves F ↦ F + F b • e a (a ≠ b) of some constant, uniformly in P. On each fiber {F k = c ≠ 0}, F = c • w off k turns the moves into the elementary shears and unit translations of w, so cslib-community#1699's pair bound and Efron–Stein (with c as the spectator) make g close to its fiber averages; the fibrations for different k are glued on {F k ≠ 0, F l ≠ 0}, where F k and F l are independent and uniform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): uniform spectral gap of the affine walk on slice coordinates (cslib-community#1682) Step (D) of the frame-lifted gap plan on cslib-community#1682. Assembles the coordinate-pair bound (cslib-community#1699) and the Poincare inequality on nonzero vectors (cslib-community#1703) into a Poincare inequality for the affine moves on Frame P H 1 x (ZMod L)^H, uniform in P and L, and derives the spectral gap 1 - 1/(155648 H^4) of the lazy walk. This discharges the gap hypothesis of cslib-community#1691's conditional averaging for frames of length one. Adds Matrix.SpecialLinearGroup.map_transvection and transvection_mulVec in Foundations, reusing Mathlib's SpecialLinearGroup.transvection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…ntion channels (cslib-community#1710) * chore(deps): track CSLib main and Lean rc2 Advance CSLib to 8a8ad748 and synchronize Mathlib, the documentation generator, Verso, and all three lockfiles with Lean v4.36.0-rc2. Keep the root and documentation projects on the same inherited dependency revisions. * refactor(probability): use generic infinite-sum lemmas Replace 187 deprecated ENNReal wrapper uses across 55 proof files with their generic counterparts. The exact mapping is: - ENNReal.tsum_le_tsum -> tsum_le_tsum (94) - ENNReal.tsum_add -> tsum_add (54) - ENNReal.tsum_eq_zero -> tsum_eq_zero_iff (14) - ENNReal.summable -> CompleteLattice.summable (6) - ENNReal.tsum_comm -> tsum_comm (6) - ENNReal.tsum_prod' -> tsum_prod' (5) - ENNReal.le_tsum -> le_tsum (5) - ENNReal.tsum_eq_add_tsum_ite -> tsum_eq_add_tsum_ite (2) - ENNReal.tsum_sigma -> tsum_sigma (1) The old wrappers invoke these same theorems specialized to ENNReal. All five le_tsum calls already pass the function by name. No statements or definitions change. * fix(build): adapt proofs to the rc2 Mathlib API Qualify newly protected matrix and finite-sum lemmas, publicly import the relocated Matrix.Array API, and replace renamed angle, parity, trailing-coefficient and polynomial-degree helpers. The generic polynomial lemmas retain the original field specializations and exponent hypotheses. No theorem statement or definition body changes. Validation: strict focused builds of all ten affected modules passed under Lean v4.36.0-rc2. Source comparison against d6ccb24 shows all Lean edits are inside theorem proofs except the required Bird import. * test(quantum): qualify the protected matrix lemma Preserve the existing non-unitary matrix counterexample under rc2 Mathlib by explicitly selecting Matrix.mul_apply, as in the library proof repairs. * fix(build): normalize goals before proof automation Use expected-type-directed refinement for the generic zero-sum lemma and expose the determinant variable-count function before fun_prop. Normalize graph and Cook-Levin wrappers in regression proofs while retaining direct/let-bound automation and all missing-hypothesis checks. Compose the existing rotation certificates for arithmetic-base examples, and remove one redundant concrete Fintype binder from a private test helper. Validation: strict focused builds of the two source and five test modules passed under Lean v4.36.0-rc2. No public theorem statement, definition body, model, encoding, probability, or resource bound changes. No heartbeat or fun_prop compatibility option was introduced. * feat(Foundations): correction factorization and reward transport for transition matrices Pure linear algebra for the correction-and-copy hierarchy (cslib-community#1444 Phase 2, ideas 2 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Section 4: the factorization 1 - (C - E + EC) = (1 + E)(1 - C), the corrected inverse, copy splitting intertwined with its projection, and the reward transport identity with the stage error bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): expose IsStrictUpperTriangular so importers can apply it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): separate row-sum control from nonnegativity; add reward lower bound Review of cslib-community#1676: correction_mulVec_one_le only shows that row sums do not grow, so its docstring, the module summary and the test comment no longer call it substochasticity. Add rewardTransport_mulVec_nonneg, the lower half of (4.30), under nonnegative projections, corrections and reward. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): factorial truncation of cutoff corrections Second slice of cslib-community#1444 Phase 2 (idea 3 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.1 and Lemma 4.4: the cutoff correction recursion E = phi((C + EC)) on a strictly upper triangular C has a unique fixed point, its iterates increase towards it, and after k iterations the error is at most f e^(1/theta) (L/theta)^k / k!, independently of the size of the matrix. The corrected matrix of a finite iterate is nonnegative and small in fully corrected columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): use Nat.sum_Icc_choose for the hockey-stick step Review nit on cslib-community#1677: drop the private hockey-stick lemma. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Foundations): count chains with the integer support size Review of cslib-community#1677: the module docstring now bounds the chain count by m.choose k for the actual support size m, as the proof does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): one stage of the correction-and-copy hierarchy Third slice of cslib-community#1679 (Phase 2 of cslib-community#1444, ideas 3 and 4 of cslib-community#474), following the OpenAI preprint (2026-09-23), Lemma 4.2, Lemma 4.4 and Proposition 4.5: row-sum, entry, domination and support bounds for cutoff corrections; the copy step with explicit split fractions, its density and active-copy bounds; incidence counting; and the one-stage rates that feed the stage bound, given an abstract detector interface. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas for the rc2 Mathlib API Under rc2 the root-namespace add_apply/neg_apply/sub_apply/mul_apply/one_apply no longer apply to matrices; use the Matrix.* versions in CorrectionHierarchy and its test, as cslib-community#1653 does elsewhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): copy stages preserve strict upper triangularity Add cutoffCorrectionIter_isStrictUpperTriangular, cutoffCorrection_residual_isStrictUpperTriangular and copyStage_isStrictUpperTriangular (for the lexicographic order on Lex (V × Fin (m + 1))), so a stage's output can feed the next stage. Correct two descriptions: the pilot inputs have bounded row sums, not necessarily at most one, and copyStage_mulVec_one_le preserves the row-sum bound, with nonnegativity from copyStage_nonneg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas in FactorialTruncation for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions in FactorialTruncation and its test, rewrapping lines that crossed 100 columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): general copySplit_isStrictUpperTriangular beside copySplit State the preservation lemma for arbitrary weights and proportions in CorrectionHierarchy.lean, for the lexicographic order on Lex (V × ι), and derive copyStage_isStrictUpperTriangular from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): frame-conditioned channels, validated variants and conditional averaging (cslib-community#1682) Frame-conditioned retention channels over ZMod P with their exact marginal rate, coordinates (F, w) on retention slices, the affine move (F, w) -> (gF, gw + c), validated walk variants with their unique wrap, and conditional variance decay on every slice from a spectral-gap hypothesis on the coordinates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Foundations): pilot with step-dependent multipliers and probabilistic column detectors Phase 2 slice 4 of cslib-community#1444 (tracked in cslib-community#1679): the pilot of Lemma 4.2 with step-dependent multipliers, the column detector of Lemma 4.3 over an abstract retention-channel interface, and one stage of the hierarchy whose multipliers, copy weights and overloaded set come from the detector, discharging the detector interface of copyStage_rates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Foundations): derive fixed-multiplier iterate bounds from IsCorrectionSeq The row-sum, entry and input bounds of cutoffCorrectionIter in CopyStage are the fixed-multiplier case of the correction-sequence bounds; reuse them instead of re-proving. Statements are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels satisfy the detector interface Instantiate RetentionChannels (cslib-community#1696) with the affine channels of cslib-community#1688 at rate a^H, with c_pi = 1, C_pi = C_pair = 2^H and C_var = 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): pair and tail estimates for frame-conditioned retention channels Lemma 3.1, items 2-3, of the OpenAI preprint for frame-conditioned channels: the frame density q_fr (with 1/2 <= q_fr for r < H, via Mathlib's card_linearIndependent), pairwise independence of the unrestricted polynomial channel, the transfer bound dens_frame <= dens / q_fr, the pair bound and the Chebyshev lower tail, and the detector-interface instance retentionChannels_frameRetains (constants 2^H / q_fr and 4 / q_fr, or 2^(H+1) and 8 for r < H). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(Foundations): qualify Matrix apply lemmas in CopyStage and PilotCorrection for rc2 Under rc2 the root-namespace add_apply/sub_apply/mul_apply no longer apply to matrices; use the Matrix.* versions, as rc2-refresh/1676 and /1677 do for the lower modules of this stack. Proof-only; no statement changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 34406a0) --------- Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…γ/(J+1) (cslib-community#1706) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): frame-conditioned channels, validated variants and conditional averaging (cslib-community#1682) Frame-conditioned retention channels over ZMod P with their exact marginal rate, coordinates (F, w) on retention slices, the affine move (F, w) -> (gF, gw + c), validated walk variants with their unique wrap, and conditional variance decay on every slice from a spectral-gap hypothesis on the coordinates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequalities and spectral gaps of box products of permutation multigraphs (cslib-community#1682) Two permutation families on V and W give the family on V × W that moves one coordinate at a time. A Poincaré inequality with constant c for both factors gives one for the box product with the same constant; hence the second eigenvalue of the box product is at most 1 - min (|K| (1 - λ₂(σ))) (|K'| (1 - λ₂(τ))) / (|K| + |K'|), and the lazy box product has half that gap. This is the product walk over components of Lemma 6.2 of the OpenAI preprint (gap γ/J for J components). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → ZMod L) (cslib-community#1682) Step (B) of the frame-lifted gap plan on cslib-community#1682: - Fintype.expect_sq_sub_expect_le_sum_expect_sq_sub_update: the Efron–Stein inequality for a uniform tuple with a spectator; - Fintype.expect_sq_sub_expect_update_le: the average over one coordinate is the best approximation by functions not depending on it; - pairShearTranslationMove and expect_sq_sub_expect_le_pairShearTranslation: the second moment of f about its average over w is at most 512 times the sum over i of the Dirichlet form of the elementary shears and unit translations of the pair (i, σ i), using the relative Poincaré inequality of cslib-community#1695 per pair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein test (cslib-community#1682) Review fixes for cslib-community#1699: - references.bib: EfronStein1981 (Ann. Statist. 9(3):586–596) and Steele1986 (Ann. Statist. 14(2):753–758), with DOIs; - EfronStein.lean cites both and gains a References section; - PairShearTranslation.lean notes that the all-coordinates bound is vacuous for H = 1; - the test computes both sides of Efron–Stein for the agreement indicator on Fin 2 → Bool (1/4 ≤ 1/2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequality for elementary moves on nonzero vectors of (ZMod P)^H (cslib-community#1682) Step (C) of the frame-lifted gap plan on cslib-community#1682: for a prime P and H ≥ 3, every real function on (ZMod P)^H is, on the nonzero vectors, within 36864 H² times its total squared change along the elementary moves F ↦ F + F b • e a (a ≠ b) of some constant, uniformly in P. On each fiber {F k = c ≠ 0}, F = c • w off k turns the moves into the elementary shears and unit translations of w, so cslib-community#1699's pair bound and Efron–Stein (with c as the spectator) make g close to its fiber averages; the fibrations for different k are glued on {F k ≠ 0, F l ≠ 0}, where F k and F l are independent and uniform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): uniform spectral gap of the affine walk on slice coordinates (cslib-community#1682) Step (D) of the frame-lifted gap plan on cslib-community#1682. Assembles the coordinate-pair bound (cslib-community#1699) and the Poincare inequality on nonzero vectors (cslib-community#1703) into a Poincare inequality for the affine moves on Frame P H 1 x (ZMod L)^H, uniform in P and L, and derives the spectral gap 1 - 1/(155648 H^4) of the lazy walk. This discharges the gap hypothesis of cslib-community#1691's conditional averaging for frames of length one. Adds Matrix.SpecialLinearGroup.map_transvection and transvection_mulVec in Foundations, reusing Mathlib's SpecialLinearGroup.transvection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): product walk over channels and free bits with gap gamma/(J+1) (cslib-community#1682) Poincare inequalities tensorize over finitely many components (piPerms, iterating the binary box product along Fin.consEquiv). The free-bit torus (ZMod M)^H satisfies the Poincare inequality via the coordinate-pair bound with a trivial spectator. Together with the slice-coordinate gap, the lazy product walk over J channels and the torus has spectral expansion at most 1 - 1/(155648 (J+1) H^4), uniformly in the primes, sides, identifiers and M, and conditional averaging holds on every product of retention slices. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
…words of every length (cslib-community#1707) * feat(Expander): uniform spectral gap for the shear-translation graph on ZMod n × ZMod n (cslib-community#1444) Margulis–Gabber–Galil-type graph of unit shears and translations: a Poincaré inequality with constant 512 uniformly in n, lambda_2 <= 1 - 1/4096 and lazy spectral expansion <= 1 - 1/8192, by Parseval on ZMod n × ZMod n and a ping-pong mass argument on small frequencies. Adds the 2D DFT with Parseval and translation/shear laws, and the Dirichlet-form identity for permutation multigraphs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): retention by pairwise independent hashing (cslib-community#1444) A point is retained when its hash lies in a target set B. Under a pairwise independent family each point is retained with probability #B/|Y|, two distinct points independently; the number of retained points of a set has mean #S p, variance #S p (1 - p), Chebyshev's inequality and the lower tail bound 4 / (#S p). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): fourth-moment decay of the random walk from the spectral gap (cslib-community#1682) Pointwise Jensen for walks, L4 contraction, and for mean-zero f E (W^(s+t) f)^4 <= (lambda^(4s) + lambda^(2t)) E f^4, hence a 2 lambda^(2t) factor over 2t steps, without interpolation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): affine retention channels over a prime field (cslib-community#1682) Identifiers y : ZMod P are retained when A y + b lies in the box {v | all coordinates < L} of ZMod P ^ H. Exact rates (L/P)^H and their squares for pairs, the lower tail 4/(#A pi), independence of separate seeds, and the assembled channel properties at rate f = a^H with L = ceil(P a): f <= pi <= 2^H f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): share the shears of R × R; credit the OpenAI preprint (cslib-community#1444) Move Cslib.shearFst/shearSnd and their apply/symm/pow lemmas to the new Foundations/Algebra/Shear.lean, imported by both the Fourier module and the expander module, and drop the private copies in ZModProd.lean. Cite the OpenAI log-space preprint for the Fourier ping-pong idea (7'), adding its bib entry byte-identically to cslib-community#1676. Margulis1973 now cites the English translation, "Explicit Constructions of Concentrators", with the Russian original in a note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(Expander): credit the OpenAI Lean development for the Fourier ping-pong (cslib-community#1444) The preprint's text derives its mixing bound from Shalom's property (T); the elementary route is in OpenAI's AffineSampling.lean at rev 7ef5c0cc (ExactDerandomization.Analysis.Square, ping/squash). Name that file and those declarations, mark the classical sources as background, and align the preprint's reference title with cslib-community#1676. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): derive expect_walk_sq_le from sq_walk_le; cite idea 8 (cslib-community#1682) Move sq_walk_le to Expander/Basic.lean and derive expect_walk_sq_le from it. Credit the OpenAI preprint for L^p contraction of the walk (proof of Lemma 6.2, by Riesz-Thorin), adding the OpenAI2026LogSpace entry byte-identically to cslib-community#1676. Prove that the Jensen test instance is strict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): frame-conditioned channels, validated variants and conditional averaging (cslib-community#1682) Frame-conditioned retention channels over ZMod P with their exact marginal rate, coordinates (F, w) on retention slices, the affine move (F, w) -> (gF, gw + c), validated walk variants with their unique wrap, and conditional variance decay on every slice from a spectral-gap hypothesis on the coordinates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequalities and spectral gaps of box products of permutation multigraphs (cslib-community#1682) Two permutation families on V and W give the family on V × W that moves one coordinate at a time. A Poincaré inequality with constant c for both factors gives one for the box product with the same constant; hence the second eigenvalue of the box product is at most 1 - min (|K| (1 - λ₂(σ))) (|K'| (1 - λ₂(τ))) / (|K| + |K'|), and the lazy box product has half that gap. This is the product walk over components of Lemma 6.2 of the OpenAI preprint (gap γ/J for J components). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): relative Poincaré inequality for shears and translations with a spectator (cslib-community#1682) From the uniform Poincaré inequality of the shear-translation graph: - on the frequencies: for Φ vanishing at 0, its mass is at most 512 times its changes along the dual unit shears plus its mass weighted by the translation weights ‖e(ξᵢ) - 1‖² (via the bijectivity of dftProd); - with a spectator: when the shears also permute a finite set X and the translations fix it, every function on X × (ZMod n × ZMod n) is within 512 times its total squared change of its fiber averages over ZMod n × ZMod n (complex sums and real averages). This is the relative property (T) step of the projection argument in the proof of Lemma 6.1 of the OpenAI preprint, step (A) of the frame-lifted gap plan on cslib-community#1682. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(Expander): move the dftProd lemmas to ZModProd and drop import all; credit AffineSampling.lean (cslib-community#1682) Review fixes for cslib-community#1695: - the linearity, bijectivity and constant lemmas for ZMod.dftProd, and the Parseval identities for translations and sheared differences, now live in Foundations/Analysis/Fourier/ZModProd.lean; - ShearTranslation.lean's private Parseval helpers are replaced by these public lemmas (the shear ones are the case f = g); - RelativeShearTranslation.lean no longer uses import all; - the module docstring credits OpenAI's AffineSampling.lean at 7ef5c0cc (square_gap with the external permutations u in changeF; the frame lift slice_frame, frame_gap, slice_gap); our proof is independent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → ZMod L) (cslib-community#1682) Step (B) of the frame-lifted gap plan on cslib-community#1682: - Fintype.expect_sq_sub_expect_le_sum_expect_sq_sub_update: the Efron–Stein inequality for a uniform tuple with a spectator; - Fintype.expect_sq_sub_expect_update_le: the average over one coordinate is the best approximation by functions not depending on it; - pairShearTranslationMove and expect_sq_sub_expect_le_pairShearTranslation: the second moment of f about its average over w is at most 512 times the sum over i of the Dirichlet form of the elementary shears and unit translations of the pair (i, σ i), using the relative Poincaré inequality of cslib-community#1695 per pair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein test (cslib-community#1682) Review fixes for cslib-community#1699: - references.bib: EfronStein1981 (Ann. Statist. 9(3):586–596) and Steele1986 (Ann. Statist. 14(2):753–758), with DOIs; - EfronStein.lean cites both and gains a References section; - PairShearTranslation.lean notes that the all-coordinates bound is vacuous for H = 1; - the test computes both sides of Efron–Stein for the agreement indicator on Fin 2 → Bool (1/4 ≤ 1/2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Expander): Poincaré inequality for elementary moves on nonzero vectors of (ZMod P)^H (cslib-community#1682) Step (C) of the frame-lifted gap plan on cslib-community#1682: for a prime P and H ≥ 3, every real function on (ZMod P)^H is, on the nonzero vectors, within 36864 H² times its total squared change along the elementary moves F ↦ F + F b • e a (a ≠ b) of some constant, uniformly in P. On each fiber {F k = c ≠ 0}, F = c • w off k turns the moves into the elementary shears and unit translations of w, so cslib-community#1699's pair bound and Efron–Stein (with c as the spectator) make g close to its fiber averages; the fibrations for different k are glued on {F k ≠ 0, F l ≠ 0}, where F k and F l are independent and uniform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): uniform spectral gap of the affine walk on slice coordinates (cslib-community#1682) Step (D) of the frame-lifted gap plan on cslib-community#1682. Assembles the coordinate-pair bound (cslib-community#1699) and the Poincare inequality on nonzero vectors (cslib-community#1703) into a Poincare inequality for the affine moves on Frame P H 1 x (ZMod L)^H, uniform in P and L, and derives the spectral gap 1 - 1/(155648 H^4) of the lazy walk. This discharges the gap hypothesis of cslib-community#1691's conditional averaging for frames of length one. Adds Matrix.SpecialLinearGroup.map_transvection and transvection_mulVec in Foundations, reusing Mathlib's SpecialLinearGroup.transvection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): product walk over channels and free bits with gap gamma/(J+1) (cslib-community#1682) Poincare inequalities tensorize over finitely many components (piPerms, iterating the binary box product along Fin.consEquiv). The free-bit torus (ZMod M)^H satisfies the Poincare inequality via the coordinate-pair bound with a trivial spectator. Together with the slice-coordinate gap, the lazy product walk over J channels and the torus has spectral expansion at most 1 - 1/(155648 (J+1) H^4), uniformly in the primes, sides, identifiers and M, and conditional averaging holds on every product of retention slices. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(Probability): fourth-moment conditional averaging and validated words of every length (cslib-community#1682) Combines the fourth-moment decay of a walk from its spectral gap (cslib-community#1685) with the uniform slice and component gaps: on a retention slice, and on a product of retention slices with free bits, 2t steps of the lazy affine walk multiply the fourth central moment by at most 2 (1 - 1/(155648 (J+1) H^4))^(2t), uniformly in the moduli and identifiers. Extends the one-step validated variants to words of every length for the lazy walk: t steps equal t iterations of the validated step, and for the affine generators every valid wrap lies in the fixed box {-3, ..., 3}^H. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Samuel Giuseppe Schlesinger <sgschlesinger@gmail.com>
Part of #1679 (Phase 2 of #1444).
First slice of #1444 Phase 2 (ideas 2 and 4 of #474): the exact algebra of the correction-and-copy hierarchy, as general facts about finite matrices. Nothing here involves machines. Statements and names are ours. The ideas follow the OpenAI preprint (2026-09-23), Section 4, cited as
[OpenAI2026LogSpace]with the source revision pinned inreferences.bib. The preprint is not peer reviewed. No OAI Lean code was used, translated or consulted.Module
Complexity/Foundations/LinearAlgebra/Matrix/CorrectionHierarchy.lean, with tests inComplexityTests/CorrectionHierarchy.lean.What it proves
(1 + e) * (1 - c) = 1 - (c - e + e * c)(one_add_mul_one_sub_eq_one_sub). For matrices,(1 - (C - E + E * C)) *ᵥ p = (1 + E) *ᵥ ((1 - C) *ᵥ p). So ifpsolves(1 - C) p = e, it also solves the corrected equation with rewarde + E e. WhenIsUnit (1 + E).det,(1 - (C - E + E * C))⁻¹ *ᵥ (e + E *ᵥ e) = (1 - C)⁻¹ *ᵥ e. This holds in particular forE.IsStrictUpperTriangular, a new predicate (Mathlib only has the non-strictIsUpperTriangular), withdet (1 + E) = 1. IfE ≥ 0andC *ᵥ 1 ≤ 1, then(C - E + E * C) *ᵥ 1 ≤ C *ᵥ 1, so row sums do not grow. Nonnegativity ofC - E + E * Cdepends on the choice ofEand is proved for cutoff corrections in feat(Foundations): factorial truncation of cutoff corrections #1677.copySplit r s Dgives each vertex copies(x, i)with row weightsr i xand splits each entryD x yin proportionss x y j.copyWeight ris the weighted projection to parents. If∑ j, s x y j * r j y = 1whereverD x y ≠ 0, thencopySplit r s D * copyWeight r = copyWeight r * D. The copy step preserves nonnegativity, and it preserves substochasticity when the weights are at most one and the proportions sum to at most one.C l,E landP l : Matrix (V (l+1)) (V l)be stages withC (l+1) * P l = P l * (C l - E l + E l * C l). LetPc = copyProjection PandB = rewardTransport P Ebe the cumulative products. ThenC l * Pc l = Pc l - B l * (1 - C 0). HenceB l *ᵥ e = Pc l *ᵥ p - C l *ᵥ (Pc l *ᵥ p)whenever(1 - C 0) *ᵥ p = e.P land0 ≤ p ≤ 1, take primary copiesz l, whose rows ofP lare unit vectors. Thenp (z 0) - (B l *ᵥ e) (z l) ∈ Set.Icc 0 (∑ y, C l (z l) y), which is at most#A • εwhen the entries ofC lare at mostεand its nonzero columns lie inA. The paper's form issub_rewardTransport_mulVec_le_pow: if the entries ofC lare at most(2^(c+1))⁻¹^land its active columns number at most2^l * n, then0 ≤ p (z 0) - W l (z l) ≤ n * (2^c)⁻¹^l.Source → Lean
D = C − E + EC,I − D = (I+E)(I−C),(I+E)W = (I−D)p(§4 intro)one_add_mul_one_sub_eq_one_sub,Matrix.one_sub_correction_mulVec,Matrix.inv_one_sub_correction_mulVecD1 = C1 − E(1 − C1) ≤ C1(Lemma 4.4, row-sum part)Matrix.correction_mulVec_one,Matrix.correction_mulVec_one_leC⁺(x_i, y_j) = r_i(x) D(x,y) s_j(D(x,y)/f),C⁺P_r = P_r D(4.23), (4.26); substochastic (Prop. 4.5)Matrix.copySplit,Matrix.copyWeight,Matrix.copySplit_mul_copyWeight,Matrix.copySplit_mulVec_one_le. The proportions are a generals x y j, and (4.27) is the hypothesishsP^c,B(4.28);C_l P^c_l = P^c_l − B_l(I − S)(4.29);W_l = P^c_l p₀ − C_l P^c_l p₀,0 ≤ W_l ≤ 1(4.30); update (4.31)Matrix.copyProjection,Matrix.rewardTransport,Matrix.mul_copyProjection,Matrix.rewardTransport_mulVec(identity),Matrix.rewardTransport_mulVec_nonneg(0 ≤ W_l, givenP, E, e ≥ 0),Matrix.rewardTransport_mulVec_le(W_l ≤ P^c_l p₀ ≤ 1),Matrix.rewardTransport_succ_mulVecScope and limits. The entry and active-count rates (
C_l ≤ q^{−l},|A(C_l)| ≤ 2^l |V₀|) are hypotheses here. In the preprint they come from the cutoff corrections (§4.1, Lemma 4.1), the detectors (§4.2–4.3, which use the retention channels of Phase 3) and the active-count argument of Proposition 4.5. Factorial truncation (Lemma 4.1) is the next slice, #1677, stacked on this PR. The detector and active-count part is reported on #1444. Scalars are any (ordered) ring, so the tests use exactℚmatrices. The factorial bound needsℝforexp.Tests. A 3-state walk over
ℚ: the correction moves weight1/2from a transition into the reward, and the corrected inverse still gives acceptance probability1/4. A copy split halves the entries and intertwines with its projection. In a one-stage hierarchy that removes every transition (C³ = 0), the stage-1 reward from the start is exactly1/4, which follows from the error bound.Validation and review. The current compatibility-delta record owns the exact head, all six local gates, source audits and carried-forward outside mathematical/source approval. The refresh ordinary-merges actual supported main and reuses Christian Reitwiessner's existing Matrix-lemma qualification repair; original history and credit are preserved. Public definitions, theorem statements, hypotheses and test assertions are unchanged. Current hosted CI and coordinator sequencing remain integration conditions.
The own layer leaves ROADMAP, selected abstracts, bridges, catalogue and PDF rendering unchanged.
AI assistance: written by Claude Code (Claude Opus 5.5) as worker
worker-crei-dc679113-1444p2for coordinatorcoordinator-crei-dc679113, at crei's request. Codex coordinatorcodex-matrix-parent-refresh-20261030performed the supported-pin integration, reused the existing proof-only repair and ran validation.🤖 Generated with Claude Code