Definitions/Def_ModularCurve_FppfKummerInterface.lean
Abstract fppf Kummer data for modular Jacobians
Two bundles of data, in a fixed universe, axiomatising the cohomological input of a Kummer-theory argument over S=\operatorname{Spec}\mathbb{Z} in purely group-theoretic terms: no site, scheme or cohomology theory occurs, only types, additive commutative group structures on them, homomorphisms, and propositions carried as fields, so that producing a term of either structure amounts to proving the asserted facts for the chosen model.
ModularCurve.FppfKummerData p, for a natural number p, consists of three types H0Gm, H1mu, H1Z, each equipped with an additive commutative group structure (the structures being instance-valued fields), a homomorphism kummerDelta : H0Gm →+ H1mu, and three propositions: kummerDelta is surjective; H1Z is a subsingleton, i.e. the trivial group; and H1mu is a subsingleton whenever p is odd. The intended reading is H^0(S,\mathbb{G}_m), H^1(S,\mu_p), H^1(S,\mathbb{Z}/p) with the Kummer boundary map; note that the vanishing of H1Z is unconditional while that of H1mu is asserted only under Odd p.
ModularCurve.JKummerRow p m M, for natural numbers p,m and an additive commutative group M, consists of three types M0, H1Jtors, H1J with additive commutative group structures, a homomorphism toM : M0 →+ M which is injective and whose range is an additive subgroup of finite index, and homomorphisms delta : M0 →+ H1Jtors, push : H1Jtors →+ H1J subject to three conditions: the kernel of delta equals the range of multiplication by p^m on M0, i.e. p^m\,M0; the pair delta, push is exact in the sense of Function.Exact (range of delta equals kernel of push); and the range of push equals the kernel of multiplication by p^m on H1J, i.e. the p^m-torsion of H1J. Thus delta induces an injection of M0/p^mM0 into H1Jtors and push maps H1Jtors onto H1J[p^m].
Relation to Mathlib
Mathlib has no fppf cohomology; both structures are the project's own abstraction of the values such a theory would supply, expressed with Mathlib's AddMonoidHom, AddSubgroup.FiniteIndex and Function.Exact.
Where it is used
The data axiomatise the exact sequences used in Mazur's proof that the relevant Mordell–Weil and Shafarevich–Tate groups attached to a modular Jacobian are finite: the elementary coefficient computations over \operatorname{Spec}\mathbb{Z} in the first structure, and the p^m-level Kummer sequence for the connected Néron model of the Jacobian, together with the finiteness of the index of its group of integral points, in the second.
References
- B. Mazur, Modular curves and the Eisenstein ideal, Publications Mathématiques de l'IHÉS 47 (1977), 33–186
- J. S. Milne, Arithmetic Duality Theorems, Academic Press, 1986
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 60 lines
- 20 declarations
- used in the statements of 0 theorems and imported by 0 proofs
- imports 0 definition modules
Source file: Definitions/Def_ModularCurve_FppfKummerInterface.lean
Imports
- only Mathlib
Declarations
- structure
ModularCurve.FppfKummerData - field
ModularCurve.FppfKummerData.H0Gm - field
ModularCurve.FppfKummerData.H1mu - field
ModularCurve.FppfKummerData.H1Z - field
ModularCurve.FppfKummerData.kummerDelta - field
ModularCurve.FppfKummerData.kummerDelta_surjective - field
ModularCurve.FppfKummerData.h1Z_subsingleton - field
ModularCurve.FppfKummerData.h1mu_subsingleton - structure
ModularCurve.JKummerRow - field
ModularCurve.JKummerRow.M0 - field
ModularCurve.JKummerRow.H1Jtors - field
ModularCurve.JKummerRow.H1J - field
ModularCurve.JKummerRow.toM - field
ModularCurve.JKummerRow.toM_injective - field
ModularCurve.JKummerRow.toM_finiteIndex - field
ModularCurve.JKummerRow.delta - field
ModularCurve.JKummerRow.push - field
ModularCurve.JKummerRow.delta_ker - field
ModularCurve.JKummerRow.exact_delta_push - field
ModularCurve.JKummerRow.push_range
Source
import Mathlib.Algebra.Exact ↗ import Mathlib.GroupTheory.Index ↗ set_option autoImplicit false noncomputable section namespace ModularCurve universe u structure FppfKummerData (p : ℕ) where H0Gm : Type u H1mu : Type u H1Z : Type u [instH0Gm : AddCommGroup H0Gm] [instH1mu : AddCommGroup H1mu] [instH1Z : AddCommGroup H1Z] kummerDelta : H0Gm →+ H1mu kummerDelta_surjective : Function.Surjective kummerDelta h1Z_subsingleton : Subsingleton H1Z h1mu_subsingleton : Odd p → Subsingleton H1mu structure JKummerRow (p m : ℕ) (M : Type u) [AddCommGroup M] where M0 : Type u H1Jtors : Type u H1J : Type u [instM0 : AddCommGroup M0] [instH1Jtors : AddCommGroup H1Jtors] [instH1J : AddCommGroup H1J] toM : M0 →+ M toM_injective : Function.Injective toM toM_finiteIndex : toM.range.FiniteIndex delta : M0 →+ H1Jtors push : H1Jtors →+ H1J delta_ker : delta.ker = (((p ^ m : ℤ) • (AddMonoidHom.id M0 : M0 →+ M0)).range : AddSubgroup M0) exact_delta_push : Function.Exact delta push push_range : push.range = (AddMonoidHom.ker ((p ^ m : ℤ) • AddMonoidHom.id H1J) : AddSubgroup H1J) end ModularCurve
Statements phrased using this module (0)
No statement module imports it directly (it is used through other definition modules or by proofs).