A formalized proof of a generalized Carleson's theorem in the Lean interactive theorem prover.
- Zulip channel for coordination
- Webpage
- Blueprint
- Blueprint as pdf
- Dependency graph
- Documentation pages for this repository
Carleson's theorem is a statement about Fourier analysis: given a continuous periodic function
For
Then Carleson's theorem states
Despite being simple to state, its proof is very hard. (It is also quite subtle: for instance, asking for point-wise convergence everywhere makes this false.) The detailed statement can be found here, the corresponding Lean statement is here. TODO: link to it after re-organising the main files!
In this project, we deduce this statement from the boundedness of a certain linear operator, the so-called Carleson operator. This boundedness holds in much greater generality: we formalise a new generalisation (due to the harmonic analysis group in Bonn) to doubling metric measure spaces. The precise technical result we prove is the metric spaces Carleson theorem (precise statement, Lean statement).
We also prove a linearised metric space Carleson theorem (precise statement, Lean statement), which allows proving a generalisation of Carleson's theorem to Walsh functions.
This proof has been formalised in the Lean theorem prover. To confirm the correctness and completeness yourself, follow these steps.
- Make sure you have installed Lean.
- Download the repository using
git clone https://github.com/fpvandoorn/carleson.git
. - Open the directory where you downloaded the repository (but not any further sub-directory). Open a terminal in this directory and run
lake exe cache get!
to download built dependencies. - Determine which Lean statement you want to verify: the Lean statements of the main theorems above are
classical_carleson
,metric_carleson
andlinearized_metric_carleson
, respectively. Open the fileCarleson.lean
in a text editor of your choice. Add the end of the file, add a line#print axioms linearized_metric_carleson
(or similar). This will tell Lean to verify that the proof of this result was completed correctly. - In the terminal from step 3, run
lake build
to build all files in this repository. This will likely take 5-30 minutes. When the process is complete, at the very end of the output, you will see a line'linearized_metric_carleson' depends on axioms: [propext, Classical.choice, Quot.sound]
(followed byBuild completed successfully
). This shows the proof is complete and correct. Had the build failed or the output includedsorryAx
, this would have indicated an error resp. an incomplete proof. (For the experts: this shows which axioms Lean used in the course of the proof.propext
andQuot.sound
are built into Lean's type theory,Classical.choice
tells you that Lean's version of the axiom of choice was used.)
- Make sure you have installed Lean.
- Download the repository using
git clone https://github.com/fpvandoorn/carleson.git
. - Run
lake exe cache get!
to download built dependencies (this speeds up the build process). - Run
lake build
to build all files in this repository.
See the README of Floris van Doorn's course repository for more detailed instructions.
If you prefer, you can use online development environment:
To make changes to this repository, please make a pull request. There are more tips in the file Contributing.md. To push your changes, the easiest method is to use the Source Control
panel in VSCode.
Feel free to make pull requests with code that is work in progress, but make sure that the file(s)
you've worked have no errors (having sorry
's is fine of course).
To test the Blueprint locally, you can compile print.tex
using XeLaTeX (i.e. xelatex print.tex
in the folder blueprint/src
). If you have the Python package invoke
you can also run inv bp
which puts the output in blueprint/print/print.pdf
.
If you want to build the web version of the blueprint locally, you need to install some packages by following the instructions here. But if the pdf builds locally, you can also just make a pull request and use the online blueprint.