Formalising Graph Theory in

Jakub Štepo

DIMACS REU 2026

Collaborators

I am an undergaduate student at Charles University in Prague.

I will be working under the guidance of Atefeh Mohajeri, a research scientist at

Other people joining us on our experience with Lean:

  • Shiyu Wang, a student at Columbia University and intern at Bell Labs

  • professor Bjørn Kjos-Hanssen of the University of Hawaii at Manoa

Acknowledgements

This work will be conducted at the Center for Discrete Mathematics and Theoretical Computer Science of Rutgers University.

Furthermore, the following entities provide financial support:

Made using VersoSlides

Copyright (c) 2026 Lean FRO LLC. All rights reserved.

Released under Apache 2.0 license.

Author: David Thrane Christiansen

Modified from the official Demo.

History

The way we view mathematics has developed.

  • The notion of a proof: Thales, cca 600 BC

  • The ε-δ definition of a limit as a rigorous way of doing analysis: Bolzano, 1821

  • ZFC as a solid foundation: 1922

But is it enough?

We don't prove everything formally in practice!

Formal mathematics

Lean is a functional programming language which allows for formal proof verification. (de Moura, 2013)

  • Natural next step in the evolution of mathematics

  • Absolute guarantee of correctness

  • Open-source, collaborative effort

  • Lean's math library, mathlib, currently contains over 130000 definitions and 270000 theorems/lemmas

Let's take a closer look!

How it works

  • Dependent type theory (in contrast to set theory)

  • Logical strength: ZFC + finitely many inaccessibles

  • Lean checks that a term has the correct type

  • Curry-Howard correspondence: The terms of propostitions (as types) are simply proofs

def f (k : ) : × := fun (m, n) k * (m - n) theorem impl_trans (P Q R : Prop) : (P Q) (Q R) (P R) := fun hpq hqr hqr hpq

How it looks

  • Tactic mode: The proof is written quite naturally

  • Powerful automation implemented

  • Extensibility: One may write their own tactics

  • Proof assistant: interactive environment

example : ¬ n : Nat, n ^ 2 = 3 := by
intro h obtain n, hn := h match n with | 0 => contradiction | 1 => contradiction | k + 2 => have : 3 4 := by calc 3 = (k + 2)^2 := hn.symm _ 2 ^ 2 := by lia contradiction

More on Lean

  • Also verifies computer programs → use in cybersecurity

  • Useful for checking the soundness of AI output

  • AI agents might be useful for translating papers into Lean code

  • One can write websites, textbooks, slides etc. with interactive code in Lean

The state of the art

Most topics of undergraduate mathematics are already covered really well.

Image by Gemini

What I will be doing

Graph theory appears relatively underdeveloped, even some basic results are missing

  • First, survey what areas already are formalised and how

  • Then attempt to formalise a topic not yet in Mathlib and see what challenges it brings

  • What makes some things difficult and which new approaches are necessary?

Thank you for your attention!