Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/soficshift/ergodic-decomposition
Formalization of the ergodic decomposition theorem.
https://github.com/soficshift/ergodic-decomposition
Last synced: 9 days ago
JSON representation
Formalization of the ergodic decomposition theorem.
- Host: GitHub
- URL: https://github.com/soficshift/ergodic-decomposition
- Owner: soficshift
- License: apache-2.0
- Created: 2024-09-23T02:23:23.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-09-23T02:23:25.000Z (3 months ago)
- Last Synced: 2024-11-29T13:44:24.739Z (24 days ago)
- Language: Python
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Lean 4 Project Template
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-lightblue.svg)](https://opensource.org/licenses/Apache-2.0)
This repository contains a template for blueprint-driven formalization projects in Lean 4.
## Tutorial Talk Video
This is the video recording of the tutorial talk I presented at the Hausdorff Research Institute for
Mathematics ([HIM](https://www.mathematics.uni-bonn.de/him)) in Bonn.It was designed for mathematicians at all levels to provide a comprehensive introduction to the design,
management, and implementation of blueprint-driven formalisation projects in Lean, with almost no
prerequisite knowledge of Git, GitHub, continuous integration systems, and other technical tools.[![HIM 2024 Tutorial Talk](https://img.youtube.com/vi/KyuyTsLgkMY/maxresdefault.jpg)](https://youtu.be/KyuyTsLgkMY)
## Install Lean 4
Ensure that you have a functioning Lean 4 installation. If you do not, please follow
the [Lean installation guide](https://leanprover-community.github.io/get_started.html).## Use this Template
To create a new repository using this template, ensure you are on the correct repository page
([LeanProject](https://github.com/pitmonticone/LeanProject)) and then follow these steps:1. Click the **Use this template** button located at the top right of the repository page.
2. Click the **Create a new repository** button.
3. Select the account or organization where you want to create it, choose a name for the new
repository, and click the **Create repository** button.## Configure GitHub Pages
To set up GitHub Pages for your repository, follow these steps:
1. Go to the **Settings** tab of your repository.
2. In the left sidebar, click on the **Pages** section.
3. In the **Source** dropdown, select `GitHub Actions`.## Clone this Repository
To clone this repository to your local machine, please refer to the relevant section of the
GitHub documentation [here](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).## Repository Layout
The template repository is organized as follows (listing the main folders and files):
- [`.github`](.github) contains GitHub-specific configuration files and workflows.
- [`workflows`](.github/workflows) contains GitHub Actions workflow files.
- [`lint.yml`](.github/workflows/lint.yml) is the style lint workflow triggered on push
and pull request events.
- [`dependabot.yml`](.github/dependabot.yml) is the configuration file to automate CI dependency
updates.
- [`.vscode`](.vscode) contains Visual Studio Code configuration files
- [`extensions.json`](.vscode/extensions.json) recommends VS Code extensions for the project.
- [`settings.json`](.vscode/settings.json) defines the project-specific settings for VS Code.
- [`Project`](Project) should contain the Lean code files.
- [`Mathlib`](Project/Mathlib) should contain `.lean` files with declarations missing from
existing Mathlib developments.
- [`ForMathlib`](Project/ForMathlib) should contain `.lean` files with new declarations to
be upstreamed to Mathlib.
- [`Example.lean`](Project/Example.lean) is a sample Lean file.
- [`scripts`](scripts) contains scripts to update Mathlib ensuring that the latest version is
fetched and integrated into the development environment.
- [`.gitignore`](.gitignore) specifies files and folders to be ignored by Git.
and environment.
- [`CONTRIBUTING.md`](CONTRIBUTING.md) should provide the guidelines for contributing to the
project.
- [`lakefile.toml`](lakefile.toml) is the configuration file for the Lake build system used in
Lean projects.
- [`lean-toolchain`](lean-toolchain) specifies the Lean version and toolchain used for the project.## Customize this Template
To tailor this template to your specific project, follow these steps:
1. If you don't have a Python environment, you can install one by following the instructions in the
[Python installation guide](https://www.python.org/downloads/).
1. Verify your Python installation by running:
```bash
python3 --version
```
1. Verify your Pip installation by running:
```bash
pip3 --version
```
1. Ensure your terminal is in the project directory by running the following command:
```bash
cd path/to/your/project
```
1. Execute the customization script by running:
```bash
python3 scripts/customize_template.py NewProject
```
where `NewProject` must be replaced by the name of your project.The script [`customize_template.py`](scripts/customize_template.py) will automatically rename the
project folder and update the necessary files and configurations to match the new project name.## Blueprint
### 0. Selected Real-World Collaborative Projects
- [Fermat's Last Theorem for Exponent 3](https://pitmonticone.github.io/FLT3/) led by Riccardo Brasca.
- [Polynomial Freiman-Ruzsa Conjecture](https://github.com/teorth/pfr) led by Terence Tao.
- [Fermat's Last Theorem](https://imperialcollegelondon.github.io/FLT/) led by Kevin Buzzard.
- [Carleson Operators on Doubling Metric Measure Spaces](http://florisvandoorn.com/carleson/) led by Floris van Doorn.
- [Bonn Collaborative Formalization Seminar Series in Analysis](https://github.com/fpvandoorn/BonnAnalysis) led by Floris van Doorn.
- [Prime Number Theorem and More](https://github.com/AlexKontorovich/PrimeNumberTheoremAnd) led by Alex Kontorovich.
- [Infinity Cosmos](https://github.com/emilyriehl/infinity-cosmos) led by Emily Riehl.
- [Analytic Number Theory Exponent Database](https://github.com/teorth/expdb) led by Terence Tao.
- [Groupoid Model of Homotopy Type Theory](https://github.com/sinhp/GroupoidModelofHoTTinLean4) led by Sina Hazratpour.For more examples of completed and ongoing Lean projects and libraries, please
see the [Lean Reservoir](https://reservoir.lean-lang.org).### 1. Install Dependencies
To install the necessary dependencies, follow the instructions in the
[PyGraphViz installation guide](https://pygraphviz.github.io/documentation/stable/install.html).### 2. Install LeanBlueprint Package
Assuming you have a properly configured Python environment, install LeanBlueprint by running:
```bash
pip install leanblueprint
```If you have an existing installation of LeanBlueprint, you can upgrade to the latest version by
running:```bash
pip install -U leanblueprint
```### 3. Configure Blueprint
To set up the blueprint for your project, run:
```bash
leanblueprint new
```Then, follow the prompts and answer the questions as you like, except for a few specific
questions which should be answered as indicated below to ensure compatibility with this template.Respond affirmatively with `y` to the following prompt:
```console
Proceed with blueprint creation? [y/n]
```Respond affirmatively with `y` to the following prompt:
```console
Modify lakefile and lake-manifest to allow checking declarations exist? [y/n] (y)
```Respond affirmatively with `y` to the following prompt:
```console
Modify lakefile and lake-manifest to allow building the documentation? [y/n] (y):
```If you want to generate a Jekyll-based home page for the project, respond
affirmatively with `y` to the following prompt:```console
Do you want to create a home page for the project, with links to the blueprint, the API documentation and the repository? [y/n]:
```Respond affirmatively with `y` to the following prompt:
```console
Configure continuous integration to compile blueprint? [y/n] (y):
```For more details about the LeanBlueprint package and its commands, please refer to its
[documentation](https://github.com/PatrickMassot/leanblueprint/tree/master#starting-a-blueprint).After configuring the blueprint, please wait for the GitHub Action workflow to finish.
You can keep track of the progress in the **Actions** tab of your repository.## Selected Projects Using this Template
- [Infinity Cosmos](https://github.com/emilyriehl/infinity-cosmos) led by Emily Riehl.
- [Analytic Number Theory Exponent Database](https://github.com/teorth/expdb) led by Terence Tao.
- [Groupoid Model of Homotopy Type Theory](https://github.com/sinhp/GroupoidModelofHoTTinLean4) led by Sina Hazratpour.
- [Soundness of FRI](https://github.com/BoltonBailey/FRISoundness) led by Bolton Bailey.
- [Weil's Converse Theorem](https://github.com/CBirkbeck/WeilConverse) led by Chris Birkbeck.
- [Proofs from THE BOOK](https://github.com/mo271/formal_book) led by Moritz Firsching.
- [Automata Theory](https://github.com/shetzl/autth) led by Stefan Hetzl.