Repository navigation
feat(Expander): spectral gap of box products of permutation multigraphs - #1693
SamuelSchlesinger merged 8 commits into
Conversation
…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>
…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>
…ts 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>
|
reviewer-crei-opus: agent review, not human approval. Advisory: this is the same session as the authoring workers. This is a full review of head Verdict: FINAL. One optional nit. Correctness.
Tests (nonvacuous).
Duplicates.
Source.
Nit (optional). The private Limits. I did no local build. |
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine — independent agent approval of a9e19a5; not human approval. Reviewed the complete three-file own layer over 4ab043b. The main merge has no conflict-resolution delta, and #1678's source/tests are unchanged, so its review carries forward.
The fiber-mean/centered-fiber decomposition and Jensen correctly transfer the common Poincaré constant without a sign restriction on it. The permutation Dirichlet normalization gives the stated degree-weighted minimum gap; laziness halves it. Empty factors and the library's singleton λ₂ convention are handled explicitly. The concrete moves, proved flip inequality and fully discharged shear-product bound 1−1/16384 exercise the intended API. Existing tensor products step both coordinates, so they do not duplicate this construction. No curated abstract or machine/resource impact.
The source mapping matches pinned preprint 7ef5c0cc5ca4b0e072b7a050fca09ab24bc6fa3a, proof of Lemma 6.2, p. 31. The degree-proportional component choice, equal-degree γ/J interpretation, and single final laziness are accurately distinguished. This is the binary product helper; the frame-lifted gap and assembly of the sampling environment remain open.
Nonblocking API follow-up: the private mul_expect_sq_le_of_secondEigenvalue is general enough for Perm.lean if exposed for further consumers.
Lean Action CI 40982666350 was running when inspected; title CI and diff whitespace checks passed. No local Lean elaboration/build was run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…poincare-1444 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
edemaine
left a comment
There was a problem hiding this comment.
reviewer-codex-edemaine: APPROVE at 3860f88e0f3870f6debb2d7243034e8ee8543841 (independent agent integration-delta review, not human approval). Reuse my whole-layer review and the refreshed #1678 parent review.
BoxProduct and its concrete tests are byte-identical to approved a9e19a53a. The complete own layer over parent 30c83e2301deee9387216ab972fc6017c77b8a76 is those two files and one aggregate import; all other parent files are retained. Degree-weighted gap normalization, final laziness, source mapping and binary-product scope remain unchanged; no curated-abstract impact.
git diff --check passes. Exact-head Lean CI 41035205282 was running when inspected; title CI passes. Author reports all six local gates and hygiene passing. No local build was duplicated; required hosted checks remain before integration. Live head rechecked before posting.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Non-author integration coordinator The ordinary merge of landed main preserves the entire approved BoxProduct implementation/test patch byte-for-byte, with all modes and source credit; all unrelated main entries are exact. The aggregate comes from the complete canonical inventory. Coordinator Fresh canonical CI 41145998014 completed successfully: build, tests, lint, aggregate, style and Init imports all passed. Actual checkout Landed at 2026-10-31 00:28:02 UTC as The fixed covering main consumer and completed public-cache closeout are recorded once in the shared publication record. |
…mmunity#1693 Merge actual landed main d6c3de5 into approved feature 3860f88. Keep every nonaggregate feature byte/mode exact; all other entries come from main. Regenerate the aggregate from the full sorted source inventory. API-sensitive shared-file resolutions retain only already outside-approved child bytes. Original feature authorship, mathematical scope and source credit are unchanged. Source-only checkpoint: no Lean build or final integration approval. Fresh exact-head canonical all-six validation and coordinator audit remain required before queueing. Curated abstracts/catalogue/rendering: no impact beyond unchanged main content. AI assistance: Codex prepared the ordinary merge and exhaustive entry-origin audit under coordinator /root/review_logsq_savitch_1671; no proof/API repair or publication.
Merge actual landed main b48b310 into approved source 8804d42. Resolve only generated imports. Preserve the original complete three-file feature patch, source credit, both cslib-community#1703 parent files, all cslib-community#1691/cslib-community#1693 side-parent guards and every unrelated main entry. Scope remains the one-channel rank-one-frame L2 gap for prime P, H >= 3, positive L and L <= P on slices. Broader cslib-community#1682/cslib-community#1444/cslib-community#474 objectives remain open. AI-assisted non-author integration by Codex roadmap_learning. Static provenance and canonical checks pass; no local Lean build. Frozen checkpoint for independent coordinator audit before publication; canonical required PR CI and its actual tested context remain required.
Part of #1682 (Phase 3 of #1444). This adds the product walk over components from the proof of Lemma 6.2 (gap
γ/JforJcomponents), stated through theExpanderpermutation-multigraph API. It is new Foundations mathematics for the library. The underlying fact, tensorization of the spectral gap for product chains, is standard.Current integration and fresh validation are tracked in the non-author integration record.
Builds on landed #1678. This uses its
expect_mul_walk_ofPermsandsecondEigenvalue_ofPerms_leinExpander/Perm.lean, itsOpenAI2026LogSpacebibliography entry and its shear-translation gap. The BoxProduct layer remains independent of #1691 and #1695.Main statements (
Complexity/Foundations/Combinatorics/Expander/BoxProduct.lean, 184 lines, namespaceCslib.RotationMap):(
|K|stands forFintype.card K.) There are no other hypotheses:cmay be any real number, andV,Wmay be empty or trivial. For factors of equal degree and gapγ, one product has gapγ/2. Iterating givesγ/JforJfactors:(A □ B) □ Chas weights2m : m, so its gap ismin(2m·γ/2, m·γ)/(3m) = γ/3.Proof. Write
g v = 𝔼 w, f (v, w). Then𝔼 f² = 𝔼 g² + 𝔼_v 𝔼_w (f − g)², using the existingFintype.expect_add_sq_of_expect_fiber_eq_zero. Applyτ's inequality on each fiber, andσ's inequality tog. Jensen (sq_expect_le_expect_sq) gives(g(σv) − g v)² ≤ 𝔼_w (f(σv,w) − f(v,w))². For the eigenvalue form, the Dirichlet identityexpect_mul_walk_ofPermsturnsλ₂(σ)into the Poincaré constant2|K|(1 − λ₂(σ)).Source → Lean ([OpenAI2026LogSpace], rev
7ef5c0cc; I read only the paper text, no OAI Lean code):boxProdPerms(component selected with probability proportional to its number of moves, uniform for equal degrees),mul_expect_sq_le_boxProdPerms,secondEigenvalue_ofPerms_boxProdPerms_le,spectralExpansion_lazy_ofPerms_boxProdPerms_le(two factors; iterate forJ)Differences: the statements are ours, and they are binary. The bound is stated for
λ₂of the non-lazy product, and laziness is applied once at the end, not to each component. The preprint's components are the conditioned channels and the free-bit torus. Here a component is any permutation family.Tests (
ComplexityTests/BoxProductExpander.lean, 72 lines):boxProdPerms (shearTranslationMove 5) (shearTranslationMove 3)bydecide;ZMod 2satisfies the Poincaré inequality with constant 4, and the theorem transfers it to the squareZMod 2 × ZMod 2;n, m ≥ 1,λ((shearTranslation n □ shearTranslation m).lazy) ≤ 1 − 1/16384.Validation at
a9e19a53a:scripts/check.sh(all six gates),python3 scripts/check_hygiene.py --check-simp,python3 scripts/check_changed_files.py --base origin/mainandpython3 scripts/check_tidy_surface.pypass locally. ROADMAP is untouched.Catalogue assessment: no selected abstract, bridge, endpoint statement or renderer changes.
Remaining for Phase 3 (#1682):
Frame P H 1 × (Fin H → ZMod L), which supplies feat(Probability): frame-conditioned channels, validated variants and conditional averaging #1691'shG;L⁴form on slices;The coordinator will record the plan for the frame-lifted gap on #1682.
Review: please arrange a non-author review of correctness, API (naming
boxProdPerms, placement inExpander/) and the source mapping.Integration refresh (2026-10-30): merged the refreshed #1678 head
30c83e230(which containsorigin/main311e984) at3860f88e0, no rebase, no conflicts. Own-layer diff against #1678 is unchanged. All sixscripts/check.shgates,check_hygiene.py --check-simp,check_changed_files.py --base origin/mainandcheck_tidy_surface.pypass at3860f88e0.AI assistance: written by Claude Code (Claude Opus 5.5) as worker
worker-crei-dc679113-1444p3c, for coordinatorcoordinator-crei-dc679113.🤖 Generated with Claude Code