Fermat's Last Theorem in Lean 4

← all definition modules

Definitions/Def_RibetLevelLowering_ExchangeData.lean

definition module

Exchange data for Ribet's level-lowering dimension count

The module defines, over a field k, a structure ExchangeData k packaging the numerical data of the exchange case of Ribet's level-lowering argument as a bundle of abstract finite-dimensional k-vector spaces. A term of ExchangeData k carries five types Xp, Yq, Lp, Yp, Lq, each equipped with an additive commutative group structure, a k-module structure and the assumption of being a finite k-module (these instance fields are registered as instances), together with two k-linear maps f : \mathrm{Yq} \to \mathrm{Lp} and g : \mathrm{Lp} \to \mathrm{Xp}, a proof that g is surjective, and a proof of the inclusion \ker g \le \operatorname{range} f — that is, right exactness of \mathrm{Yq} \to \mathrm{Lp} \to \mathrm{Xp} \to 0 recorded as an inclusion of submodules rather than an equality. Finally it carries two natural numbers lam and mu and five numerical constraints on dimensions, \operatorname{finrank}_k \mathrm{Yp} = 2\mu, \operatorname{finrank}_k \mathrm{Lp} = 2\lambda, \operatorname{finrank}_k \mathrm{Yq} \le \mu, \operatorname{finrank}_k \mathrm{Lq} \le \lambda, \operatorname{finrank}_k \mathrm{Xp} \le \mu, and the positivity 0 < \lambda. Thus the whole structure is a theorem-free data package: the geometric provenance of the five spaces (character groups of toric parts and Brandt-module analogues, reduced modulo a maximal ideal of a Hecke algebra) and of the maps is not part of the Lean type, which refers only to k.

The second declaration is the predicate SeqIso on ExchangeData k, defined to hold exactly when \operatorname{finrank}_k \mathrm{Yp} = \operatorname{finrank}_k \mathrm{Lq}. It is therefore an equality of dimensions, not the datum of a linear isomorphism between the two spaces.

Relation to Mathlib

Mathlib has no notion of this kind of exchange datum; the structure is the project's own, built from Mathlib's Module.Finite, Module.finrank, and linear maps with LinearMap.ker and LinearMap.range.

Where it is used

The data assembled here are the hypotheses of the dimension count in the exchange case of Ribet's level-lowering theorem: from the constraints together with SeqIso one derives incompatible inequalities between \lambda and \mu, contradicting 0 < \lambda. Level lowering in turn converts the modularity of the Frey curve attached to a putative Fermat solution into a modular form of level 2, which does not exist.

References

  1. K. A. Ribet, On modular representations of \mathrm{Gal}(\overline{\mathbb{Q}}/\mathbb{Q}) arising from modular forms, Inventiones Mathematicae 100 (1990), 431–476
  2. K. A. Ribet, Report on mod \ell representations of \mathrm{Gal}(\overline{\mathbf{Q}}/\mathbf{Q}), in: Motives, Proceedings of Symposia in Pure Mathematics 55, American Mathematical Society, 1994, 639–676

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

Imports

  • only Mathlib

Imported by

Declarations

Source

import Mathlib

open Module

namespace RibetEndgame

structure ExchangeData (k : Type) [Field k] : Type 1 where

  Xp : Type
  [acgXp : AddCommGroup Xp]
  [modXp : Module k Xp]
  [finXp : Module.Finite k Xp]

  Yq : Type
  [acgYq : AddCommGroup Yq]
  [modYq : Module k Yq]
  [finYq : Module.Finite k Yq]

  Lp : Type
  [acgLp : AddCommGroup Lp]
  [modLp : Module k Lp]
  [finLp : Module.Finite k Lp]

  Yp : Type
  [acgYp : AddCommGroup Yp]
  [modYp : Module k Yp]
  [finYp : Module.Finite k Yp]

  Lq : Type
  [acgLq : AddCommGroup Lq]
  [modLq : Module k Lq]
  [finLq : Module.Finite k Lq]

  f : Yq →ₗ[k] Lp

  g : Lp →ₗ[k] Xp

  surj_g : Function.Surjective g

  exact_fg : LinearMap.ker g ≤ LinearMap.range f

  lam : ℕ

  mu : ℕ

  finrank_Yp : finrank k Yp = 2 * mu

  finrank_Lp : finrank k Lp = 2 * lam

  finrank_Yq_le : finrank k Yqmu

  finrank_Lq_le : finrank k Lqlam

  finrank_Xp_le : finrank k Xpmu

  lam_pos : 0 < lam

attribute [instance] ExchangeData.acgXp ExchangeData.modXp ExchangeData.finXp
attribute [instance] ExchangeData.acgYq ExchangeData.modYq ExchangeData.finYq
attribute [instance] ExchangeData.acgLp ExchangeData.modLp ExchangeData.finLp
attribute [instance] ExchangeData.acgYp ExchangeData.modYp ExchangeData.finYp
attribute [instance] ExchangeData.acgLq ExchangeData.modLq ExchangeData.finLq

namespace ExchangeData

variable {k : Type} [Field k]

def SeqIso (d : ExchangeData k) : Prop :=
  finrank k d.Yp = finrank k d.Lq

end ExchangeData

end RibetEndgame

Statements phrased using this module (0)

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