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 review Mathlib-related and CSlib-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’s interval_cases, following a tutorial by Heather Macbeth), proof by certificate (the strategy behind linarith), 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 LaTeX document 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.

  1. A public or private GitHub repository containing the Lean project (all .lean files compiling without errors).
  2. A README.md covering: project overview, design choices, main theorems, proof strategies, and challenges encountered.
  3. 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.

  1. Alisson Matheus SilvaLeanML: Formally Verified Linear Regression — formalized linear regression with machine-checked correctness guarantees (repo).
  2. Cristina Dueñas NavarroError-Correcting Codes: Disjoint Spheres Theorem — a Lean proof of one of the foundational theorems in coding theory (repo).
  3. Madhav RamFormally 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 AbdulezerFormalizing Addition in Quadrature with Computational Applications (repo).
  • Jad Abou HawiliFormalizing Knights and Knaves Logic Puzzles in Lean Using Set Theory (repo).
  • Pawel WozniakJocLean: The Joy of Cryptography in Lean — a Lean translation of constructions from Mike Rosulek’s The Joy of Cryptography (repo).
  • Risiraj DeyLeaf-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:

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.


← Back to Portfolio


View project →


Tags: