By Dr. George J. McNinch

Project Description

In the field of pure mathematics, there is a widening interest in the possibility of formalizing proofs of mathematical statements. The project will involve learning to use the Lean proof assistant to formalize the mathematics of finite geometries.

The introduction to the book Mathematics in Lean (available online) describes formalization as follows:

Formalization can be seen as a kind of computer programming: we will write mathematical definitions, theorems, and proofs in a regimented language, like a programming language, that Lean can understand. In return, Lean provides feedback and information, interprets expressions and guarantees that they are well-formed, and ultimately certifies the correctness of our proofs.

For example, the following code (depending on the mathlib library) defines the notion of a left coset of a subgroup H in a group G and proves that if two cosets xH and yH are equal then x\in yH.

variable {G : Type} [Group G]

def leftCoset {G : Type} [Group G] (H : Subgroup G) (x:G): Set G :=
{ y:G | ∃ h ∈ H , y = x*h }

lemma contain {H : Subgroup G} {x y : G} :
leftCoset H x = leftCoset H y → x ∈ leftCoset H y := by
intro h
have hx : x ∈ leftCoset H x := by
use 1
constructor
· exact Subgroup.one_mem _
· group
rw [h] at hx
assumption

Broadly speaking, the goal is to learn to use formalization to develop mathematics. Thus, we should first target results in a particular part of mathematics for formalization. Here, we’ll choose to study the algebra and geometry arising in the study of finite vector spaces (i.e. of finite dimensional vector spaces over finite fields). We hope to build on the existing formalization already in place in mathlib. There should remain many interesting results to formalize in this setting: basic properties of finite projective and polar spaces, results about error-correcting codes, etc.

Desired Background

A project participant should have some background in algebra (completion of an undergraduate course introducing groups, rings and fields should suffice). Part of our time will be spent learning to use the formalization tools; this phase will probably be quicker for candidates having some familiarity with computer programming.