Formalization and “finite algebra”
Project Description
In the field of pure mathematics, there is widening interest in the possibility of formalizing proofs of mathematical statements. The project will involve learning to use the Lean proof assistant to formalize 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\).
import Mathlib.Tactic 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'll hope to build on 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.