Definitions/Def_ModularCurve_MazurStepThreeInputs.lean
Named inputs for Mazur's step three over
Fix a prime-to-be p with NeZero p, and let JZero p be the degree-zero divisor class group \mathrm{Pic}^0 of the geometric modular function field modularFunctionFieldBar p over \overline{\mathbb Q}. Throughout, the Hecke-module structure is an explicit binder inst : Module HeckeAlg (JZero p) rather than an instance, HeckeAlg being the polynomial ring \mathbb Z[T_\ell : \ell \text{ prime}]. First come the carriers: eisensteinKernelSubmodule p inst is \gamma\cdot\top, where \gamma is the ideal eisensteinKernel attached to eisensteinIdeal p (the kernel of T_\ell \mapsto 1 for \ell \mid p, T_\ell \mapsto 1+\ell otherwise); EisensteinQuotient p inst is the quotient of JZero p by it, eisensteinQuotientMk the quotient map, and eisensteinQuotientRational the image of the set of x with \sigma\cdot x - x \in \gamma\cdot\top for all \sigma \in \mathrm{Gal}(\overline{\mathbb Q}/\mathbb Q), i.e. the "rational part" of the quotient. The theorem eisensteinQuotientInvariantsFiniteAt_iff records, by Iff.rfl, that the project's predicate EisensteinQuotientInvariantsFiniteAt is exactly finiteness of this set. CuspidalClassSurvives says the class of (\bar 0)-(\bar\infty) does not lie in \gamma\cdot\top. Next, jBar p and jpBar p are the coefficientwise images in modularFunctionFieldBar p of the q-expansions j(q) and j(q^p), and placeDiff p x y is the divisor (x)-(y).
MazurQuotientSpecialization p inst asserts: for every prime \ell \neq p and every valuation subring A of \overline{\mathbb Q} with \ell a nonunit of A, there are an abelian group T and an additive map s from the Eisenstein quotient such that (i) s is injective on the prime-to-\ell torsion of eisensteinQuotientRational, (ii) if \ell \neq 2, also on its \ell-power torsion, and (iii) s annihilates the class of (x)-(\bar\infty), resp. (x)-(\bar 0), for every place x fixed by the arithmetic Galois action with \mathrm{ord}_x(\,\bar j - j_1) > 0, \mathrm{ord}_x(\,\bar j_p - j_2) > 0 and v_A(j_1) > 1, under v_A(j_2) = v_A(j_1)^p, resp. v_A(j_2)^p = v_A(j_1) (the relevant divisors being assumed of degree zero).
Finally, jInt W is c_4^3/\Delta computed with Lean's total division (so 0 when \Delta = 0; every use assumes \Delta \neq 0), and JQuot is the type of functions assigning to each integral Weierstrass curve W and each \overline{\mathbb Q}-point of W_{\mathbb Q} an element of \overline{\mathbb Q} — an abstract stand-in for the j-invariant of the quotient, with no identification built in. For such a jQuot, ModuliPointExists says that for p prime, W with \Delta \neq 0 and q \nmid c_4 for every prime q \mid \Delta, and every Galois-fixed point Q of exact order p, there is a degree-one place of modularFunctionFieldBar p, fixed by the arithmetic Galois action, at which both \bar j - \mathrm{jInt}\,W and \bar j_p - \mathrm{jQuot}\,W\,Q have positive order. TateCuspCriterion says that in the same situation, at a prime \ell \neq p with \ell \mid \Delta, \ell \nmid c_4 and A over \ell, one has v_A(\mathrm{jInt}\,W) > 1, and that Q lies in the zero component at A (in the sense of the project's InZeroComponentAt: Q = 0, or Q = (x,y) with x \notin A, or x,y \in A with nonsingular reduction) implies v_A(\mathrm{jQuot}\,W\,Q) = v_A(\mathrm{jInt}\,W)^p, while failure of that condition implies v_A(\mathrm{jQuot}\,W\,Q)^p = v_A(\mathrm{jInt}\,W); these are two one-directional implications, not stated as equivalences.
Relation to Mathlib
Weierstrass curves, their invariants c_4,\Delta, affine points and ValuationSubring are Mathlib's; the curve-theoretic framework used here (places, divisors, \mathrm{Pic}^0, the modular function field as a subfield of Laurent series, the Hecke algebra and the Eisenstein ideal) is the project's own, as are InZeroComponentAt and LiesOverPrime.
Where it is used
These predicates isolate, as propositions carrying no proof, the inputs from Mazur's study of the Eisenstein ideal and from Tate uniformisation that are consumed by the reduction proving MazurStepThree p: the finiteness of the rational part of the Eisenstein quotient, survival of the cuspidal class (which fails for p \le 7 and p = 13), the specialisation map with its injectivity and cusp-killing clauses, existence of the moduli point attached to a pair (W, \langle Q\rangle), and the Tate-curve computation of the quotient j-invariant's valuation.
References
- B. Mazur, Modular curves and the Eisenstein ideal, Publications Mathématiques de l'IHÉS 47 (1977), 33–186
- J. H. Silverman, Advanced Topics in the Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 151, Springer, 1994, Chapter V (Tate curves)
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 125 lines
- 14 declarations
- used in the statements of 51 theorems and imported by 61 proofs
- imports 2 definition modules
Source file: Definitions/Def_ModularCurve_MazurStepThreeInputs.lean
Declarations
- def
ModularCurve.eisensteinKernelSubmodule - abbrev
ModularCurve.EisensteinQuotient - def
ModularCurve.eisensteinQuotientMk - def
ModularCurve.eisensteinQuotientRational - theorem
ModularCurve.eisensteinQuotientInvariantsFiniteAt_iff - def
ModularCurve.CuspidalClassSurvives - abbrev
ModularCurve.jBar - abbrev
ModularCurve.jpBar - def
ModularCurve.placeDiff - def
ModularCurve.MazurQuotientSpecialization - def
ModularCurve.jInt - abbrev
ModularCurve.JQuot - def
ModularCurve.ModuliPointExists - def
ModularCurve.TateCuspCriterion
Source
import Definitions.Def_ModularCurve_Eisenstein import Definitions.Def_ModularCurve_MazurStepThree set_option autoImplicit false noncomputable section open AlgebraicCurve namespace ModularCurve variable (p : ℕ) [NeZero p] def eisensteinKernelSubmodule (inst : Module HeckeAlg (JZero p)) : letI := inst; Submodule HeckeAlg (JZero p) := letI := inst eisensteinKernel (JZero p) (eisensteinIdeal p) • (⊤ : Submodule HeckeAlg (JZero p)) abbrev EisensteinQuotient (inst : Module HeckeAlg (JZero p)) : Type := letI := inst JZero p ⧸ eisensteinKernelSubmodule p inst def eisensteinQuotientMk (inst : Module HeckeAlg (JZero p)) : JZero p →+ EisensteinQuotient p inst := letI := inst (eisensteinKernelSubmodule p inst).mkQ.toAddMonoidHom def eisensteinQuotientRational (inst : Module HeckeAlg (JZero p)) : Set (EisensteinQuotient p inst) := letI := inst eisensteinQuotientMk p inst '' {x : JZero p | ∀ σ : AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ, σ • x - x ∈ eisensteinKernelSubmodule p inst} theorem eisensteinQuotientInvariantsFiniteAt_iff (inst : Module HeckeAlg (JZero p)) : EisensteinQuotientInvariantsFiniteAt p inst ↔ (eisensteinQuotientRational p inst).Finite := Iff.rfl def CuspidalClassSurvives (inst : Module HeckeAlg (JZero p)) : Prop := letI := inst cuspidalClass p ∉ eisensteinKernelSubmodule p inst abbrev jBar : modularFunctionFieldBar p := ⟨coeffEmb (AlgebraicClosure ℚ) jq, coeffEmb_mem_laurentBaseChange (AlgebraicClosure ℚ) (jq_mem_full p)⟩ abbrev jpBar : modularFunctionFieldBar p := ⟨coeffEmb (AlgebraicClosure ℚ) (qExpand ℚ p jq), coeffEmb_mem_laurentBaseChange (AlgebraicClosure ℚ) (jqd_mem_full p (dvd_refl p))⟩ def placeDiff (x y : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar p)) : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar p) := Finsupp.single x 1 - Finsupp.single y 1 def MazurQuotientSpecialization (inst : Module HeckeAlg (JZero p)) : Prop := letI := inst ∀ ℓ : ℕ, ℓ.Prime → ℓ ≠ p → ∀ A : ValuationSubring (AlgebraicClosure ℚ), A.LiesOverPrime ℓ → ∃ (T : Type) (_ : AddCommGroup T) (s : EisensteinQuotient p inst →+ T), (∀ z ∈ eisensteinQuotientRational p inst, (∃ m : ℕ, ¬ ℓ ∣ m ∧ m • z = 0) → s z = 0 → z = 0) ∧ (ℓ ≠ 2 → ∀ z ∈ eisensteinQuotientRational p inst, (∃ k : ℕ, ℓ ^ k • z = 0) → s z = 0 → z = 0) ∧ (∀ (x : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar p)) (j₁ j₂ : AlgebraicClosure ℚ) (hinf : placeDiff p x (cuspInftyBar p) ∈ Divisor.degZero) (hzero : placeDiff p x (cuspZeroBar p) ∈ Divisor.degZero), (∀ σ : AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ, arithmeticGalois (modularFunctionFieldFull p) σ • x = x) → 0 < x.ord (jBar p - algebraMap (AlgebraicClosure ℚ) (modularFunctionFieldBar p) j₁) → 0 < x.ord (jpBar p - algebraMap (AlgebraicClosure ℚ) (modularFunctionFieldBar p) j₂) → 1 < A.valuation j₁ → (A.valuation j₂ = A.valuation j₁ ^ p → s (eisensteinQuotientMk p inst (Pic0.mk ⟨placeDiff p x (cuspInftyBar p), hinf⟩)) = 0) ∧ (A.valuation j₂ ^ p = A.valuation j₁ → s (eisensteinQuotientMk p inst (Pic0.mk ⟨placeDiff p x (cuspZeroBar p), hzero⟩)) = 0)) end ModularCurve namespace ModularCurve open WeierstrassCurve WeierstrassCurve.Affine variable (p : ℕ) [NeZero p] def jInt (W : WeierstrassCurve ℤ) : AlgebraicClosure ℚ := ((W.c₄ : ℤ) : AlgebraicClosure ℚ) ^ 3 / ((W.Δ : ℤ) : AlgebraicClosure ℚ) abbrev JQuot : Type := (W : WeierstrassCurve ℤ) → ((W.map (Int.castRingHom ℚ))⁄(AlgebraicClosure ℚ)).Point → AlgebraicClosure ℚ def ModuliPointExists (jQuot : JQuot) : Prop := p.Prime → ∀ (W : WeierstrassCurve ℤ), W.Δ ≠ 0 → (∀ q : ℕ, q.Prime → (q : ℤ) ∣ W.Δ → ¬ (q : ℤ) ∣ W.c₄) → ∀ (Q : ((W.map (Int.castRingHom ℚ))⁄(AlgebraicClosure ℚ)).Point), (∀ σ : AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ, σ • Q = Q) → addOrderOf Q = p → ∃ x : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar p), x.deg = 1 ∧ (∀ σ : AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ, arithmeticGalois (modularFunctionFieldFull p) σ • x = x) ∧ 0 < x.ord (jBar p - algebraMap (AlgebraicClosure ℚ) (modularFunctionFieldBar p) (jInt W)) ∧ 0 < x.ord (jpBar p - algebraMap (AlgebraicClosure ℚ) (modularFunctionFieldBar p) (jQuot W Q)) def TateCuspCriterion (jQuot : JQuot) : Prop := p.Prime → ∀ (W : WeierstrassCurve ℤ), W.Δ ≠ 0 → ∀ (ℓ : ℕ), ℓ.Prime → ℓ ≠ p → (ℓ : ℤ) ∣ W.Δ → ¬ (ℓ : ℤ) ∣ W.c₄ → ∀ A : ValuationSubring (AlgebraicClosure ℚ), A.LiesOverPrime ℓ → ∀ (Q : ((W.map (Int.castRingHom ℚ))⁄(AlgebraicClosure ℚ)).Point), (∀ σ : AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ, σ • Q = Q) → addOrderOf Q = p → 1 < A.valuation (jInt W) ∧ (W.InZeroComponentAt A Q → A.valuation (jQuot W Q) = A.valuation (jInt W) ^ p) ∧ (¬ W.InZeroComponentAt A Q → A.valuation (jQuot W Q) ^ p = A.valuation (jInt W)) end ModularCurve end
Statements phrased using this module (51)
- landmark Specialisation of the Eisenstein quotient away from p
ModularCurve.mazurQuotientSpecialization_heckeModuleBar2,179 below · depth 7 - Cuspidal class survives in the Eisenstein quotient
ModularCurve.cuspidalClassSurvives_heckeModuleBar498 below · depth 7 - Rational moduli place on X₀(p) at a Vélu quotient
ModularCurve.moduliPointExists_jQuotVelu_of_mult_two323 below · depth 7 - Tate cusp criterion for the Vélu p-isogeny quotient
ModularCurve.tateCuspCriterion_jQuotVelu24 below · depth 7 - Reduction of cuspidal class survival to three inputs
ModularCurve.cuspidalClassSurvives_heckeModuleBar_of_inputs0 below · depth 8 - Nonvanishing of the cuspidal class at prime level
ModularCurve.cuspidalClass_ne_zero450 below · depth 8 - The Eisenstein ideal annihilates the cuspidal class
ModularCurve.eisensteinIdeal_smul_cuspidalClass_heckeModuleBar229 below · depth 8 - Eisenstein-ideal torsion meets the Eisenstein kernel trivially
ModularCurve.eisensteinKernelSubmodule_disjoint_eisensteinTorsion_heckeModuleBar0 below · depth 8 - Finitely generated plus torsion gives the Eisenstein finiteness at p
ModularCurve.eisensteinQuotientInvariantsFiniteAt_heckeModuleBar_of_fg_of_isTorsion0 below · depth 8 - Finite generation of the rational part of the Eisenstein quotient
ModularCurve.eisensteinQuotientRational_closure_fg_heckeModuleBar791 below · depth 8 - Rational part of the Eisenstein quotient is torsion
ModularCurve.eisensteinQuotientRational_isTorsion_heckeModuleBar5,126 below · depth 8 - Good-reduction specialisation of J₀(p) at ℓ with four predicates
ModularCurve.exists_jZeroGoodReductionSpecialization_doorPredicates2,177 below · depth 8 - Degree-one place above a root pair of Φₚ
ModularCurve.exists_place_of_modularPolynomial_eval_eq_zero160 below · depth 8 - Mazur's specialisation input from per-prime good reduction
ModularCurve.mazurQuotientSpecialization_heckeModuleBar_of_doorV20 below · depth 8 - Modular polynomial vanishes at j(W) and j(W/⟨ Q⟩)
ModularCurve.modularPolynomial_eval_jInt_jQuotVelu_eq_zero101 below · depth 8 - Simple root of Φₚ at the Vélu quotient j-invariant
ModularCurve.modularPolynomial_rootMultiplicity_jQuotVelu_eq_one239 below · depth 8 - Uniqueness of a place over a simple root pair of Φₚ
ModularCurve.place_eq_of_modularPolynomial_rootMultiplicity_eq_one152 below · depth 8 - An Eisenstein ideal element acting by num((p-1)/12) on J₀(p)
ModularCurve.eisensteinIdeal_image_cokernel_dvd_num_heckeModuleBar1,072 below · depth 9 - Locally torsion at Eisenstein maximal ideals implies torsion
ModularCurve.eisensteinQuotientRational_closure_locallyTorsion_isTorsion_heckeModuleBar1 below · depth 9 - Rational points of the Eisenstein quotient are torsion
ModularCurve.eisensteinQuotientRational_isTorsion_heckeModuleBar_of_perPrimeFinite16 below · depth 9 - Non-integrality of j at a prime of multiplicative reduction
ModularCurve.not_isIntegral_jInt_of_dvd_discriminant_not_dvd_c40 below · depth 9 - Unramified points above j=0 on X₀(p) count ν₃(p)
ModularCurve.card_filter_ord_jBar_eq_one_eq_nuThree344 below · depth 10 - Unramified places over j=1728 at odd prime level count ν₂(p)
ModularCurve.card_filter_ord_jBar_sub_1728_eq_one_eq_nuTwo342 below · depth 10 - Ramification over j=0 divides 3 for odd level
ModularCurve.ord_jBar_dvd_three_of_odd227 below · depth 10 - Ramification over j=1728 divides 2 for odd level
ModularCurve.ord_jBar_sub_1728_dvd_two_of_odd227 below · depth 10 - Unramifiedness of jmath̄ - c away from 0 and 1728, odd level
ModularCurve.ord_jBar_sub_eq_one_of_ne_zero_of_ne_of_odd225 below · depth 10 - The polar divisor of jmath̄ has degree ψ(N)
ModularCurve.sum_neg_ord_jBar_eq_dedekindPsi188 below · depth 10 - Zeros of jmath̄-j₀ on X₀(N) total ψ(N)
ModularCurve.sum_ord_jBar_sub_eq_dedekindPsi144 below · depth 10 - Degree ψ(N) of the level-N function field over ℚ̄(j)
ModularCurve.CompEq.finrank_adjoin_jBar_eq_dedekindPsi112 below · depth 11 - Admissibility of the Eisenstein-primary torsion of J₀(p)
ModularCurve.eisensteinPrimaryTorsion_isMazurAdmissible_heckeModuleBar1,059 below · depth 11 - Cyclic p-subgroups as places above j₀, p odd
ModularCurve.exists_elliptic_cycSub_orbitMap_prime_of_ne_two296 below · depth 11 - Lifting m-torsion along the Eisenstein quotient map
ModularCurve.exists_mem_torsionBy_eisensteinQuotientMk_eq414 below · depth 11 - Normalised Hahn-series embeddings induce places of F_N
ModularCurve.exists_place_of_emb97 below · depth 11 - Normalised Hahn-series embeddings at a place above j₀
ModularCurve.natCard_normalized_algHom_jBar_eq_toNat_ord151 below · depth 11 - Counting places where jmath̄ vanishes, for odd N
ModularCurve.three_mul_card_eq_dedekindPsi_add_of_forall_mem_iff_pos_ord_jBar299 below · depth 11 - Counting places above j=1728 on X₀(N), N odd
ModularCurve.two_mul_card_eq_dedekindPsi_add_of_forall_mem_iff_pos_ord_jBar_sub_1728299 below · depth 11 - Number of cusps of X₀(N) over ℚ̄
ModularCurve.card_eq_cuspCount_of_forall_mem_iff_ord_jBar_neg156 below · depth 12 - Finiteness of the zero locus of jmath̄ - j₀
ModularCurve.exists_finset_ord_jBar_sub_pos144 below · depth 12 - Normalised Hahn-series embeddings inducing a place above j₀
ModularCurve.natCard_normalized_algHom_hahnSeries_jBar_sub_eq_toNat_ord0 below · depth 12 - Simple zeros of ̄ j on level-N curve count ν₃(N)
ModularCurve.natCard_ord_jBar_eq_one_eq_nuThree239 below · depth 12 - Simple zeros of ̄ j-1728 number ν₂(N)
ModularCurve.natCard_ord_jBar_sub_1728_eq_one_eq_nuTwo239 below · depth 12 - Order of jmath̄ at a zero divides 3
ModularCurve.ord_jBar_dvd_three311 below · depth 12 - Ramification over j = 1728 divides 2 on X₀(N)
ModularCurve.ord_jBar_sub_1728_dvd_two234 below · depth 12 - Order one for jmath̄ - c when c ≠ 0, 1728
ModularCurve.ord_jBar_sub_eq_one_of_ne_zero_of_ne337 below · depth 12 - Places above j₀ and orbits of cyclic N-subgroups
ModularCurve.exists_elliptic_cycSub_orbitMap332 below · depth 13 - Places above a finite j-value as ℚ̄-points of the coordinate ring
ModularCurve.nonempty_equiv_place_pos_ord_algHom_integralClosure143 below · depth 13 - Rational points versus Eisenstein quotient: kernel and cokernel torsion
ModularCurve.rationalPoints_eisensteinQuotient_ker_and_coker_torsion_primeCompl_unconditional239 below · depth 13 - Cusp forms from ℚ̄-rational modular functions via ι₀(x)(vartheta j)^m
ModularCurve.exists_cuspForm_qExpansion_eq_coeffMap_mul_thetaL_pow_of_isIntegral96 below · depth 14 - A weight-2m divisor on X₀(N)_ℚ̄ with integrality
ModularCurve.exists_divisor_degree_weight_and_isIntegral_of_mem_riemannRochSpace454 below · depth 14 - Orbit correspondence for cyclic N-subgroups over a given j₀
ModularCurve.exists_elliptic_cycSub_orbitMap_of_props199 below · depth 14 - Zeros of ̄ j - j₀ count the degree over ℚ̄(̄ j)
ModularCurve.sum_ord_jBar_sub_eq_finrank186 below · depth 14