FLT for human

Math notes and tools for reading the formalised proof of Fermat's Last Theorem as a human. The notes are grounded in the Lean sources, with every line-number citation pinned to a fixed commit.

Source of this project: github.com/htzh/flt_for_human

Interactive apps

Lean porting effort

Alongside the prose, this project re-runs selected pieces of the FLT formalisation as our own Lean code. A claim that matters can then be checked rather than taken on faith, and a proof can be restated in a form we find easier to read.

The ground rules: copy small, self-contained definitions and lemmas out of FLT and adapt them — never import the FLT project (one import can pull in a dependency cone and a build measured in hours); adapt rather than mirror, since FLT stays the source of truth for correctness; cite the origin file and commit in each module header; and leave no silent gaps — a module either compiles or carries an explicit, commented sorry.

▶ Math notes 27 one step of the FLT proof, opened up · newest first · click a group to expand

This revision adds notes 013, 015–022 and 024–027. Browse math/ on GitHub ↗

▶ Frontier: level structure and the adelic turn 024–027
  • 027 — The continuity of the idele norm new
    the idele norm, and the norm of the determinant on GL₂ over the adeles, are continuous in the restricted-product topology — the two most heavily depended-on theorems of the pin's NumberField.TateGlobal layer
  • 026 — ℘-division values and the level-N modular curve new
    Fricke functions turn torsion values of ℘ into weight-zero modular functions: SL₂(ℤ) permutes them, the tuple is fixed exactly by ±Γ(N), ℂ(X(N)) = ℂ(j, f_v) is Galois of degree the index, and Shimura's reciprocity law acts on the q-expansions of Δf_v
  • 025 — Elliptic nets, division polynomials, and the invariant of a sequence new
    the classical [n]P formula assembled from three layers — ψ_n as the canonical normalised elliptic divisibility sequence, the elliptic-net relation behind every ψ identity, the complement that avoids ψ₂ₙ/ψ_n, and the invariant 6X²+b₂X+b₄ that removes the division by y, so the construction survives every characteristic
  • 024 — Uniformization and the modular function field: two routes to the j-line new
    the ℚ(j(q), j(qᴺ)) function field and the analytic ℂ/Λ ≅ E(ℂ) theory are complementary, not interchangeable — two independent inputs to the same step of Mazur's irreducibility argument, and the uniformization's surjectivity of j is itself proved by modular forms
▶ Residues, Deligne–Serre, and the T side of R = T 018–023
▶ Hecke, Eichler–Shimura, and the integral structure 013–017
▶ Modularity, the Tate module, and the level theory 009–012
▶ The Frey route 001–008
▶ Base notes 22 the mathlib layers the proof is written against · grouped by subject, so order is not a path · click a group to expand

This revision adds notes 008–022. Browse base/ on GitHub ↗ · reading order and background: base/README.md

▶ Latest additions 019–022
  • 022 — Haar measure: invariance, unimodularity, and convolution on the adeles new
    left- versus right-invariance, Haar existence and uniqueness, the modular character, the stable-range proof that GL₂(𝔸_F) is unimodular, convolution as invariance plus Fubini, and the pushed-forward measure the automorphic right-convolution topic is written against
  • 021 — Uniformization: ℂ/Λ ≅ E(ℂ) new
    the purely complex-analytic proof that z ↦ (℘(z), ℘′(z)/2) is a surjective homomorphism with kernel Λ — the Weierstrass differential equation, Liouville, and the two addition laws
  • 020 — The index of Γ₀(N), and the two functions that count it new
    [SL₂(ℤ):Γ₀(N)] = ψ(N) through the coset bijection with ℙ¹ over ℤ/N, and #primCosetReps(N) = ψ(N) through an independent explicit count; Euler's φ beside Dedekind's ψ, and what is mathlib's and what is ours
  • 019 — Stichtenoth's genus and the adelic index new
    the adelic engine that manufactures the genus and Riemann–Roch without analysis or differentials — bounded adeles, the index of speciality, the bounded defect, Stichtenoth's pole-divisor bound, and Weil differentials; the fourteen declarations of the phase-1 RR port
▶ Curves: divisors, places, and Riemann–Roch 008–010 · 015–017
  • 017 — The rational function field and principal divisors
    deg div(f) = 0 proved on K(t) by unique factorization and transferred to a general function field by the norm and pushforward
  • 016 — Correspondences and the exchange lemma
    pull–push as ψ_*∘φ^*, the fibre-square exchange identity, its reduction to a single place and the finite bifibre count (Galois orbit argument, then normal closure), and the norm formula that makes pushforward preserve principal divisors
  • 015 — Places and their extensions
    ramification index and inertia degree, the fundamental identity [F′:F] = Σ e f, the divisor calculus it enables, Galois transitivity and constancy, and multiplicativity in towers
  • 010 — Finite fields, Frobenius, and point counts
    rational points as fixed points of the q-power map, the characteristic polynomial T² − a_q T + q and Hasse's bound, the counts over every extension, the rank-2g Tate module with its p-torsion caveat, and the bridge ResidualGaloisRep.IsAttachedTo
  • 009 — Differentials, residues, and Riemann–Roch
    differentials, their orders and divisors, the canonical class and genus, local residues and the residue theorem (so a nonzero function has as many zeros as poles), the Riemann inequality and Riemann–Roch, and the genera-0-to-4 computation in pymath
  • 008 — Divisors, linear equivalence, and Pic⁰
    points as discrete valuation rings, divisors, degree, principal divisors and the residue theorem, Pic/Pic⁰ and the Jacobian of X₀(N) with its Hecke and Galois actions, plus ramification, pullback/pushforward, and the correspondence that becomes T_ℓ
▶ Modular curves, level structure, and uniformization 013 · 018
▶ Automorphic, adelic, and Hecke layers 011 · 012 · 014
▶ The primer and level one 001–007

Reading the FLT proof