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:

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 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)

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. Here are some project ideas organized by background, but feel free to propose your own!

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.

Computer Science Projects

TBD

Mathematics Projects

TBD

Engineering Projects (ECE/CCE)

TBD

Interdisciplinary Projects

TBD

Proposing Your Own Project

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.

Write a Proposal

Your proposal (written in LaTeX) should include:

Consult Course Staff

Discuss your proposal via email or Discord.

Project Evaluation Criteria

Resources

Submission Checklist

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? Document what you attempted and where you got stuck. Partial progress is valuable.

← Back to Course Overview
Week 9: Project Kickoff →


Questions? Reach out on the course Discord!