Fermat's Last Theorem in Lean 4

← all definition modules

Definitions/Def_ModularCurve_HeckeNamedInputs.lean

definition module

Named degeneracy identities: diagonal case and beta-exchange

Throughout, L is a field equipped with a \mathbb{Q}-algebra structure, and for a nonzero level N the relevant curve is presented by the intermediate field L-generated inside \mathrm{LaurentSeries}(L) by the coefficientwise image of \mathrm{modularFunctionFieldFull}(N), the subfield of \mathrm{LaurentSeries}(\mathbb{Q}) generated by the q-expansions j(q^{d}) for d \mid N. Two degeneracy embeddings into level N\ell are available: heckeAlphaBar, the inclusion of the level-N field into the level-N\ell field, and heckeBetaBar, induced by the substitution q \mapsto q^{\ell} (qExpand L ℓ); towerSubstBar L N ℓ h is the latter followed by the inclusion into a larger level M with N\ell \mid M. Divisors are transported by Divisor.pullbackAlong and Divisor.pushforwardAlong along such an algebra map together with a witness that it is integral, and heckeDivBar is the induced correspondence on divisors, pullback along \beta followed by pushforward along \alpha.

HeckeDiagonalIdentity L N p is the proposition, universally quantified over two HasPrincipalDivisors instances (at levels Np and Np^{2}), over integrality witnesses for \alpha,\beta at (N,p) and at (Np,p), over an L-algebra automorphism \sigma of the level-Np field with heckeBetaBar L N p followed by \sigma equal to heckeAlphaBar L N p, over integrality of \sigma, and over a divisor D on the level-Np field, that the pullback along \beta_{N,p} of the pushforward along \alpha_{N,p} of D equals heckeDivBar at the level pair (Np,p) applied to D plus the pushforward of D along \sigma. Classically this is the one-prime double-coset decomposition, the extra term being the graph of the Atkin–Lehner involution.

HeckeBetaExchangeAt L N ℓ ℓ' M hM, for M = N\ell\ell', asserts under the corresponding instances, integrality witnesses for \beta_{N,\ell}, \beta_{N,\ell'} and the two substitution maps to level M, and for every divisor D on the level-N\ell' field, that pullback along \beta_{N,\ell} of pushforward along \beta_{N,\ell'} of D equals the pushforward along towerSubstBar L (N * ℓ) ℓ' of the pullback along towerSubstBar L (N * ℓ') ℓ of D. The helper dvd_of_eq_roof_beta supplies the two divisibilities N\ell\ell' \mid M and N\ell'\ell \mid M needed to name those substitution maps.

Relation to Mathlib

Mathlib has no modular function fields, degeneracy maps or divisor correspondences on them; these predicates are stated entirely in the project's own framework, built on Mathlib's Laurent series, intermediate fields and Finsupp-valued divisors.

Where it is used

These propositions are the named inputs for the commutation rules between Hecke and degeneracy operators on the divisor groups of the base-changed modular function fields, from which the Hecke action on \mathrm{Pic}^{0} (the Jacobian J_0(N)) and its torsion Galois representations are obtained; consumers take them as explicit hypotheses.

References

  1. A. O. L. Atkin and J. Lehner, Hecke operators on \Gamma_0(m), Mathematische Annalen 185 (1970), 134–160
  2. G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Princeton University Press, 1971
  3. F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005

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_HeckeNamedInputs.lean

Imports

Imported by

  • no other definition module

Declarations

Source

import Definitions.Def_ModularCurve_HeckeOperator
import Definitions.Def_ModularCurve_DegeneracyTower

set_option autoImplicit false

namespace ModularCurve

open AlgebraicCurve

section Diagonal

variable (L : Type*) [Field L] [Algebra ℚ L] (N p : ℕ) [NeZero N] [NeZero p]

def HeckeDiagonalIdentity : Prop :=
  ∀ [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull (N * p)))]
    [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull (N * p * p)))]
    (hα : HeckeAlphaBarIntegral L N p) (hβ : HeckeBetaBarIntegral L N p)
    (hα₂ : HeckeAlphaBarIntegral L (N * p) p) (hβ₂ : HeckeBetaBarIntegral L (N * p) p)
    (σ : laurentBaseChange L (modularFunctionFieldFull (N * p)) ≃ₐ[L]
      laurentBaseChange L (modularFunctionFieldFull (N * p)))
    (_ : σ.toAlgHom.comp (heckeBetaBar L N p) = heckeAlphaBar L N p)
    (hσi : σ.toAlgHom.toRingHom.IsIntegral)
    (D : Divisor L (laurentBaseChange L (modularFunctionFieldFull (N * p)))),
    Divisor.pullbackAlong (heckeBetaBar L N p) hβ
        (Divisor.pushforwardAlong (heckeAlphaBar L N p) hα D)
      = heckeDivBar (N := N * p) (ℓ := p) hα₂ hβ₂ D
        + Divisor.pushforwardAlong σ.toAlgHom hσi D

end Diagonal

section BetaExchange

variable (L : Type*) [Field L] [Algebra ℚ L] (N ℓ ℓ' M : ℕ) [NeZero N] [NeZero ℓ] [NeZero ℓ']
  [NeZero M]

omit [NeZero N] [NeZero ℓ] [NeZero ℓ'] [NeZero M] in

theorem dvd_of_eq_roof_beta (hM : M = N * ℓ * ℓ') : N * ℓ * ℓ' ∣ M ∧ N * ℓ' * ℓ ∣ M :=
  ⟨⟨1, by rw [hM, mul_one]⟩, ⟨1, by rw [hM]; ring⟩⟩

def HeckeBetaExchangeAt (hM : M = N * ℓ * ℓ') : Prop :=
  ∀ [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull (N * ℓ)))]
    [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull M))]
    (hβ : (heckeBetaBar L N ℓ).toRingHom.IsIntegral)
    (hβ' : (heckeBetaBar L N ℓ').toRingHom.IsIntegral)
    (hu : (towerSubstBar L (N * ℓ) ℓ' (dvd_of_eq_roof_beta N ℓ ℓ' M hM).1).toRingHom.IsIntegral)
    (hu' : (towerSubstBar L (N * ℓ') ℓ (dvd_of_eq_roof_beta N ℓ ℓ' M hM).2).toRingHom.IsIntegral)
    (D : Divisor L (laurentBaseChange L (modularFunctionFieldFull (N * ℓ')))),
    Divisor.pullbackAlong (heckeBetaBar L N ℓ) hβ
        (Divisor.pushforwardAlong (heckeBetaBar L N ℓ') hβ' D)
      = Divisor.pushforwardAlong (towerSubstBar L (N * ℓ) ℓ'
            (dvd_of_eq_roof_beta N ℓ ℓ' M hM).1) hu
          (Divisor.pullbackAlong (towerSubstBar L (N * ℓ') ℓ
            (dvd_of_eq_roof_beta N ℓ ℓ' M hM).2) hu' D)

end BetaExchange

end ModularCurve

Statements phrased using this module (3)