Definitions/Def_ModularCurve_StepThreeDoorPredicates.lean
Predicates on a specialisation map of
Fix a natural number p with [NeZero p] (primality is never used in the bodies), an additive commutative group T, and an additive homomorphism sp : JZero p \to T out of the project's degree-zero divisor class group of the level-p modular function field; T and sp are arbitrary, standing for the Picard group of a special fibre and a specialisation map. The module only defines predicates (and one subgroup); it proves nothing. TorsBijFor ℓ sp says: for every prime q \neq \ell and every y \in T killed by some power q^n, there is an x \in JZero p killed by some power of q with sp\,x = y — i.e. surjectivity of sp on prime-to-\ell torsion only. FTorsionFor T says T is a torsion group: every y is killed by some m > 0 (it does not mention sp). CuspRuleStrongFor A sp, for a valuation subring A \subseteq \overline{\mathbb{Q}}, quantifies over a place x of the geometric function field and j_1, j_2 \in \overline{\mathbb{Q}}, together with the two hypotheses that the divisors placeDiff p x (cuspInftyBar p) and placeDiff p x (cuspZeroBar p) have degree zero, the hypothesis that x is fixed by the project's arithmetic Galois action of every \sigma \in \mathrm{Gal}(\overline{\mathbb{Q}}/\mathbb{Q}), positivity of the orders of x at jBar p - j_1 and jpBar p - j_2, and 1 < A-valuation of j_1; its conclusion is the conjunction: if v(j_2) = v(j_1)^p then sp of the class of x - \bar\infty vanishes, and if v(j_2)^p = v(j_1) then sp of the class of x - \bar 0 vanishes. In the section assuming a HeckeAlg-module structure on JZero p, spKernelImage sp is the image under sp of the Eisenstein-kernel submodule of ModularCurve_HeckeModule, RaynaudFor ℓ sp says that if \ell \neq 2 then any \ell-power-torsion element z of the rational part of the Eisenstein quotient all of whose lifts are sent by sp into spKernelImage sp must vanish, and CuspRuleFor A sp repeats CuspRuleStrongFor with both conclusions weakened from 0 to membership in spKernelImage sp.
Relation to Mathlib
Mathlib has no notion of a Néron specialisation map or of the Eisenstein quotient of J_0(p); all five predicates and the subgroup are the project's own, built on the project's modular function field, places, cusps and Hecke module. The only Mathlib ingredient used directly is ValuationSubring.valuation for the absolute values |\cdot|_A on \overline{\mathbb{Q}}.
Where it is used
These are the hypotheses that the project's Mazur-style Eisenstein-quotient specialisation argument consumes at a chosen good-reduction witness sp: torsion surjectivity away from \ell, torsion of the target, injectivity on the \ell-torsion of the rational Eisenstein quotient, and the rule that a Galois-stable place with j outside the valuation ring and j_p matched to j_1 by a p-th power relation specialises to a cusp. They are conditions on the given map sp, not consequences of the surrounding good-reduction structure, and they feed the step bounding the rational points of X_0(p) used in the irreducibility and level-lowering part of the argument.
References
- B. Mazur, Modular curves and the Eisenstein ideal, Publications Mathématiques de l'IHÉS 47 (1977), 33–186
- S. Bosch, W. Lütkebohmert, M. Raynaud, Néron Models, Ergebnisse der Mathematik und ihrer Grenzgebiete 21, Springer, 1990
- P. Deligne, M. Rapoport, Les schémas de modules de courbes elliptiques, Lecture Notes in Mathematics 349, Springer, 1973, 143–316
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 65 lines
- 6 declarations
- used in the statements of 11 theorems and imported by 12 proofs
- imports 2 definition modules
Source file: Definitions/Def_ModularCurve_StepThreeDoorPredicates.lean
Imported by
- no other definition module
Declarations
- def
ModularCurve.TorsBijFor - def
ModularCurve.FTorsionFor - def
ModularCurve.CuspRuleStrongFor - def
ModularCurve.spKernelImage - def
ModularCurve.RaynaudFor - def
ModularCurve.CuspRuleFor
Source
import Definitions.Def_ModularCurve_MazurStepThreeInputs import Definitions.Def_ModularCurve_HeckeModule set_option autoImplicit false noncomputable section open ModularCurve AlgebraicCurve namespace ModularCurve local notation "Qbar" => AlgebraicClosure ℚ variable {p : ℕ} [NeZero p] {T : Type*} [AddCommGroup T] def TorsBijFor (ℓ : ℕ) (sp : JZero p →+ T) : Prop := ∀ q : ℕ, q.Prime → q ≠ ℓ → ∀ y : T, (∃ n : ℕ, q ^ n • y = 0) → ∃ x : JZero p, (∃ n : ℕ, q ^ n • x = 0) ∧ sp x = y def FTorsionFor (T : Type*) [AddCommGroup T] : Prop := ∀ y : T, ∃ m : ℕ, 0 < m ∧ m • y = 0 def CuspRuleStrongFor (A : ValuationSubring Qbar) (sp : JZero p →+ T) : Prop := ∀ (x : Place Qbar (modularFunctionFieldBar p)) (j₁ j₂ : Qbar) (hinf : placeDiff p x (cuspInftyBar p) ∈ Divisor.degZero) (hzero : placeDiff p x (cuspZeroBar p) ∈ Divisor.degZero), (∀ σ : Qbar ≃ₐ[ℚ] Qbar, arithmeticGalois (modularFunctionFieldFull p) σ • x = x) → 0 < x.ord (jBar p - algebraMap Qbar (modularFunctionFieldBar p) j₁) → 0 < x.ord (jpBar p - algebraMap Qbar (modularFunctionFieldBar p) j₂) → 1 < A.valuation j₁ → (A.valuation j₂ = A.valuation j₁ ^ p → sp (Pic0.mk ⟨placeDiff p x (cuspInftyBar p), hinf⟩) = 0) ∧ (A.valuation j₂ ^ p = A.valuation j₁ → sp (Pic0.mk ⟨placeDiff p x (cuspZeroBar p), hzero⟩) = 0) section WithHeckeModule variable [iJ : Module HeckeAlg (JZero p)] def spKernelImage (sp : JZero p →+ T) : AddSubgroup T := (eisensteinKernelSubmodule p iJ).toAddSubgroup.map sp def RaynaudFor (ℓ : ℕ) (sp : JZero p →+ T) : Prop := ℓ ≠ 2 → ∀ z ∈ eisensteinQuotientRational p iJ, (∃ k : ℕ, ℓ ^ k • z = 0) → (∀ x : JZero p, eisensteinQuotientMk p iJ x = z → sp x ∈ spKernelImage sp) → z = 0 def CuspRuleFor (A : ValuationSubring Qbar) (sp : JZero p →+ T) : Prop := ∀ (x : Place Qbar (modularFunctionFieldBar p)) (j₁ j₂ : Qbar) (hinf : placeDiff p x (cuspInftyBar p) ∈ Divisor.degZero) (hzero : placeDiff p x (cuspZeroBar p) ∈ Divisor.degZero), (∀ σ : Qbar ≃ₐ[ℚ] Qbar, arithmeticGalois (modularFunctionFieldFull p) σ • x = x) → 0 < x.ord (jBar p - algebraMap Qbar (modularFunctionFieldBar p) j₁) → 0 < x.ord (jpBar p - algebraMap Qbar (modularFunctionFieldBar p) j₂) → 1 < A.valuation j₁ → (A.valuation j₂ = A.valuation j₁ ^ p → sp (Pic0.mk ⟨placeDiff p x (cuspInftyBar p), hinf⟩) ∈ spKernelImage sp) ∧ (A.valuation j₂ ^ p = A.valuation j₁ → sp (Pic0.mk ⟨placeDiff p x (cuspZeroBar p), hzero⟩) ∈ spKernelImage sp) end WithHeckeModule end ModularCurve
Statements phrased using this module (11)
- Good-reduction specialisation of J₀(p) at ℓ with four predicates
ModularCurve.exists_jZeroGoodReductionSpecialization_doorPredicates2,177 below · depth 8 - Mazur's specialisation input from per-prime good reduction
ModularCurve.mazurQuotientSpecialization_heckeModuleBar_of_doorV20 below · depth 8 - Good-reduction specialisation datum for J₀(N), N prime
ModularCurve.CharPModel.FibreModel.exists_jZeroGoodReductionSpecialization_sp_eq_spPic0_of_prime1,099 below · depth 9 - Finite flat model of Eisenstein quotient torsion along `spPic0`
ModularCurve.CharPModel.FibreModel.exists_le_finiteFlat_model_eisensteinQuotient_torsion_spPic0_of_ne_two2,013 below · depth 9 - Specialization is surjective on q-primary torsion, q≠ℓ
ModularCurve.JZeroGoodReductionSpecialization.torsBijFor_of_charP_of_not_dvd1,781 below · depth 9 - Weak cusp rule for a place-specialization packet on X₀(p)
ModularCurve.PlaceSpecialization.cuspRuleFor130 below · depth 9 - Torsion of Pic⁰ of the modular function field in characteristic ℓ
ModularCurve.fTorsionFor_pic0_residueField_modularFunctionFieldC161 below · depth 9 - Raynaud clause from finite flat models of Eisenstein quotient torsion
ModularCurve.raynaudFor_of_le_finiteFlat_model_eisensteinQuotient11 below · depth 9 - Strong cusp rule for place-specialisation packets on X₀(p)
ModularCurve.PlaceSpecialization.cuspRuleStrongFor129 below · depth 10 - Two-exponent finite flat model of Eisenstein quotient torsion
ModularCurve.exists_le_finiteFlat_model_eisensteinQuotient_torsion_reductionModL_of_ne_two2,005 below · depth 10 - Lifting ℓ-power torsion in the Eisenstein kernel through reduction
ModularCurve.exists_le_mem_eisensteinKernelSubmodule_torsionBy_reductionModL_eq1,884 below · depth 11