Fermat's Last Theorem in Lean 4

← all definition modules

Definitions/Def_LanglandsTunnell_TowerCounting.lean

definition module

Frobenius-labelled prime counts over a cyclic subgroup

Throughout, L is a number field that is Galois over \mathbb{Q}. Three counting objects are defined. First, oddJ is the finite set \{1,3,5,7\}\subseteq\mathbb{N} of odd residues modulo 8. Second, labelledCount takes \sigma\in\operatorname{Gal}(L/\mathbb{Q}), a finite set S_0 of naturals, a label m\in\mathbb{Z}/8 and a natural number \ell, and returns a natural number: it is 0 when \ell\in S_0 and when \ell is not prime; otherwise it is the number (as Set.ncard) of primes \mathfrak{q} of the ring of integers of the fixed field L^{\langle\sigma\rangle} — the intermediate field of invariants of the subgroup Subgroup.zpowers σ generated by \sigma — that lie over the ideal \ell\mathbb{Z}, subject to two conditions: the residue ring at \mathfrak{q} has exactly \ell elements (so \mathfrak{q} has residue degree one over \ell), and there exists a prime ideal Q of \mathcal{O}_L lying over both \mathfrak{q} and \ell\mathbb{Z} whose inertia subgroup in \operatorname{Gal}(L/\mathbb{Q}) is trivial and whose arithmetic Frobenius arithFrobAt ℤ (L ≃ₐ[ℚ] L) Q is equal, on the nose and not merely up to conjugacy, to \sigma^{m} for the natural number underlying m. Third, classIndicator takes \sigma and \ell and returns 1 or 0 according as \ell is prime and some prime Q of \mathcal{O}_L over \ell\mathbb{Z} has trivial inertia subgroup in \operatorname{Gal}(L/\mathbb{Q}) and arithmetic Frobenius conjugate to \sigma, or not. Two accompanying lemmas record the evident bounds: labelledCount_of_mem_S₀ states that labelledCount σ S₀ m ℓ vanishes for \ell\in S_0, and classIndicator_le_one that classIndicator σ ℓ \le 1. The finiteness of the residue rings needed to speak of Frobenius is supplied by the prime Q lying over \ell\mathbb{Z} with \ell prime.

Relation to Mathlib

The two counting functions are the project's own; they are assembled from Mathlib's arithmetic Frobenius arithFrobAt, the inertia subgroup of a prime, Ideal.primesOver and FixedPoints.intermediateField, together with the project's abbreviation ratPrimeIdeal ℓ for the ideal \ell\mathbb{Z}.

Where it is used

These counts are the bookkeeping for the Galois-side density argument that produces auxiliary primes with prescribed Frobenius behaviour: the statement that for every \sigma and every finite set S of primes there is \ell\notin S at which \sigma is realised, up to conjugacy and up to a power coprime to its order, by a Frobenius element. That existence statement is what feeds the construction of Taylor–Wiles primes q\equiv 1 \pmod{p^n} at which the residual representation has distinct rational eigenvalues.

References

  1. J. Neukirch, Algebraic Number Theory, Grundlehren der mathematischen Wissenschaften 322, Springer, 1999
  2. J. Tunnell, Artin's conjecture for representations of octahedral type, Bulletin of the American Mathematical Society (N.S.) 5 (1981), 173–175
  3. R. P. Langlands, Base Change for GL(2), Annals of Mathematics Studies 96, Princeton University Press, 1980

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

Imports

Imported by

Declarations

Source

import Definitions.Def_TaylorWiles_Primes
import Mathlib.FieldTheory.Galois.IsGaloisGroup ↗

set_option autoImplicit false

namespace LanglandsTunnell

open NumberField Ideal FrobeniusDensity

def oddJ : Finset ℕ := {1, 3, 5, 7}

variable {L : Type*} [Field L] [NumberField L] [IsGalois ℚ L]

open scoped Classical in

noncomputable def labelledCount (σ : L ≃ₐ[ℚ] L) (S₀ : Finset ℕ) (m : Fin 8) (ℓ : ℕ) : ℕ :=
  if ℓ ∈ S₀ then 0 else
  if hℓ : ℓ.Prime then
    {𝔮 ∈ (ratPrimeIdeal ℓ).primesOver
          (𝓞 (FixedPoints.intermediateField
              (Subgroup.zpowers σ) : IntermediateField ℚ L)) |
      Nat.card ((𝓞 (FixedPoints.intermediateField
          (Subgroup.zpowers σ) : IntermediateField ℚ L)) ⧸ 𝔮) = ℓ ∧
      ∃ (Q : Ideal (𝓞 L)) (_ : Q.IsPrime) (_ : Q.LiesOver 𝔮)
        (_ : Q.LiesOver (ratPrimeIdeal ℓ)) (_ : Q.inertia (L ≃ₐ[ℚ] L) = ⊥),
        haveI : Finite ((𝓞 L) ⧸ Q) :=
          finite_quotient_of_ne_bot (ne_bot_of_liesOver_ratPrimeIdeal hℓ)
        arithFrobAt ℤ (L ≃ₐ[ℚ] L) Q = σ ^ (m : ℕ)}.ncard
  else 0

theorem labelledCount_of_mem_S₀ (σ : L ≃ₐ[ℚ] L) (S₀ : Finset ℕ) (m : Fin 8) {ℓ : ℕ}
    (h : ℓ ∈ S₀) : labelledCount σ S₀ m ℓ = 0 := by
  simp [labelledCount, h]

open scoped Classical in

noncomputable def classIndicator (σ : L ≃ₐ[ℚ] L) (ℓ : ℕ) : ℕ :=
  if ∃ _ : ℓ.Prime, ∃ (Q : Ideal (𝓞 L)) (_ : Q.IsPrime) (_ : Q.LiesOver (ratPrimeIdeal ℓ))
        (_ : Q.inertia (L ≃ₐ[ℚ] L) = ⊥),
      haveI : Finite ((𝓞 L) ⧸ Q) :=
        finite_quotient_of_ne_bot (ne_bot_of_liesOver_ratPrimeIdeal ‹ℓ.Prime›)
      IsConj σ (arithFrobAt ℤ (L ≃ₐ[ℚ] L) Q)
  then 1 else 0

theorem classIndicator_le_one (σ : L ≃ₐ[ℚ] L) (ℓ : ℕ) : classIndicator σ ℓ ≤ 1 := by
  unfold classIndicator; split <;> simp

end LanglandsTunnell

Statements phrased using this module (0)

No statement module imports it directly (it is used through other definition modules or by proofs).