Fermat's Last Theorem in Lean 4

← all definition modules

Definitions/Def_ModularCurve_Eisenstein.lean

definition module

Named Eisenstein-ideal and cuspidal-class hypotheses on

Four predicates (def … : Prop) in namespace ModularCurve that instantiate the generic Eisenstein/Hecke calculus of the project's HeckeGalois_EichlerShimura layer at the concrete carriers JZero p, eisensteinIdeal p, heckePic0Bar and cuspidalClass p. Each takes p : ℕ with only [NeZero p] (primality and size conditions are left to consuming theorems), and the first, second and fourth take an explicit binder inst : Module HeckeAlg (JZero p), installed locally by letI, since no ambient Hecke-module structure on JZero p is assumed at this point. EisensteinQuotientInvariantsFiniteAt p inst is the project's generic predicate EisensteinQuotientInvariantsFinite applied with group G the automorphism group \bar{\mathbb Q}\simeq_{\mathbb Q}\bar{\mathbb Q}, module JZero p and ideal eisensteinIdeal p; its intended reading is finiteness of the Galois invariants of the Eisenstein quotient, but what the Prop asserts is exactly the unfolding of that project notion, and no commutation of the Hecke action with G is required by the binders. SpecializationSlot p q inst is the project's SpecializationExists at K=\mathbb Q, L=\bar{\mathbb Q}, the pair (p,q) and the module JZero p. HeckeKillsCuspidalClass p ℓ hα hβ hFI hfin hN carries, in order, the inputs demanded by heckePic0Bar: integrality hypotheses HeckeAlphaBarIntegral/HeckeBetaBarIntegral for the two Hecke correspondence maps at level p\ell, a HasPrincipalDivisors instance for modularFunctionFieldBar (p * ℓ), a fundamental identity FundamentalIdentityAlong, finiteness FiniteAlong and a norm formula NormFormulaAlong; its conclusion is the pointwise equation \mathrm{heckePic0Bar}(\text{cuspidalClass } p) - (1+\ell)\cdot\text{cuspidalClass } p = 0, i.e. T_\ell acts on the cuspidal class by 1+\ell, written as a subtraction rather than as an operator T_\ell-(1+\ell). EisensteinKernelKillsCuspidalClass p inst says every t in eisensteinKernel (JZero p) (eisensteinIdeal p) satisfies t\cdot\text{cuspidalClass } p = 0. None of the four is a theorem here: the module proves nothing about X_0(N) and states nothing about the order of the cuspidal class.

Relation to Mathlib

Mathlib has no Eisenstein ideal, cuspidal class or Hecke action on J_0(p); all notions named here, including JZero, eisensteinIdeal, eisensteinKernel, heckePic0Bar, cuspidalClass and the generic EisensteinQuotientInvariantsFinite/SpecializationExists predicates, are the project's own.

Where it is used

These named hypotheses form the interface through which the Mazur-style input on J_0(p) — finiteness of the Galois invariants of the Eisenstein quotient, specialisation of J_0(p) at an auxiliary prime, and the annihilation of the cuspidal class by T_\ell-(1+\ell) and by the Eisenstein kernel — is supplied to the statement modules that depend on it; eleven downstream modules import them.

References

  1. B. Mazur, Modular curves and the Eisenstein ideal, Publications Mathématiques de l'IHÉS 47 (1977), 33–186
  2. A. P. Ogg, Rational points on certain elliptic modular curves, Proceedings of Symposia in Pure Mathematics 24 (1973), 221–231
  3. H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154

References are suggested automatically and have not been individually verified.

English text generated automatically from the Lean source; the Lean statement is authoritative.

Source file: Definitions/Def_ModularCurve_Eisenstein.lean

Imports

Imported by

Declarations

Source

import Definitions.Def_HeckeGalois_EichlerShimura
import Definitions.Def_ModularCurve_HeckeOperator
import Definitions.Def_ModularCurve_CuspidalClass

set_option autoImplicit false

noncomputable section

namespace ModularCurve

open AlgebraicCurve

def EisensteinQuotientInvariantsFiniteAt (p : ℕ) [NeZero p]
    (inst : Module HeckeAlg (JZero p)) : Prop :=
  letI := inst
  EisensteinQuotientInvariantsFinite
    (G := AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ) (JZero p) (eisensteinIdeal p)

def SpecializationSlot (p q : ℕ) [NeZero p] (inst : Module HeckeAlg (JZero p)) : Prop :=
  letI := inst
  SpecializationExists (K := ℚ) (L := AlgebraicClosure ℚ) p q (JZero p)

def HeckeKillsCuspidalClass (p ℓ : ℕ) [NeZero p] [NeZero ℓ]
    (hα : HeckeAlphaBarIntegral (AlgebraicClosure ℚ) p ℓ)
    (hβ : HeckeBetaBarIntegral (AlgebraicClosure ℚ) p ℓ)
    [HasPrincipalDivisors (AlgebraicClosure ℚ) (modularFunctionFieldBar (p * ℓ))]
    (hFI : FundamentalIdentityAlong (AlgebraicClosure ℚ)
      (heckeBetaBar (AlgebraicClosure ℚ) p ℓ) hβ)
    (hfin : FiniteAlong (AlgebraicClosure ℚ) (heckeAlphaBar (AlgebraicClosure ℚ) p ℓ))
    (hN : NormFormulaAlong (AlgebraicClosure ℚ)
      (heckeAlphaBar (AlgebraicClosure ℚ) p ℓ) hfin) : Prop :=
  heckePic0Bar hα hβ hFI hfin hN (cuspidalClass p) - (1 + ℓ : ℤ) • cuspidalClass p = 0

def EisensteinKernelKillsCuspidalClass (p : ℕ) [NeZero p]
    (inst : Module HeckeAlg (JZero p)) : Prop :=
  letI := inst
  ∀ t ∈ eisensteinKernel (JZero p) (eisensteinIdeal p), t • cuspidalClass p = 0

end ModularCurve

Statements phrased using this module (4)