Introduction to Formal Verification & Proof Assistants

A 10-Week Journey into Formal Verification with Lean4 (Spring 2026)

GDG @ AUB Software Team × AUB Math Society

PROOF101

Final Projects

Overview

The final project is your opportunity to apply what you’ve learned in this course. You will pick a topic and develop a formal theory about it: you’ll define the objects/programs, specify their behavior, and prove that these specifications hold. This topic can be an algorithm, a mathematical theorem, a system property, or a protocol invariant. The final result won’t necessarily be a lot of code – sometimes a lot of thought goes into a short verification!

A good project will go a bit beyond what we cover in this course. You’ll need to explore Lean4’s standard library, Mathlib, and the tactics they offer. You’re welcome to import whatever library files you find useful.

You’ll consult with the course staff before starting on your project, to make sure the topic is manageable and in scope. We include some ideas below. You’re welcome to pick one of these or to propose your own.

Project Requirements

There are very few formal requirements for these projects, since we want to give you the freedom to work on whatever you like. We ask only that you:

Core Requirements

  1. Prove some theorems!
    A project ideally shouldn’t be fully computation/modeling. You must formally verify at least one meaningful property about your system/algorithm/structure.

  2. Write a README
    Your README should explain:

    • High-level overview of your project ("Overview")
    • Why you defined things the way you did ("Design choices")
    • What properties you proved and why they matter ("Main theorems")
    • Explain your approach to key proofs ("Proof strategies")
    • What was difficult and how you overcame it ("Challenges")
  3. Submit Working Code
    All .lean files must compile without errors. Include clear comments throughout your code.

  4. Present Your Work
    Prepare a 3-5 minute presentation for Week 10 that demonstrates your verification and explains your key insights.

Timeline

Week 9 (Project Kickoff)

Weeks 9-10 (Development)

Week 10 (Final Session)

Your Project’s Proposal (Deadline: Sunday, 5 April)

Once you settle on one project you want to work on, you must write an informative project proposal to be sent to the course team and shared on the course’s website.

Write a Proposal

Your proposal (written in LaTeX) should include:

Consult Course Staff

Discuss your proposal via email or Discord.

Project Evaluation Criteria

Resources

Additional Online Resources

Submission Checklist

Presentation (Deadline: Friday, 10 April)

To finalize your project submission, you are expected to present your work online on Friday, 10th of April, in front of the course team and other students. The presentation should be 3-5 minutes (at most 7 minutes) with an additional 2-3 minutes of time for questions. If you wish to request more time, contact the course organizers via email.

You will be evaluated based on the criteria listed above, as part of the PROOF101 final projects competition, with the top students in that competition being entitled to cool prizes!

FAQ

Can I work in a pair? Yes! This is not recommended, but if you will work in pairs, make sure to clearly divide responsibilities and both be present.

Can I use online resources? Yes, but cite sources and core proofs must be your own.

What if I get stuck? Ask on the Discord server for help from the PROOF101 community, and document what you attempted and where you got stuck. Partial progress is valuable.

PROOF101 (Spring 2026) Projects

The Results of the PROOF101 Final Project Competition

Note: We want to emphasize that these rankings are merely a snapshot of a single competition and are not an objective measurement of students’ worth, their individual progress, or the immense hard work they have put into the course. We are incredibly proud of how far every one of them has come; seeing their growth has been the true reward of this journey, regardless of the final scores.

Project Proposals, Slides, and Repositories

LeanML: Formally Verified Linear Regression

Author: Alisson Matheus Silva

Error-Correcting Codes: Disjoint Spheres Theorem

Author: Cristina Dueñas Navarro

Formally Verified Semilattice Class for Conflict-free Replicated Data Types (CRDTs)

Author: Madhav Ram

Formalizing Addition in Quadrature with Computational Applications

Author: Loren Abdulezer

Formalizing Knights and Knaves Logic Puzzles in Lean Using Set Theory

Author: Jad Abou Hawili

JocLean: The Joy of Cryptography in Lean

Author: Pawel Wozniak

Leaf-Binding in a 2-Leaf Merkle Tree: A Lean4 Proof

Author: Risiraj Dey

(Potential) Project Ideas

For your sake, projects must be small enough to be “provable” in approximately 2 weeks. You are free, however, to voluntarily work on a larger project, which will (of course) be rewarded.

Easy Project Ideas

Intermediate Project Ideas

Difficult Project Ideas

Note on Mathlib Contributions: Some students may choose to contribute to Mathlib or CSlib as their final project. If you’re interested in this path, Rida Hamadani is available to review and provide guidance on Mathlib-related or CSlib-related projects. This is entirely optional but offers a unique opportunity to contribute to the broader Lean mathematical library.

← Back to Course Overview
Week 9: Project Kickoff →


Questions? Reach out on the course Discord!