Overview
PROOF101 is a 10-week course on formal verification and proof assistants taught in Lean4, co-organized by the AUB Math Society and the GDG on Campus @AUB Software Team as a student-led initiative at the American University of Beirut (AUB). The course is open to AUB students and external participants alike, with the explicit goal of democratizing access to high-quality formal-methods education outside the small circle of universities that currently teach it. I created the course, designed its weekly curriculum and exercises, coordinated guest lectures with researchers from Boston University, Brown University, and the broader Lean community, and serve as the primary instructor.
The course culminates in a final-project competition where students formalize an algorithm, a mathematical theorem, a system property, or a protocol invariant of their own choosing, then defend their work in a short live presentation.
Spring 2026 — Inaugural Offering
The details below describe the Spring 2026 run specifically. The Spring 2027 offering will differ — see the next section. Click any heading to expand.
Format
The Spring 2026 cohort met online over ten consecutive weeks via Webex, with all session recordings published to the course website so participants in incompatible time zones could follow along asynchronously. Live discussion, exercise help, and project mentorship happened on a dedicated course Discord server. All materials — slides, exercises, recordings, and the project gallery — were released openly under CC BY-NC-SA 4.0, so the curriculum can be reused, remixed, and re-taught by anyone willing to credit and share alike.
Curriculum
The ten weeks were organized into four thematic phases, building from the syntactic basics of Lean 4 up to a self-directed verification project.
Phase 1 — Functional Foundations (early weeks). Lean 4 introduced as both a programming language and a proof assistant: installation, type theory basics, function definitions and recursion, inductive types, pattern matching, structural induction, and the propositions-as-types correspondence. Students proved their first theorems in term-mode (writing proof terms directly), built up an intuition for dependent types, and got used to reading Lean4 error messages.
Phase 2 — Tactic-Based Proving (mid-course). The mechanical side of writing proofs: how tactics manipulate the proof state, the standard library of tactics (rfl, simp, rw, exact, apply, cases, induction, omega, decide, …), and the discipline of structuring nontrivial proofs as readable tactic blocks. Anchored by a guest lecture from Rida Hamadani.
Phase 3 — Mathematics, Foundations, and Metaprogramming (later weeks). With the basics in place, the course pivoted to three more advanced themes, each anchored by a guest lecture from an external researcher: working with Mathlib4 (the mathematical library containing over a million lines of formalized mathematics), the theoretical foundations of why proof assistants work at all (λ-calculus, Curry-Howard, normalization), and how to write your own tactics through metaprogramming and decision procedures.
Phase 4 — Final Project (weeks 9–10). Students chose a topic, wrote a LaTeX proposal, implemented a formalization, prepared a README and a presentation, and defended their work in a live session in front of the course team and their peers.
Each week’s session was paired with a set of practical exercises released alongside the slides — Lean4 problems, short proofs, and reading-driven challenges. Exercises were not graded: the course is not for credit, and grading would have crowded out the time needed to actually mentor projects. Instead, exercises served as self-check checkpoints, and the Discord server functioned as a live help channel.
Guest Lectures
Four guest lectures, each contributing materials, slides, and follow-up exercises that have been incorporated into the open course materials.
Rida Hamadani (mathematical formalization researcher; formerly Lean Expert at Harmonic; graduate student in resurgence theory at LMAP, France) gave two lectures: Introduction to Tactic-based Proving (Week 4) and Formalizing Mathematics and Contributing to
Mathlib4(Week 6). They also offered to reviewMathlib-related andCSlib-related final projects, connecting the course directly to the broader Lean mathematical community.Dr. Assaf Kfoury (Professor of Computer Science, Boston University) gave the Week 7 lecture, The Mathematical Foundations of Proof Assistants, with handouts covering (1) the Church-Rosser property, (2) strong normalization of the simply-typed λ-calculus, (3) the Curry-Howard isomorphism, and (4) how these results form the theoretical basis of proof assistants — and Lean4 specifically.
Dr. Robert Lewis (Associate Teaching Professor of Computer Science, Brown University; instructor of Brown’s CS1715 Formal Proof and Verification) gave the Week 8 lecture, Metaprogramming in Lean and Decision Procedures. He walked the class through three strategic approaches to tactic design — direct proof manipulation (implementing the basic components of
Mathlib’sinterval_cases, following a tutorial by Heather Macbeth), proof by certificate (the strategy behindlinarith), and proof by reflection (proving the correctness of an algorithm in the object language and wrapping it as a tactic). All materials are published in his aub-guest-lecture repository.
Final Project Competition
The final project was the centerpiece of the course. Each participant developed a formal theory on a topic of their choosing: defining the relevant objects or programs, specifying their behavior, and proving that the specifications hold. The deliverable was rarely large in code volume — “sometimes a lot of thought goes into a short verification” — but had to go meaningfully beyond what was covered in lectures, typically by drawing on Mathlib lemmas and tactics that students had to discover themselves.
Timeline.
- Week 9 — Kickoff. Students began ideating, with the session also covering an applied talk on Lean, Rust, and the Future of Reliable Software.
- Sunday, 5 April — Proposal due. A short
LaTeXdocument covering title, overview (2–3 sentences), the core property to be proven, and anticipated challenges. Each proposal was reviewed by the course team and discussed via email or Discord before approval. - Friday, 10 April — Presentations. A 3–5 minute live presentation (up to 7 with permission), followed by 2–3 minutes of questions from the course team and peers.
Deliverables.
- A public or private GitHub repository containing the Lean project (all
.leanfiles compiling without errors). - A
README.mdcovering: project overview, design choices, main theorems, proof strategies, and challenges encountered. - The presentation itself.
Evaluation rubric.
- Technical Content — 50%. Correctness of definitions, quality of specifications, soundness of proofs.
- Documentation — 25%. Clear
README, well-commented code, explanation of proof strategies. - Presentation — 15%. Clarity, demonstration, time management.
- Creativity — 10%. Novel approach; going beyond course material.
Project Showcase
Seven final projects were submitted. The competition produced three placed winners, but every project deserves a mention — the rankings reflect a single live competition, not the relative effort, learning, or quality of the underlying formalization.
Winners.
- Alisson Matheus Silva — LeanML: Formally Verified Linear Regression — formalized linear regression with machine-checked correctness guarantees (repo).
- Cristina Dueñas Navarro — Error-Correcting Codes: Disjoint Spheres Theorem — a Lean proof of one of the foundational theorems in coding theory (repo).
- Madhav Ram — Formally Verified Semilattice Class for Conflict-free Replicated Data Types (CRDTs) — a verified semilattice class for the distributed-systems primitive that underpins eventual consistency (repo).
Other accepted projects.
- Loren Abdulezer — Formalizing Addition in Quadrature with Computational Applications (repo).
- Jad Abou Hawili — Formalizing Knights and Knaves Logic Puzzles in Lean Using Set Theory (repo).
- Pawel Wozniak — JocLean: The Joy of Cryptography in Lean — a Lean translation of constructions from Mike Rosulek’s The Joy of Cryptography (repo).
- Risiraj Dey — Leaf-Binding in a 2-Leaf Merkle Tree: A Lean 4 Proof (repo).
Full proposals and presentation slides for all projects are linked from the course website.
Reading List
Sessions were paired with chapters from the standard Lean4 reading list, used as both pre-reading and reference:
- Theorem Proving in Lean 4 — the canonical introduction to writing proofs in Lean.
- Functional Programming in Lean 4 — Lean4 as a programming language, by David Thrane Christiansen.
- The Hitchhiker’s Guide to Logical Verification — the textbook for Brown’s CS1715.
- Mathematics in Lean — for Phase 3’s
Mathlibmaterial. - Metaprogramming in Lean 4 — for Week 8.
Acknowledgments
The course existed because of contributions from many people beyond me. Faculty mentorship from Dr. Kinan Dak al Bab (Boston University) and Dr. Assaf Kfoury (Boston University) shaped the curriculum throughout. The AUB Math Society (Georges Sakr, Mohammad Shouman, Romy Kayrouz, and the broader cabinet) and the GDG on Campus @AUB Software Team (Lynn Hammoud, Antonio Makhoul, and the broader club) provided the organizational scaffolding that made the course runnable as a student-led initiative. Alina Gurskaya designed the course logo and visual identity.
Full credits live on the Contributors page.
Spring 2027 — Second Offering
Coming soon.
The second offering is being planned now, with the central goal of turning a successful inaugural run into a more organized, more rigorous, and more reproducible course. The inaugural cohort proved the curriculum works; the second offering tightens the operation around it.
Teaching delivery. Lectures will move to a proper hybrid format — in-person at AUB with a synchronous remote stream — and each session will open with a short written quiz on the previous week’s material, so students arrive having actually digested the reading instead of treating it as optional. Expect more guest lectures: returning voices from Spring 2026 (Rida Hamadani, Dr. Kfoury, Dr. Lewis) alongside new lecturers drawn from the global Lean and formal-methods community.
Assignments and grading. Substantially more weekly exercises, with automatic grading via Gradescope so students get fast feedback on every problem instead of waiting for a human to look. The autograder will run the same Lean toolchain students have locally — pass/fail on compilation, plus problem-specific correctness checks against hidden test theorems.
Course staffing. Teaching assistants drawn from the strongest students of the inaugural cohort will hold office hours, run problem-set review sessions, and triage Zulip questions. This both scales the course beyond what one organizer can mentor solo and creates a teaching pipeline for participants who want to deepen their formal-methods background.
Asynchronous experience. A meaningful share of Spring 2026 participants joined from incompatible time zones and lived almost entirely on the recordings; for them, the “course” was mostly a one-way broadcast. Spring 2027 will treat async participants as first-class — staggered exercise deadlines, structured Zulip weekly threads tied to each lecture, and recordings released the same day as the live session.
A detailed Spring 2027 syllabus will be published here once finalized.