- Uploaded slides for
P01_Introduction2025-03-02
This is the second time this course is being held. The structure will largely follow last year’s with some additions and modifications, but is nevertheless subject to (spontaneous) change. Constructive feedback is welcomed throughout the course and afterwards.
Christoph Spiegel will teach this course. He is a researcher at ZIB in Prof. Pokutta’s IOL group, working on combinatorics, optimization, machine learning, and proof formalization. Silas Rathke will serve as the teaching assistant. He is a Ph.D. student at FUB in Prof. Szabo’s group, focusing on extremal combinatorics and related formalization projects.
The course takes place from Monday the 2nd of March to Friday the 13th of March 2026, split into two daily sessions (9:30–12:30 and 14:00–17:00). It will be held in Seminarraum 119 (A3/SR 119) at Arnimallee 3 on the FUB Dahlem Campus.
The course is open to everyone, including guest auditors (Gasthörer), not just those who need it for their degree. Priority will be given to FU students who need the course as part of their ABV degree program. The course will also be offered for Master students at the FUB as well as as a BMS Advanced Course for the first time this year!
For the aktive Teilnahme, Master-level participants will be required to solve additional and more advanced problems in the exercise sessions compared to Bachelor-level students. Both Bachelor and Master-level students will sit the same final exam on the second Friday. Master-level students will additionally receive a small formalization project to complete in the one or two weeks following the course. The exact scope and evaluation format has not yet been determined but may include an in-person presentation.
Completion of Analysis I and Linear Algebra I should provide a sufficient mathematical background, though participants should have a strong command of these subjects, as formal proof verification is very "unforgiving". No prior programming experience is required, but a certain technical affinity and interest is needed. Besides formal proof verification, you will be in contact with many other tools such as git and github, Patrick Massot’s leanblueprint, CI/CD in the form of github Actions, as well as various ML tools.
Participants need to bring a laptop to follow along and work on exercises. The course will be conducted in English, but Bachelor students taking the course as part of their ABV requirements may express themselves in German if they prefer.
We will walk through the full setup together on the first day, covering Visual Studio Code, a GitHub account, and git. The process for setting up git varies by platform:
- macOS —
xcode-select --installinstalls Apple’s developer tools, which include git. Homebrew is not required but recommended as a general package manager. - Linux — Install git via your package manager, e.g.
sudo apt install giton Debian/Ubuntu orsudo pacman -S giton Arch. - Windows — We recommend installing WSL2 (Windows Subsystem for Linux) with Ubuntu, which is the officially recommended environment for Lean on Windows. Git is then installed within WSL (
sudo apt install git). Keep your course files inside the WSL filesystem (e.g.~/projects/) rather than your Windows Documents folder, and open VS Code from within WSL usingcode ..
The course outline is still subject to change, but will roughly be as follows:
- General introduction, or: why formalize maths?
- The tech stack, or: how to properly organize a formalization project?
- Foundations of Logic in LEAN, or: what is a type and what does being classical vs. intuitionistic mean?
- Set theory in LEAN, or: why you should rarely do set theory in LEAN
- Natural numbers in LEAN, or: why inductive types are so powerful.
- Formalization Example The infinitude of primes, or: your first real proof in LEAN.
- Formalization Example The handshaking lemma, or: graph theory and combinatorics in LEAN.
- Examination Final exam and distribution of small formalization projects for Master-level students.
- Optional An example on how to contribute to mathlib.
No information yet.
lake init ProjectName mathsets up a project with mathlib as a dependency in the current folder.lake buildbuilds the project.- If your info view shows that it is compiling a lot of files from mathlib, then (1) run
pkill -f lean(MacOS / Linux) orStop-Process -Name *lean* -Force(Windows) to kill the running Lean processes, (2) remove the.lakefolder, e.g., by runningrm -rf .lakein a POSIX compliant OS, and runlake clean, (3) runlake exe cache getto download the mathlib binaries again, and finally (4) restart the Lean server by clicking on the∀button in VS Code and choosingServer: Restart Server.
No information yet.
No information yet.
No information yet.
- The mathlib documentation is the official documentation of the mathlib library
- LeanSearch is a helpful resource for finding results in mathlib
- Theorem Proving in Lean 4 by Jeremy Avigad, Leonardo de Moura, Soonho Kong, Sebastian Ullrich
- Mathematics in Lean by Jeremy Avigad and Patrick Massot
- The Hitchhiker’s Guide to Logical Verification by Anne Baanen, Alexander Bentkamp, Jasmin Blanchette, Johannes Hölzl, Jannis Limperg
- The Mechanics of Proof by Heather Macbeth
- Functional Programming in Lean by David Thrane Christiansen
- Kevin Buzzard's talk on The rise of formalism in mathematics at ICM22
- The Lean Game Server inspired many of the smaller exercises