Definitions/Def_ModularCurve_X1HeckeOperator.lean
Hecke degeneracy maps and Hecke operators on
Throughout, L is a field of characteristic zero (a field with a \mathbb{Q}-algebra structure), M a level and \ell \geq 1. For a congruence subgroup \Gamma, the project's q-expansion function field is the intermediate field of L((q)) generated over L by the quotients \mathrm{int}(p_f)/\mathrm{int}(p_g) of integral q-expansions of two modular forms of equal weight on \Gamma; laurentBaseChange L F₀ denotes the subfield of L((q)) generated by L and the coefficientwise image of F_0 \subseteq \mathbb{Q}((q)). Two maps between base-changed fields are defined. First, heckeAlphaOneBar L M ℓ is the inclusion L\cdot F(\Gamma_1(M)) \hookrightarrow L\cdot F(\Gamma_1(M) \cap \Gamma_0(M\ell)), available because the first field is contained in the second. Secondly, HeckeBetaOneDefined M ℓ is the predicate that the substitution q \mapsto q^{\ell} (the ring homomorphism qExpand, multiplying exponents by \ell) carries F(\Gamma_1(M)) into F(\Gamma_1(M) \cap \Gamma_0(M\ell)); granted this, heckeBetaOneBarOf is the induced L-algebra map on base changes, and heckeBetaOneBar is the total definition equal to it when the predicate holds and to heckeAlphaOneBar otherwise. Auxiliary lemmas record that coefficient maps commute with q \mapsto q^{\ell}, that laurentBaseChange is monotone, and the resulting membership transfer.
With integrality predicates HeckeAlphaOneBarIntegral, HeckeBetaOneBarIntegral for the two maps, and a HasPrincipalDivisors assumption on the upper field, heckeDivOneBar is the correspondence \beta^{*} followed by \alpha_{*} on divisors, and heckePic0OneBar the induced endomorphism of \mathrm{Pic}^0, given the fundamental identity along \beta and finiteness plus the pushforward norm formula along \alpha; heckeDivOneBarTranspose and heckePic0OneBarTranspose interchange the two maps. Finally HeckeInputsOneAlong bundles all these hypotheses as a proposition, and heckeOperatorOneAlong is the total endomorphism of \mathrm{Pic}^0, equal to heckePic0OneBar when the inputs hold and to 0 otherwise; over \overline{\mathbb{Q}} it is an endomorphism of JOne M.
Relation to Mathlib
Mathlib supplies modular forms, the congruence subgroups \Gamma_0, \Gamma_1 and Laurent series, but no modular curve as an algebraic curve and no Hecke action on its Jacobian; the degeneracy maps, the divisor/\mathrm{Pic}^0 correspondences and the Hecke operators here are the project's own, built on its function-field model.
Where it is used
These operators provide the Hecke action on the Jacobian J_1(M) needed to cut out the abelian variety, and hence the Galois representation, attached to a newform; the torsion of \mathrm{Pic}^0 with its arithmetic Galois action supplies the representations used in the Frey curve argument.
References
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005, §5.6
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Princeton University Press, 1971
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 247 lines
- 27 declarations
- used in the statements of 85 theorems and imported by 92 proofs
- imports 2 definition modules
Source file: Definitions/Def_ModularCurve_X1HeckeOperator.lean
Declarations
- theorem
ModularCurve.coeffMap_qExpand₁ - theorem
ModularCurve.coeffEmb_qExpand₁ - theorem
ModularCurve.laurentBaseChange_mono₁ - theorem
ModularCurve.qExpand_mem_laurentBaseChange₁ - def
ModularCurve.heckeAlphaOneBar - theorem
ModularCurve.coe_heckeAlphaOneBar - theorem
ModularCurve.heckeAlphaOneBar_eq_inclusion - def
ModularCurve.HeckeBetaOneDefined - def
ModularCurve.heckeBetaOneBarRingHomOf - def
ModularCurve.heckeBetaOneBarOf - theorem
ModularCurve.coe_heckeBetaOneBarOf - def
ModularCurve.heckeBetaOneBar - theorem
ModularCurve.heckeBetaOneBar_eq - theorem
ModularCurve.heckeBetaOneBar_of_not - theorem
ModularCurve.coe_heckeBetaOneBar - def
ModularCurve.HeckeAlphaOneBarIntegral - def
ModularCurve.HeckeBetaOneBarIntegral - def
ModularCurve.heckeDivOneBar - def
ModularCurve.heckePic0OneBar - def
ModularCurve.heckeDivOneBarTranspose - def
ModularCurve.heckePic0OneBarTranspose - def
ModularCurve.HeckeInputsOneAlong - def
ModularCurve.heckeOperatorOneAlong - theorem
ModularCurve.heckeInputsOneAlong_intro - theorem
ModularCurve.HeckeInputsOneAlong.betaOneDefined - theorem
ModularCurve.heckeOperatorOneAlong_eq - theorem
ModularCurve.heckeOperatorOneAlong_of_not
Source
import Definitions.Def_AlgebraicCurve_Correspondence import Definitions.Def_ModularCurve_X1 set_option autoImplicit false noncomputable section open IsDedekindDomain namespace ModularCurve open AlgebraicCurve IntermediateField HahnSeries section PrivateSupply variable {L : Type*} [Field L] [Algebra ℚ L] private theorem coeffMap_qExpand₁ {R S : Type*} [CommRing R] [CommRing S] (f : R →+* S) (n : ℕ) [NeZero n] (x : LaurentSeries R) : coeffMap f (qExpand R n x) = qExpand S n (coeffMap f x) := by ext k by_cases hk : (n : ℤ) ∣ k · obtain ⟨m, rfl⟩ := hk rw [coeffMap_coeff, qExpand_coeff_mul, qExpand_coeff_mul, coeffMap_coeff] · rw [coeffMap_coeff, qExpand_coeff_of_not_dvd n _ hk, qExpand_coeff_of_not_dvd n _ hk, map_zero] private theorem coeffEmb_qExpand₁ (L : Type*) [Field L] [Algebra ℚ L] (n : ℕ) [NeZero n] (x : LaurentSeries ℚ) : coeffEmb L (qExpand ℚ n x) = qExpand L n (coeffEmb L x) := coeffMap_qExpand₁ _ n x variable (L) in private theorem laurentBaseChange_mono₁ {F₀ F₁ : IntermediateField ℚ (LaurentSeries ℚ)} (h : F₀ ≤ F₁) : laurentBaseChange L F₀ ≤ laurentBaseChange L F₁ := by rw [laurentBaseChange, IntermediateField.adjoin_le_iff] rintro _ ⟨y, hy, rfl⟩ exact coeffEmb_mem_laurentBaseChange L (h hy) private theorem qExpand_mem_laurentBaseChange₁ {F₀ : IntermediateField ℚ (LaurentSeries ℚ)} (n : ℕ) [NeZero n] {F₁ : IntermediateField ℚ (LaurentSeries ℚ)} (hF : ∀ y ∈ F₀, qExpand ℚ n y ∈ F₁) {x : LaurentSeries L} (hx : x ∈ laurentBaseChange L F₀) : qExpand L n x ∈ laurentBaseChange L F₁ := by rw [mem_laurentBaseChange_iff] at hx induction hx using Subfield.closure_induction with | mem y hy => rcases hy with ⟨a, rfl⟩ | ⟨z, hz, rfl⟩ · rw [algebraMap_laurentSeries_eq_single, qExpand_single, mul_zero, ← algebraMap_laurentSeries_eq_single] exact (laurentBaseChange L F₁).algebraMap_mem _ · rw [← coeffEmb_qExpand₁] exact coeffEmb_mem_laurentBaseChange L (hF z hz) | one => simp | add x y _ _ hx hy => simpa using add_mem hx hy | neg x _ hx => simpa using neg_mem hx | inv x _ hx => simpa using inv_mem hx | mul x y _ _ hx hy => simpa using mul_mem hx hy end PrivateSupply variable {L : Type*} [Field L] [Algebra ℚ L] variable (M ℓ : ℕ) [NeZero ℓ] section DegeneracyMaps variable (L) in def heckeAlphaOneBar : laurentBaseChange L (x1FunctionField M) →ₐ[L] laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)) := IntermediateField.inclusion (laurentBaseChange_mono₁ L (x1FunctionFieldC_le_x1x0 ℚ M (M * ℓ))) omit [NeZero ℓ] in @[simp] theorem coe_heckeAlphaOneBar (x : laurentBaseChange L (x1FunctionField M)) : (heckeAlphaOneBar L M ℓ x : LaurentSeries L) = (x : LaurentSeries L) := IntermediateField.coe_inclusion _ x omit [NeZero ℓ] in theorem heckeAlphaOneBar_eq_inclusion (h : laurentBaseChange L (x1FunctionField M) ≤ laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ))) : heckeAlphaOneBar L M ℓ = IntermediateField.inclusion h := rfl def HeckeBetaOneDefined : Prop := ∀ y ∈ x1FunctionField M, qExpand ℚ ℓ y ∈ x1x0FunctionFieldC ℚ M (M * ℓ) variable (L) in def heckeBetaOneBarRingHomOf (h : HeckeBetaOneDefined M ℓ) : laurentBaseChange L (x1FunctionField M) →+* laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)) where toFun x := ⟨qExpand L ℓ (x : LaurentSeries L), qExpand_mem_laurentBaseChange₁ ℓ h x.2⟩ map_one' := Subtype.ext (map_one (qExpand L ℓ)) map_mul' _ _ := Subtype.ext (map_mul (qExpand L ℓ) _ _) map_zero' := Subtype.ext (map_zero (qExpand L ℓ)) map_add' _ _ := Subtype.ext (map_add (qExpand L ℓ) _ _) variable (L) in def heckeBetaOneBarOf (h : HeckeBetaOneDefined M ℓ) : laurentBaseChange L (x1FunctionField M) →ₐ[L] laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)) := { heckeBetaOneBarRingHomOf L M ℓ h with commutes' := fun a => Subtype.ext <| by show qExpand L ℓ (algebraMap L (LaurentSeries L) a) = algebraMap L (LaurentSeries L) a rw [algebraMap_laurentSeries_eq_single, qExpand_single, mul_zero] } @[simp] theorem coe_heckeBetaOneBarOf (h : HeckeBetaOneDefined M ℓ) (x : laurentBaseChange L (x1FunctionField M)) : (heckeBetaOneBarOf L M ℓ h x : LaurentSeries L) = qExpand L ℓ (x : LaurentSeries L) := rfl open Classical in variable (L) in def heckeBetaOneBar : laurentBaseChange L (x1FunctionField M) →ₐ[L] laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)) := if h : HeckeBetaOneDefined M ℓ then heckeBetaOneBarOf L M ℓ h else heckeAlphaOneBar L M ℓ theorem heckeBetaOneBar_eq (h : HeckeBetaOneDefined M ℓ) : (heckeBetaOneBar L M ℓ) = heckeBetaOneBarOf L M ℓ h := by rw [heckeBetaOneBar, dif_pos h] theorem heckeBetaOneBar_of_not (h : ¬ HeckeBetaOneDefined M ℓ) : (heckeBetaOneBar L M ℓ) = heckeAlphaOneBar L M ℓ := by rw [heckeBetaOneBar, dif_neg h] theorem coe_heckeBetaOneBar (h : HeckeBetaOneDefined M ℓ) (x : laurentBaseChange L (x1FunctionField M)) : (heckeBetaOneBar L M ℓ x : LaurentSeries L) = qExpand L ℓ (x : LaurentSeries L) := by rw [heckeBetaOneBar_eq M ℓ h, coe_heckeBetaOneBarOf] end DegeneracyMaps section HeckePic0OneBar variable (L) in def HeckeAlphaOneBarIntegral : Prop := (heckeAlphaOneBar L M ℓ).toRingHom.IsIntegral variable (L) in def HeckeBetaOneBarIntegral : Prop := (heckeBetaOneBar L M ℓ).toRingHom.IsIntegral variable {M ℓ} variable (hα : HeckeAlphaOneBarIntegral L M ℓ) (hβ : HeckeBetaOneBarIntegral L M ℓ) variable [HasPrincipalDivisors L (laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)))] def heckeDivOneBar : Divisor L (laurentBaseChange L (x1FunctionField M)) →+ Divisor L (laurentBaseChange L (x1FunctionField M)) := Divisor.correspondence (heckeBetaOneBar L M ℓ) (heckeAlphaOneBar L M ℓ) hβ hα def heckePic0OneBar (hFI : FundamentalIdentityAlong L (heckeBetaOneBar L M ℓ) hβ) (hfin : FiniteAlong L (heckeAlphaOneBar L M ℓ)) (hN : NormFormulaAlong L (heckeAlphaOneBar L M ℓ) hfin) : Pic0 L (laurentBaseChange L (x1FunctionField M)) →+ Pic0 L (laurentBaseChange L (x1FunctionField M)) := Pic0.correspondence (heckeBetaOneBar L M ℓ) (heckeAlphaOneBar L M ℓ) hβ hα hFI hfin hN def heckeDivOneBarTranspose : Divisor L (laurentBaseChange L (x1FunctionField M)) →+ Divisor L (laurentBaseChange L (x1FunctionField M)) := Divisor.correspondence (heckeAlphaOneBar L M ℓ) (heckeBetaOneBar L M ℓ) hα hβ def heckePic0OneBarTranspose (hFI : FundamentalIdentityAlong L (heckeAlphaOneBar L M ℓ) hα) (hfin : FiniteAlong L (heckeBetaOneBar L M ℓ)) (hN : NormFormulaAlong L (heckeBetaOneBar L M ℓ) hfin) : Pic0 L (laurentBaseChange L (x1FunctionField M)) →+ Pic0 L (laurentBaseChange L (x1FunctionField M)) := Pic0.correspondence (heckeAlphaOneBar L M ℓ) (heckeBetaOneBar L M ℓ) hα hβ hFI hfin hN end HeckePic0OneBar section Total variable (L) def HeckeInputsOneAlong : Prop := ∃ (_ : HeckeBetaOneDefined M ℓ) (_ : HeckeAlphaOneBarIntegral L M ℓ) (hβ : HeckeBetaOneBarIntegral L M ℓ) (_ : HasPrincipalDivisors L (laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)))) (hfin : FiniteAlong L (heckeAlphaOneBar L M ℓ)), FundamentalIdentityAlong L (heckeBetaOneBar L M ℓ) hβ ∧ NormFormulaAlong L (heckeAlphaOneBar L M ℓ) hfin open Classical in def heckeOperatorOneAlong : Pic0 L (laurentBaseChange L (x1FunctionField M)) →+ Pic0 L (laurentBaseChange L (x1FunctionField M)) := if h : HeckeInputsOneAlong L M ℓ then haveI := h.snd.snd.snd.fst heckePic0OneBar h.snd.fst h.snd.snd.fst h.snd.snd.snd.snd.snd.1 h.snd.snd.snd.snd.fst h.snd.snd.snd.snd.snd.2 else 0 variable {L M ℓ} theorem heckeInputsOneAlong_intro (h0 : HeckeBetaOneDefined M ℓ) (hα : HeckeAlphaOneBarIntegral L M ℓ) (hβ : HeckeBetaOneBarIntegral L M ℓ) [hP : HasPrincipalDivisors L (laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)))] (hFI : FundamentalIdentityAlong L (heckeBetaOneBar L M ℓ) hβ) (hfin : FiniteAlong L (heckeAlphaOneBar L M ℓ)) (hN : NormFormulaAlong L (heckeAlphaOneBar L M ℓ) hfin) : HeckeInputsOneAlong L M ℓ := ⟨h0, hα, hβ, hP, hfin, hFI, hN⟩ theorem HeckeInputsOneAlong.betaOneDefined (h : HeckeInputsOneAlong L M ℓ) : HeckeBetaOneDefined M ℓ := h.fst theorem heckeOperatorOneAlong_eq (h0 : HeckeBetaOneDefined M ℓ) (hα : HeckeAlphaOneBarIntegral L M ℓ) (hβ : HeckeBetaOneBarIntegral L M ℓ) [HasPrincipalDivisors L (laurentBaseChange L (x1x0FunctionFieldC ℚ M (M * ℓ)))] (hFI : FundamentalIdentityAlong L (heckeBetaOneBar L M ℓ) hβ) (hfin : FiniteAlong L (heckeAlphaOneBar L M ℓ)) (hN : NormFormulaAlong L (heckeAlphaOneBar L M ℓ) hfin) : heckeOperatorOneAlong L M ℓ = heckePic0OneBar hα hβ hFI hfin hN := by have h : HeckeInputsOneAlong L M ℓ := heckeInputsOneAlong_intro h0 hα hβ hFI hfin hN rw [heckeOperatorOneAlong, dif_pos h] theorem heckeOperatorOneAlong_of_not (h : ¬ HeckeInputsOneAlong L M ℓ) : heckeOperatorOneAlong L M ℓ = 0 := by rw [heckeOperatorOneAlong, dif_neg h] end Total section ModularInstance variable (M ℓ : ℕ) [NeZero ℓ] example : x1FunctionFieldBar M →ₐ[AlgebraicClosure ℚ] laurentBaseChange (AlgebraicClosure ℚ) (x1x0FunctionFieldC ℚ M (M * ℓ)) := heckeAlphaOneBar (AlgebraicClosure ℚ) M ℓ example : JOne M →+ JOne M := heckeOperatorOneAlong (AlgebraicClosure ℚ) M ℓ end ModularInstance end ModularCurve end
Statements phrased using this module (85)
- q-expansion of the Hecke correspondence T_ℓ on differentials
ModularCurve.coeff_diffQExp_correspondence_heckeBetaOneBar_heckeAlphaOneBar_of_not_dvd223 below · depth 19 - Diamond automorphism lifts along both degeneracy embeddings
ModularCurve.exists_algEquiv_intertwinesAlong_diamondAutBar31 below · depth 19 - Atkin–Lehner automorphism interchanging the two degeneracy embeddings
ModularCurve.exists_algEquiv_x1x0FunctionFieldC_atkinLehner30 below · depth 20 - Pinned specialisation family for the norm-free part at p ‖ M
ModularCurve.exists_qExpSemistableSpecializationPinnedV3_family_normFreePart_and_diamond_of_dvd_of_not_sq_dvd_of_le_div5,072 below · depth 20 - Degree of the q↦ q^ℓ degeneracy map on X₁(M)
ModularCurve.finrankAlong_heckeBetaOneBar218 below · depth 20 - Vanishing of ℓ-adic Tate sequences with trivial Igusa specialisation
ModularCurve.tateModule_eq_zero_of_forall_toPic0Pair_sp_eq_zero_of_ne_normFreePartAt_pinnedV3386 below · depth 20 - Level monotonicity and component-wise compatibility of the specialisation family
ModularCurve.XOneP.normFreePartFamily_dom_mono_and_toPic0Pair_sp_eq_of_le_twoChartModel_x1_mul_opsV30 below · depth 21 - Uₚ acts through an automorphism on the étale Igusa component
ModularCurve.XOneP.normFreePartFamily_exists_addEquiv_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_twoChartModel_x1_mul4,670 below · depth 21 - Diamond action on first components of specialised norm-free classes
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_diamondOneBar_fst_eq_twoChartModel_x1_mul2,964 below · depth 21 - Decomposition group acts on second Igusa projection of norm-free points
ModularCurve.XOneP.normFreePartFamily_exists_addMonoidHom_toPic0Pair_sp_smul_snd_eq_of_mem_decompositionSubgroup_twoChartModel_x1_mul3,011 below · depth 21 - Specialisation datum for the norm-free part of J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_exists_dom_sp_interface_twoChartModel_x1_mul_opsV32 below · depth 21 - Inertia-invariant functionals annihilate Tate vectors with vanishing Igusa specialisation
ModularCurve.XOneP.normFreePartFamily_forall_apply_eq_zero_of_tateModule_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul2,215 below · depth 21 - Level independence of the specialisation family on J₁(Mp)
ModularCurve.XOneP.normFreePartFamily_level_pushout_and_sp_eq_twoChartModel_x1_mul_opsV30 below · depth 21 - Inertia-fixed norm-free classes lie in the specialisation domain
ModularCurve.XOneP.normFreePartFamily_mem_dom_of_forall_smul_eq_self_twoChartModel_x1_mul_opsV32 below · depth 21 - Trivial Weil pairing for vanishing glued specialisations
ModularCurve.XOneP.normFreePartFamily_pairing_eq_one_of_toPic0Pair_sp_eq_zero_twoChartModel_x1_mul4,591 below · depth 21 - Inertia twisted by a diamond fixes the second Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_diamondOneBar_smul_snd_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul_opsV31,268 below · depth 21 - q-expansion pin of the specialisation on the Gauss component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_eq_pic0Mk_conorm_laurentPlaceReduction_twoChartModel_x1_mul1,337 below · depth 21 - Frobenius acts coefficientwise on the first Igusa component
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_fst_smul_of_isFrobeniusAt_twoChartModel_x1_mul2,332 below · depth 21 - Uₚ acts as p Fr⁻¹ on norm-free specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_fst_eq_natCast_smul_frob_inv_smul_twoChartModel_x1_mul3,359 below · depth 21 - Triangularity of Uₚ on specialisations of the norm-free part
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_heckeOperatorOneBar_snd_eq_zero_twoChartModel_x1_mul3,359 below · depth 21 - Frobenius acts coefficientwise on the first Igusa-component specialisation
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_frob_smul_of_isFrobeniusAt_twoChartModel_x1_mul0 below · depth 21 - Inertia fixes the cuspidal component of reductions of norm-free points
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_fst_eq_of_mem_inertiaSubgroupIn_twoChartModel_x1_mul1,268 below · depth 21 - Inertia fixing μₚ preserves the second Igusa component of specialisations
ModularCurve.XOneP.normFreePartFamily_toPic0Pair_sp_smul_snd_eq_of_mem_inertiaSubgroupIn_of_forall_pow_eq_one_twoChartModel_x1_mul_opsV31 below · depth 21 - Degree of the first degeneracy embedding over X₁(M)
ModularCurve.finrankAlong_heckeAlphaOneBar216 below · depth 21 - U_ℓ on q-expansions of differentials of X₁(M)
ModularCurve.coeff_diffQExp_correspondence_heckeBetaOneBar_heckeAlphaOneBar_of_dvd219 below · depth 22 - Hecke degeneracies preserve special-fibre components for ℓ ≠ p
ModularCurve.XOneP.exists_comp_eq_fst_comp_heckeDegeneracy_baseChange_of_ne_specialFibre_components_twoChartModel_x1_mul3,025 below · depth 23 - Hecke degeneracy pair on the two-chart model of X₁(Mp)
ModularCurve.XOneP.exists_heckeDegeneracyPair_chartPin_flat_twoChartModel_x1_mul253 below · depth 23 - Level-p Hecke divisor of a Gauss-reducing place of X₁(Mp)
ModularCurve.XOneP.exists_heckeDivOneBar_single_eq_sum_and_red_eq_frob_inv_smul_of_gaussReduces_of_surjective_residue_twoChartModel_x1_mul1,242 below · depth 23 - Finite surjective maps onto a regular two-chart model are flat
ModularCurve.XOneP.flat_and_locallyOfFinitePresentation_of_isRegularLocalRing_of_isFinite_heckeRoof_twoChartModel_x1_mul31 below · depth 23 - Coefficientwise extension of automorphisms of L·ℚ(X₁(N)) to ℚ̄
ModularCurve.exists_algEquiv_x1FunctionFieldBar_coe_eq_coeffMap_of_algEquiv_laurentBaseChange2 below · depth 23 - Place-level Eichler–Shimura relation on the non-Gauss component
ModularCurve.XOneP.exists_coprime_algEquiv_finset_red_diamondAutBar_smul_eq_smul_and_red_eq_smul_frob_smul_red_of_reducesSnd_of_gaussReading_snd_algEquiv_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj3,028 below · depth 24 - Sorting Uₚ at places reducing into the twisted component
ModularCurve.XOneP.exists_finset_heckeDivOneBar_single_eq_single_add_sum_of_red_notMem_of_reducesSnd_of_gaussReading_snd_algEquiv_twoChartModel_x1_mul2,966 below · depth 24 - Two minimal primes over varpi match the two special-fibre components
ModularCurve.XOneP.exists_minimalPrimes_pair_mem_range_iff_le_of_fst_eq_iotaFin_specialFibre_twoChartModel_x1_mul1,238 below · depth 24 - Kronecker congruence in Gauss form for X₁(Mp) chart functions
ModularCurve.XOneP.exists_monic_map_eq_prod_X_sub_C_qTwist_and_gaussPresentation_chartAlgFin_x1_mul86 below · depth 24 - Existence of place-level reductions red₁,red₂ for X₁(Mp)
ModularCurve.XOneP.exists_red_place_eq_pointEquivPlace_of_generic_eq_of_reduction_eq_components_twoChartModel_x1_mul1 below · depth 24 - Degeneracy legs at ℓ≠ p preserve the Gauss centre
ModularCurve.XOneP.forall_valuationSubring_heckeRoof_gaussCentre_alpha_iff_beta_x1_mul1,232 below · depth 24 - Hecke legs track chart primes under ι_α, ι_β
ModularCurve.XOneP.fst_heckeDegeneracy_baseChange_eq_iotaFin_comap_and_ker_comp_eq_of_fst_eq_iotaFin_twoChartModel_x1_mul0 below · depth 24 - ℓ≠ p: the second Hecke leg preserves crossing points
ModularCurve.XOneP.heckeDegeneracy_baseChange_mem_range_inter_range_of_mem_specialFibre_components_twoChartModel_x1_mul2,954 below · depth 24 - Reducedness of a special-fibre component's preimage under π_α, ℓ≠ p
ModularCurve.XOneP.isReduced_pullback_heckeDegeneracy_baseChange_specialFibre_component_of_ne_of_specializes_twoChartModel_x1_mul2,893 below · depth 24 - Norm along the q↦ q^ℓ degeneracy as a product of twists
ModularCurve.coe_heckeBetaOneBar_norm_eq_prod_qTwist_of_finrankAlong_eq0 below · depth 24 - Finiteness of the first degeneracy extension along α₁
ModularCurve.finiteAlong_heckeAlphaOneBar_of_neZero2 below · depth 24 - Finiteness of the β₁ degeneracy extension at level Γ₁(N)
ModularCurve.finiteAlong_heckeBetaOneBar_of_heckeBetaOneDefined2 below · depth 24 - Level-Nt roof field generated by X₁(Nt) and q↦ q^t
ModularCurve.laurentBaseChange_x1FunctionField_sup_adjoin_qExpand_x1x0FunctionFieldC175 below · depth 24 - Compositum of the function fields of X₁(Nt) and X(Γ₁(N)∩Γ₀(Nq))
ModularCurve.laurentBaseChange_x1FunctionField_sup_x1x0FunctionFieldC177 below · depth 24 - Modular equation between the two Hecke legs on j
ModularCurve.XOneP.eval_fibrePoly_apply_heckePin_jChartFin_eq_zero_of_modularPolynomialData_twoChartModel_x1_mul0 below · depth 25 - Kronecker branch test on the mod p fibre of X₁(Mp)
ModularCurve.XOneP.exists_comp_fst_iff_and_exists_comp_snd_iff_apply_jChartFin_of_pow_pow_ne_of_gaussReading_algEquiv_specialFibre_twoChartModel_x1_mul2,926 below · depth 25 - Eichler–Shimura relation read through σ on the Igusa curve
ModularCurve.XOneP.exists_coprime_algEquiv_finset_red_smul_diamondAutBar_smul_eq_and_red_smul_eq_smul_frob_smul_of_gaussReduces_smul_twoChartModel_x1_mul_of_atkinLehner_of_diamondConj2,993 below · depth 25 - Readings of j outside 𝔽_{p²} off finitely many places
ModularCurve.XOneP.exists_finset_red_notMem_imp_apply_jChartFin_pow_ne_of_gaussReading_snd_algEquiv_twoChartModel_x1_mul263 below · depth 25 - Canonical-subgroup sorting of Uₚ at a place of X₁(Mp)
ModularCurve.XOneP.exists_heckeDivOneBar_single_eq_single_add_sum_and_apply_jChartFin_eq_pow_of_apply_eq_pow_of_spec_comp_iotaFin_twoChartModel_x1_mul311 below · depth 25 - Crossing points of the special fibre are supersingular
ModularCurve.XOneP.exists_iotaFin_eq_and_natCast_mem_and_map_jChartFin_mem_ssJSet_of_mem_range_inter_range_specialFibre_twoChartModel_x1_mul2,917 below · depth 25 - Monic lift through q↦ qᵖ of prodᵢ (X-g(ζⁱ q))
ModularCurve.XOneP.exists_monic_map_eq_prod_X_sub_C_qTwist_chartAlgFin_x1_mul81 below · depth 25 - Spanning set with residue-independent Gauss units on a Hecke leg
ModularCurve.XOneP.exists_span_and_residueIndependent_gauss_heckeRoof_x1_mul1,226 below · depth 25 - A Gauss valuation subring of the Hecke roof function field
ModularCurve.XOneP.exists_valuationSubring_gauss_heckeRoof_x1_mul0 below · depth 25 - Saturation of the geometric special fibre components of X₁(Mp)
ModularCurve.XOneP.mem_range_iff_mem_range_of_fst_eq_specialFibre_components_twoChartModel_x1_mul1,204 below · depth 25 - Supersingular chart points of the special fibre are crossing points
ModularCurve.XOneP.mem_range_inter_range_of_iotaFin_eq_of_map_jChartFin_mem_ssJSet_specialFibre_twoChartModel_x1_mul1,480 below · depth 25 - Unramifiedness of valuation rings of the Hecke roof field
ModularCurve.XOneP.mul_inv_mem_of_mem_nonunits_valuationSubring_heckeRoof_of_forall_aeval_mem_x1_mul1,179 below · depth 25 - Hecke degeneracy legs pull the j-finite chart back exactly
ModularCurve.XOneP.preimage_opensRange_iotaFin_eq_heckeDegeneracy_twoChartModel_x1_mul255 below · depth 25 - Reduction into the second component equals Gauss reduction of σ̄ P
ModularCurve.XOneP.red_eq_red_smul_of_reducesSnd_of_gaussReading_snd_algEquiv_twoChartModel_x1_mul2,937 below · depth 25 - Reduction into C₂ versus Gauss reduction of the σ̄-translate
ModularCurve.XOneP.reducesSnd_iff_gaussReduces_smul_of_gaussReading_algEquiv_twoChartModel_x1_mul2,934 below · depth 25 - Reduction at p ∤ Mℓ of the T_ℓ degeneracy maps
ModularCurve.finrankAlong_inclusion_qExpFunctionFieldC_residueField_eq_of_not_dvd296 below · depth 25 - Injectivity of the degeneracy Gram operator on TₚJ₁(N)
ModularCurve.JOne.tateModule_eq_zero_of_forall_pushforwardAlongHom_x1LevelInclBar_x1LevelSubstBar_eq_zero898 below · depth 26 - An L-automorphism exchanging the two minimal primes over varpi
ModularCurve.XOneP.comap_eq_and_comap_eq_of_mem_minimalPrimes_of_gauss_algEquiv_chartAlgFin_x1_mul1,182 below · depth 26 - Diamond action on Gauss-reduced places of the Igusa field
ModularCurve.XOneP.exists_algEquiv_forall_gaussReduces_diamondAutBar_smul_and_red_eq_smul_red_of_coprime_twoChartModel_x1_mul2,923 below · depth 26 - Oriented branch dictionary for the special fibre of X₁(Mp)
ModularCurve.XOneP.exists_comp_fst_iff_and_exists_comp_snd_iff_of_mem_minimalPrimes_of_gaussReading_specialFibre_twoChartModel_x1_mul2,924 below · depth 26 - σ-transport of non-nodal k-points between the two special-fibre components
ModularCurve.XOneP.exists_comp_snd_iff_exists_comp_fst_specMap_comp_ringEquiv_symm_of_gaussReading_algEquiv_specialFibre_twoChartModel_x1_mul2,926 below · depth 26 - Atkin–Lehner transport of Uₚ-supports, up to one diamond
ModularCurve.XOneP.exists_coprime_forall_smul_mem_support_heckeDivOneBar_single_diamondAutBar_smul_smul_of_mem_support_of_atkinLehner394 below · depth 26 - Hecke legs span the roof field by d elements
ModularCurve.XOneP.exists_fin_span_heckeRoof_x1_mul220 below · depth 26 - Uₚ at a place reducing into the Igusa component
ModularCurve.XOneP.exists_heckeDivOneBar_single_eq_sum_and_red_eq_frob_inv_smul_of_gaussReduces_of_surjective_residue_igusaModel_twoChartModel_x1_mul1,242 below · depth 26 - Gauss and σ-twisted readings give the same Igusa place
ModularCurve.XOneP.pointEquivPlace_snd_eq_pointEquivPlace_fst_of_comp_eq_spec_map_comp_iotaFin_of_gaussReading_algEquiv_twoChartModel_x1_mul1,182 below · depth 26 - Transport of j-finite chart points under σ̄
ModularCurve.XOneP.pointEquivPlace_symm_comp_eq_iff_smul_ofAlgAut_of_coe_eq_algEquiv_twoChartModel_x1_mul49 below · depth 26 - Diamond automorphisms of ℚ(X₁(N)) form a (ℤ/N)^×-action
ModularCurve.diamondAut_congr_and_mul_and_one_and_inv_and_diamondAutBar31 below · depth 26 - Diamond twist of mixed push–pulls on J₁(N)
ModularCurve.JOne.diamondOneBar_pushforwardAlongHom_x1LevelSubstBar_pullbackAlongHom_x1LevelInclBar_eq294 below · depth 27 - Push–pull along the first degeneracy map is multiplication by degree
ModularCurve.JOne.pushforwardAlongHom_pullbackAlongHom_x1LevelInclBar_eq_finrankAlong_smul9 below · depth 27 - Push–pull along the degeneracy map β₁ is degree multiplication
ModularCurve.JOne.pushforwardAlongHom_pullbackAlongHom_x1LevelSubstBar_eq_finrankAlong_smul9 below · depth 27 - α_{1,*}β₁^* equals deg(j)· Tₚ on J₁(N)
ModularCurve.JOne.pushforwardAlongHom_x1LevelInclBar_pullbackAlongHom_x1LevelSubstBar_eq_finrankAlong_smul_heckeOperatorOneBar77 below · depth 27 - Atkin–Lehner automorphism at p exchanging the two degeneracy legs
ModularCurve.XOneP.exists_coprime_algEquiv_algEquiv_apply_heckeAlphaOneBar_eq_heckeBetaOneBar_diamondAutBar_and_apply_heckeBetaOneBar_eq_of_atkinLehnerInvolutionFull211 below · depth 27 - Chart functions in the Gauss maximal ideal vanish on C₁
ModularCurve.XOneP.mem_asIdeal_of_mem_nonunits_of_iotaFin_eq_fst_of_gaussReading_specialFibre_twoChartModel_x1_mul1,180 below · depth 27 - Automorphism fixing the X₀(Mp) q-expansions is a diamond
ModularCurve.exists_coprime_forall_eq_diamondAutBar_of_forall_apply_coeffEmb_modularFunctionFieldFull_eq_x1FunctionFieldBar217 below · depth 27 - Equal degrees of the two degeneracy maps X₁(N)leftleftarrows X₁(Np)
ModularCurve.finrankAlong_x1LevelInclBar_eq_finrankAlong_x1LevelSubstBar253 below · depth 27 - Exchanging j(q^e) and j(q^{ep}) determines wₚ
ModularCurve.XOneP.coe_apply_coeffEmb_eq_coeffEmb_atkinLehnerInvolutionFull_of_atkinLehnerSlash_p78 below · depth 28 - Slash transport along Wₚ swaps j(q^e) and j(q^{ep})
ModularCurve.XOneP.coe_apply_eq_coeffEmb_qExpand_mul_jq_of_atkinLehnerSlash_p7 below · depth 28 - Atkin–Lehner pull-back at p swaps the degeneracy embeddings
ModularCurve.XOneP.comp_alpha_eq_beta_and_comp_beta_eq_alpha_comp_diamondAutBar_of_atkinLehnerSlash_p1 below · depth 28 - Atkin–Lehner automorphism W_{p²} of the Γ₁(Mp)∩Γ₀(Mp²) function field
ModularCurve.XOneP.exists_algEquiv_laurentBaseChange_x1x0FunctionFieldC_coeffMap_apply_eq_atkinLehnerSlash_sq112 below · depth 28 - Atkin–Lehner automorphism wₚ of ℚ̄(X₁(Mp))
ModularCurve.XOneP.exists_algEquiv_x1FunctionFieldBar_coeffMap_apply_eq_atkinLehnerSlash_p81 below · depth 28 - Atkin–Lehner leg laws: Wα=β⟨ d⟩τ, Wβ=α⟨ d'⟩τ
ModularCurve.XOneP.exists_coprime_apply_heckeAlphaOneBar_eq_heckeBetaOneBar_diamondAutBar_of_atkinLehnerSlash_p_of_atkinLehnerSlash_sq33 below · depth 28