[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"GV1QNvR3rf":3},"# Lean Ridgelet\n\n\u003C!-- BEGIN GENERATED BADGES -->\n\u003Cp align=\"center\">\u003Ca href=\"https://github.com/shosonoda/lean-ridgelet/actions/workflows/audit.yml\">\u003Cimg alt=\"Assumption audit\" src=\"https://img.shields.io/github/actions/workflow/status/shosonoda/lean-ridgelet/audit.yml?branch=main&amp;label=assumption%20audit&amp;style=flat-square\">\u003C/a> \u003Ca href=\"https://lean-lang.org/\">\u003Cimg alt=\"Lean 4.32.0\" src=\"https://img.shields.io/badge/Lean-4.32.0-0f4c81.svg?style=flat-square\">\u003C/a> \u003Ca href=\"https://arxiv.org/abs/2106.04770v2\">\u003Cimg alt=\"arXiv 2106.04770v2\" src=\"https://img.shields.io/badge/arXiv-2106.04770v2-b31b1b.svg?style=flat-square\">\u003C/a> \u003Ca href=\"LICENSE\">\u003Cimg alt=\"Apache 2.0\" src=\"https://img.shields.io/badge/license-Apache--2.0-blue.svg?style=flat-square\">\u003C/a>\u003C/p>\n\u003C!-- END GENERATED BADGES -->\n\nLean Ridgelet formalizes the mathematics of neural networks represented by integrals, and the\nridgelet transforms that recover their coefficients from a target function. It uses **Lean 4**,\na proof assistant that checks mathematical proofs, and **Mathlib**, its community mathematics\nlibrary. The project connects neural-network approximation theory with Fourier analysis,\noperator theory, and group representations.\n\n**Start with the [Blueprint](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/).**\nThis is a mathematical guide with definitions, theorem statements, and links to the corresponding\nLean code. You can read it without installing Lean or knowing its syntax.\n\n## The mathematical question\n\nA neural network with one hidden layer has the form\n\n$$\nf_N(x)=\\sum_{j=1}^{N}c_j\\,\\sigma(a_j\\cdot x-b_j).\n$$\n\nHere $x\\in\\mathbb{R}^m$ is an input, $\\sigma$ is an activation such as ReLU, and\n$(a_j,b_j,c_j)$ are the network parameters. Its continuous analogue replaces the sum by an\nintegral over weights and biases:\n\n$$\nS_\\sigma[\\gamma](x)=\\int_{\\mathbb{R}^m\\times\\mathbb{R}}\n\\gamma(a,b)\\,\\sigma(a\\cdot x-b)\\,da\\,db.\n$$\n\nThe function $\\gamma$ assigns a coefficient to each neuron. Given a target $f$, we ask how to\nconstruct $\\gamma$, when it reconstructs $f$, and how to describe all coefficients representing\nthe same function. A ridgelet transform analyzes $f$ against a family of ridge functions:\n\n$$\nR[f;\\rho](a,b)=\\int_{\\mathbb{R}^m}\nf(x)\\,\\overline{\\rho(a\\cdot x-b)}\\,dx.\n$$\n\nFor compatible activation and analysis functions, the central identity is\n\n$$\nS_\\sigma[R[f;\\rho]]=C_{\\sigma,\\rho}\\,f.\n$$\n\nAn *admissible pair* has a finite, nonzero reconstruction constant $C_{\\sigma,\\rho}$, so\ndividing the coefficients by this constant reconstructs $f$. The equations above introduce the\nEuclidean convention; the individual theorems specify their function spaces, integrability,\nparameter measures, and Fourier normalizations. Some identities hold almost everywhere or as\nlimits in a function-space norm.\n\nFor machine-learning researchers, these results explain representation, universality, and\nparameter nonuniqueness. A nonzero element of $\\ker S_\\sigma$ changes the coefficients while\nleaving the represented function unchanged. For analysts, the same questions lead to inversion\nformulas, adjoints, Hilbert-space decompositions, and intertwining operators. Finite-network\napproximation requires a further discretization argument, with its own hypotheses. The repository\nprovides formal definitions and proofs; training algorithms and numerical experiments are outside\nits present scope.\n\n## What is formalized\n\nThe four theory tracks have complementary roles. Each overview follows the source paper's\npublication order; the detail pages follow proof dependencies.\n\n| Track | Mathematical content | Reading and source |\n| --- | --- | --- |\n| **L2 theory** | Bounded synthesis and ridgelet operators, reconstruction, adjoints, null spaces, and the minimum-norm solution. Gaussian, tanh, and ReLU are realized in weighted function spaces. | [Overview](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/l2/overview/) · [Lean roadmap](LeanRidgelet/OverviewL2.lean) · [arXiv:2106.04770v2](https://arxiv.org/abs/2106.04770v2) |\n| **L1 theory** | Admissibility and reconstruction for unbounded activations, the Radon transform and filtered backprojection, and ReLU universality. The implemented function-level results have no proof placeholders. | [Overview](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/l1/overview-l1/) · [Lean roadmap](LeanRidgelet/OverviewL1.lean) · [arXiv:1505.03654v2](https://arxiv.org/abs/1505.03654v2) |\n| **Fourier-slice method** | A common derivation of ridgelet transforms, with instances for Euclidean and finite-field inputs, group convolution, symmetric spaces, and the d-plane transform. Symmetric-space reconstruction takes the relevant inversion formula as an explicit hypothesis. | [Overview](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/fs/overview-fs/) · [Lean roadmap](LeanRidgelet/OverviewFS.lean) · [arXiv:2402.15984](https://arxiv.org/abs/2402.15984) |\n| **Harmonic-analysis/Schur method** | Group actions and equivariant integral operators reduce reconstruction to Schur's lemma. Applications include affine, deep, group-convolutional, and quadratic architectures. | [Overview](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/ha/overview-ha/) · [Lean roadmap](LeanRidgelet/OverviewHA.lean) · [arXiv:2405.13682](https://arxiv.org/abs/2405.13682) |\n\nThe L2 solution geometry is implemented in\n[`Operator/UnitarySynthesis.lean`](LeanRidgelet/Operator/UnitarySynthesis.lean): under its stated\nhypotheses, every solution is the minimum-norm solution plus an element of the synthesis kernel.\nThe general unitary formulation makes this result reusable beyond a particular activation.\n\nIn the Schur approach, equivariance means that transforming the input commutes with applying the\noperator. When the input representation is irreducible, a bounded reconstruction operator with\nthis property is a scalar multiple of the identity. The scalar must still be shown to be nonzero.\n[`HA/AdjointReconstruction.lean`](LeanRidgelet/HA/AdjointReconstruction.lean) proves that a bounded,\nnonzero intertwining analysis operator $R$ satisfies $R^*R=cI$ with $c>0$ under the irreducibility\nhypothesis. This gives reconstruction using the adjoint as synthesis.\n\nGeneral-purpose results are developed in [`LeanRidgelet/ToMathlib/`](LeanRidgelet/ToMathlib/),\nwith Mathlib-only imports, for reuse and possible upstream contribution. They include Radon and\nFourier analysis, convolution estimates, integration in $L^2$, Schur's lemma, Haar measures, and\ngeometry for Helgason--Fourier analysis. The\n[ToMathlib Blueprint](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/to-mathlib/)\norganizes these results by topic. Their location in this repository does not imply acceptance\ninto Mathlib.\n\n## Proof status and scope\n\nLean checks a theorem relative to its stated hypotheses and any axioms in its dependencies.\nA successful build alone does not establish that every theorem has a completed proof: Lean also\naccepts `sorry`, an explicit placeholder for an unfinished proof. This project audits those\nplaceholders and their dependencies by declaration name.\n\nThe current boundary is recorded in [`audit/Assumptions.lean`](audit/Assumptions.lean):\n\n- **L2:** four named targets remain for encoding/readout, normalized finite-width approximation,\n  and finite null relations. The Hilbert-space theory uses transported coordinates; extending\n  the classical Fourier-dilation integral identification through the full completion remains\n  separate work.\n- **L1:** the implemented function-level results are proved. The paper's full distributional\n  scope, including some balancing cases and distribution-valued activations, remains outside\n  this pass.\n- **Fourier slice:** three named targets remain: the SVD Jacobian and Helgason--Fourier inversion\n  on real hyperbolic space and the space of positive definite matrices. The conditional\n  reconstruction theorems are proved independently of these placeholders.\n- **Harmonic analysis:** no named target remains. The adjoint reconstruction route is proved\n  under its explicit boundedness, equivariance, irreducibility, and nonzero-transform hypotheses,\n  and the Section 7 quadratic-form endpoint with an activation fixed in advance is proved at a\n  fixed shape matrix (`quadratic_fixedShape_reconstruction`), with the explicit constant\n  `∫ 𝓕σ(ζ) conj(𝓕ψ(ζ)) π^m / (|2πζ|^m |det A|) dζ`; the full-affine-parameter form was\n  withdrawn because the analysis transform has infinite parameter energy there.\n\nThus the allowlist currently contains **seven unfinished proof roots** and no dependent\nendpoint. The audit rejects unlisted uses of `sorryAx`, source-level project axioms, and\nunreviewed proposition-valued fields in project structures and typeclasses. Other declarations\nmay use the standard classical axioms `propext`, `Quot.sound`, and `Classical.choice`.\nDifferences from the papers are explained in the affected module's *Deviations from the article*\nsection and in the Blueprint overview. Consult those statements when reusing a result.\n\nThe [dependency graph](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/Dependency-Graph/)\nand [Blueprint summary](https://shosonoda.github.io/lean-ridgelet/blueprint/html-multi/Blueprint-Summary/)\nhelp navigate the development; the assumption audit determines the proof-placeholder boundary.\n\n## Build the Lean project\n\nThe project uses Lean and Mathlib v4.32.0, pinned by `lean-toolchain` and `lake-manifest.json`.\nInstall Lean using the [official setup guide](https://lean-lang.org/install/), then run:\n\n```bash\ngit clone https://github.com/shosonoda/lean-ridgelet.git\ncd lean-ridgelet\nlake exe cache get\nlake build\n```\n\nTo inspect statements interactively, open the clone in VS Code with the Lean 4 extension and\nstart with one of the roadmap files linked above. For example, create `Explore.lean` in the\nrepository root:\n\n```lean\nimport LeanRidgelet.Operator.UnitarySynthesis\n\n#check LeanRidgelet.unitarySynthesis_comp_unitaryRidgelet\n#check LeanRidgelet.unitarySolution_iff_kernel_translate\n#check LeanRidgelet.unitaryMoorePenroseInverse_unique_minimal\n#print axioms LeanRidgelet.unitaryMoorePenroseInverse_unique_minimal\n```\n\nThe editor displays the complete hypotheses and conclusion. `#print axioms` also reports the\ntheorem's transitive axiom dependencies. Check the same file from a terminal with\n`lake env lean Explore.lean`. Import a specific module when reusing a result; `import LeanRidgelet`\nloads the whole library, including the named unfinished targets.\n\nThe Lean badge is generated from the version pinned in `lean-toolchain`. After changing that file,\nrefresh and check the generated badge block with:\n\n```bash\npython3 scripts/update-readme-badges.py\npython3 scripts/update-readme-badges.py --check\n```\n\nRun the repository-wide audit for proof placeholders, kernel axioms, and proposition-valued fields\nin project-defined structures and typeclasses with:\n\n```bash\n./scripts/audit-assumptions.sh\n```\n\nThe `Assumption audit` badge reports the dedicated GitHub Actions workflow that runs this command.\n\n## Build the documentation\n\nGenerate the Verso Blueprint with:\n\n```bash\n./scripts/build-blueprint.sh\n```\n\nThe build is incremental. `LeanRidgeletBlueprint/Parts/` provides separate cached subtrees for\nL2, L1, Fourier slice, harmonic analysis, and ToMathlib. Child pages use topic-specific imports,\nand ToMathlib is split into eight independent analytic, geometric, and representation-theoretic\npages. Lake can therefore reuse unrelated page and subtree `.olean` files. The rendered site is\ncached under `_out/blueprint-cache/`; an unchanged input fingerprint skips regeneration and\npostprocessing. Use `./scripts/build-blueprint.sh --force` for a complete regeneration.\n\nThe documentation workflow also restores the preceding successful run's project and Verso\n`.olean` files. Lake validates their dependency hashes and rebuilds only changed modules and their\ndependents; Mathlib's much larger build tree continues to come from `lake exe cache get`.\n\nPreview the complete generated site through a local HTTP server:\n\n```bash\npython3 -m http.server 8000 --directory _out/blueprint\n```\n\nThen open \u003Chttp://localhost:8000/html-multi/>. Verso's standard multi-page renderer preserves a\nfive-part hierarchy with twenty-nine theory pages. Its nodes connect the informal statements to\ntheir Lean declarations. A direct page URL is, for example,\n\u003Chttp://localhost:8000/html-multi/l2/foundations/>. Stop the server with `Ctrl-C`. Serving over\nHTTP ensures that Blueprint preview data and browser modules are loaded correctly. The left\nsidebar is Verso's generated table of contents: L2, L1, Fourier slice, harmonic analysis, and\nToMathlib are the top-level parts, with overview, detail, or topic pages nested beneath them.\n\nTwo generated chapters follow them. \u003Chttp://localhost:8000/html-multi/Dependency-Graph/> draws\nevery Blueprint node and its `(uses := ...)` edges, coloured by formalization status;\n\u003Chttp://localhost:8000/html-multi/Blueprint-Summary/> reports coverage counts, the most-used\nstatements, and the nodes that carry no Lean declaration yet. The graph page loads `d3` and\n`d3-graphviz` from a CDN at view time and therefore needs network access in the browser.\n\nDefinition panels include the Lean implementation beginning at `:=` when the declaration belongs\nto this project.\n\n## Repository layout\n\n- `LeanRidgelet/`: formal definitions and proofs\n- `LeanRidgeletBlueprint/`: Verso Blueprint chapters\n- `audit/`: machine-checked assumption audit\n- `scripts/`: build and audit commands\n- `formalization.yaml`: project metadata in the [formalization.yaml](https://github.com/mathlib-initiative/formalization.yaml) self-reporting standard (sources, main results, placeholder counts, fidelity, review status)\n\nGenerated build and documentation trees are ignored by Git. GitHub Pages builds the Blueprint in\nActions and deploys it as an artifact.\n",1789237293569]