Definitions/Def_ModularCurve_HeckeDifferential.lean
Euler derivation, q-expansion of differentials, Hecke action
Over a commutative ring R, ModularCurve.qEulerFun sends a Laurent series x\in R((q)) to the series with coefficients n\,x_n, and ModularCurve.qEuler packages this as a derivation of R((q)) over R, namely \vartheta = q\,d/dq; the Leibniz rule is verified coefficientwise, and qEuler_single records \vartheta(rq^n) = n r q^n. Auxiliary lemmas give the support inclusion \operatorname{supp}(\vartheta x)\subseteq\operatorname{supp}(x) and the identity \operatorname{algebraMap}(c)=\mathrm{single}\,0\,c.
For a field L and an intermediate field F of L\subseteq L((q)), ModularCurve.qEulerOn is the restriction of \vartheta to F, viewed as an L-derivation F\to L((q)), and ModularCurve.diffQExp is its universal factorisation through the module of Kähler differentials: the F-linear map \Omega_{F/L}\to L((q)) with d x\mapsto \vartheta x, hence f\,dx\mapsto f\cdot\vartheta x. Thus a differential written as h\,dq/q is sent to h. Instance declarations supply the L-algebra structure on F, the L-module structure and scalar tower on \Omega_{F/L}, and the scalar tower L–F–L((q)).
In the modular setting, for a field L containing \mathbb{Q} and positive integers N,\ell, ModularCurve.heckeDiffAlong is the endomorphism of \Omega_{L\cdot F_N/L} given by Differential.correspondence applied to the pair (\beta,\alpha), i.e. the pullback along \alpha (the inclusion of the base-changed full modular function field of level N into that of level N\ell) followed by the trace along \beta (the substitution q\mapsto q^{\ell}); the trace leg is defined via the formally étale base-change equivalence when the extension along \beta is separable, and is 0 otherwise. ModularCurve.heckeDiffBar specialises this to L=\overline{\mathbb{Q}} and a prime \ell, an \overline{\mathbb{Q}}-linear endomorphism of \Omega_{\overline{\mathbb{Q}}F_N/\overline{\mathbb{Q}}}. Finally ModularCurve.diffQExpBar and ModularCurve.regularDifferentialsBar abbreviate, at L=\overline{\mathbb{Q}}, the q-expansion map and the submodule of differentials \omega such that at every place v one has \omega = f\cdot d\pi_v with f in the valuation ring of v and \pi_v the chosen uniformiser.
Relation to Mathlib
Mathlib supplies LaurentSeries, Derivation and KaehlerDifferential; the derivation q\,d/dq on R((q)), the induced q-expansion map on Kähler differentials, and the pullback/trace correspondence on differentials along an algebra map (from the project's AlgebraicCurve.Differential) are the project's own notions.
Where it is used
The q-expansion map on differentials is what converts regular differentials on the modular curve into power series, giving the dictionary between H^0(\Omega^1) and weight-two cusp forms; heckeDiffBar is the Hecke correspondence acting on differentials, the cotangent counterpart of the Hecke action on \mathrm{Pic}^0 of the modular curve used throughout the modularity and level-lowering arguments.
References
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005
- 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.
- 187 lines
- 22 declarations
- used in the statements of 63 theorems and imported by 78 proofs
- imports 3 definition modules
Source file: Definitions/Def_ModularCurve_HeckeDifferential.lean
Imports
Imported by
Declarations
- def
ModularCurve.qEulerFun - theorem
ModularCurve.qEulerFun_coeff - theorem
ModularCurve.support_qEulerFun_subset - theorem
ModularCurve.algebraMap_laurentSeries_apply_alt - def
ModularCurve.qEuler - theorem
ModularCurve.qEuler_coeff - theorem
ModularCurve.qEuler_single - instance
ModularCurve.instAlgebraIntermediateFieldLaurent - instance
ModularCurve.instModuleKaehlerIntermediateFieldLaurent - instance
ModularCurve.instIsScalarTowerKaehlerIntermediateFieldLaurent - instance
ModularCurve.instIsScalarTowerIntermediateFieldLaurent - def
ModularCurve.qEulerOn - theorem
ModularCurve.qEulerOn_apply - def
ModularCurve.diffQExp - theorem
ModularCurve.diffQExp_D - theorem
ModularCurve.diffQExp_smul_D - def
ModularCurve.heckeDiffAlong - theorem
ModularCurve.heckeDiffAlong_apply - def
ModularCurve.heckeDiffBar - theorem
ModularCurve.heckeDiffBar_eq - abbrev
ModularCurve.diffQExpBar - abbrev
ModularCurve.regularDifferentialsBar
Source
import Mathlib import Definitions.Def_ModularCurve_HeckeOperator import Definitions.Def_AlgebraicCurve_DifferentialPushPull import Definitions.Def_AlgebraicCurve_RegularDifferentials set_option autoImplicit false noncomputable section open HahnSeries KaehlerDifferential AlgebraicCurve namespace ModularCurve section Euler variable (R : Type*) [CommRing R] def qEulerFun (x : LaurentSeries R) : LaurentSeries R where coeff n := (n : R) * x.coeff n isPWO_support' := x.isPWO_support.mono fun n hn => by simp only [Function.mem_support, ne_eq] at hn ⊢ intro h exact hn (by rw [h, mul_zero]) @[simp] theorem qEulerFun_coeff (x : LaurentSeries R) (n : ℤ) : (qEulerFun R x).coeff n = (n : R) * x.coeff n := rfl theorem support_qEulerFun_subset (x : LaurentSeries R) : (qEulerFun R x).support ⊆ x.support := fun n hn => by contrapose! hn simp only [mem_support, ne_eq, not_not] at hn ⊢ rw [qEulerFun_coeff, hn, mul_zero] theorem algebraMap_laurentSeries_apply_alt (c : R) : algebraMap R (LaurentSeries R) c = single 0 c := by have h1 : algebraMap R (PowerSeries R) c = PowerSeries.C c := by simp rw [HahnSeries.algebraMap_apply', h1, HahnSeries.ofPowerSeries_C] rfl def qEuler : Derivation R (LaurentSeries R) (LaurentSeries R) where toFun := qEulerFun R map_add' x y := by ext n simp only [qEulerFun_coeff, coeff_add, mul_add] map_smul' r x := by ext n simp only [RingHom.id_apply, qEulerFun_coeff] rw [Algebra.smul_def, algebraMap_laurentSeries_apply_alt, coeff_single_zero_mul, HahnSeries.coeff_smul, qEulerFun_coeff, smul_eq_mul] ring map_one_eq_zero' := by ext n simp only [LinearMap.coe_mk, AddHom.coe_mk, qEulerFun_coeff, coeff_zero] by_cases hn : n = 0 · subst hn; simp · rw [coeff_one, if_neg hn, mul_zero] leibniz' x y := by ext a simp only [LinearMap.coe_mk, AddHom.coe_mk, qEulerFun_coeff, coeff_add', Pi.add_apply, smul_eq_mul] rw [coeff_mul, coeff_mul_right' (x := x) (y := qEulerFun R y) y.isPWO_support (support_qEulerFun_subset R y), coeff_mul_right' (x := y) (y := qEulerFun R x) x.isPWO_support (support_qEulerFun_subset R x), Finset.mul_sum] have hswap : ∑ ij ∈ Finset.antidiagonal y.isPWO_support x.isPWO_support a, y.coeff ij.1 * (qEulerFun R x).coeff ij.2 = ∑ ij ∈ Finset.antidiagonal x.isPWO_support y.isPWO_support a, (ij.1 : R) * x.coeff ij.1 * y.coeff ij.2 := by refine Finset.sum_nbij' Prod.swap Prod.swap ?_ ?_ ?_ ?_ ?_ · intro ij hij exact Finset.swap_mem_antidiagonal.mpr hij · intro ij hij exact Finset.swap_mem_antidiagonal.mpr hij · intro ij _; rfl · intro ij _; rfl · intro ij _ simp only [Prod.fst_swap, Prod.snd_swap, qEulerFun_coeff] ring rw [hswap, ← Finset.sum_add_distrib] refine Finset.sum_congr rfl fun ij hij => ?_ rw [Finset.mem_antidiagonal] at hij rw [qEulerFun_coeff, ← hij.2.2, Int.cast_add] ring @[simp] theorem qEuler_coeff (x : LaurentSeries R) (n : ℤ) : (qEuler R x).coeff n = (n : R) * x.coeff n := rfl theorem qEuler_single (n : ℤ) (r : R) : qEuler R (single n r) = single n ((n : R) * r) := by ext m by_cases h : m = n · subst h; simp · simp [coeff_single_of_ne h] end Euler section Shortcuts variable {L : Type*} [Field L] (F : IntermediateField L (LaurentSeries L)) set_option synthInstance.maxHeartbeats 400000 in instance instAlgebraIntermediateFieldLaurent : Algebra L F := inferInstance set_option synthInstance.maxHeartbeats 400000 in instance instModuleKaehlerIntermediateFieldLaurent : Module L Ω[F⁄L] := inferInstance set_option synthInstance.maxHeartbeats 400000 in instance instIsScalarTowerKaehlerIntermediateFieldLaurent : IsScalarTower L F Ω[F⁄L] := inferInstance instance instIsScalarTowerIntermediateFieldLaurent : IsScalarTower L F (LaurentSeries L) := ⟨fun c f x => by show ((c • f : F) : LaurentSeries L) * x = c • ((f : LaurentSeries L) * x) rw [IntermediateField.coe_smul, Algebra.smul_def, algebraMap_laurentSeries_eq_single, ← C_apply, mul_assoc, C_mul_eq_smul]⟩ end Shortcuts section QExpansion variable {L : Type*} [Field L] (F : IntermediateField L (LaurentSeries L)) def qEulerOn : Derivation L F (LaurentSeries L) := (qEuler L).compAlgebraMap F @[simp] theorem qEulerOn_apply (x : F) : qEulerOn F x = qEuler L (x : LaurentSeries L) := rfl def diffQExp : Ω[F⁄L] →ₗ[F] LaurentSeries L := (qEulerOn F).liftKaehlerDifferential @[simp] theorem diffQExp_D (x : F) : diffQExp F (D L F x) = qEuler L (x : LaurentSeries L) := (qEulerOn F).liftKaehlerDifferential_comp_D x theorem diffQExp_smul_D (f x : F) : diffQExp F (f • D L F x) = (f : LaurentSeries L) * qEuler L (x : LaurentSeries L) := by rw [map_smul, diffQExp_D] rfl end QExpansion section Hecke variable (L : Type*) [Field L] [Algebra ℚ L] (N ℓ : ℕ) [NeZero N] [NeZero ℓ] def heckeDiffAlong : Ω[laurentBaseChange L (modularFunctionFieldFull N)⁄L] →ₗ[L] Ω[laurentBaseChange L (modularFunctionFieldFull N)⁄L] := Differential.correspondence (heckeBetaBar L N ℓ) (heckeAlphaBar L N ℓ) theorem heckeDiffAlong_apply (ω : Ω[laurentBaseChange L (modularFunctionFieldFull N)⁄L]) : heckeDiffAlong L N ℓ ω = Differential.traceAlong (heckeBetaBar L N ℓ) (Differential.pullbackAlong (heckeAlphaBar L N ℓ) ω) := rfl end Hecke section Bar variable (N : ℕ) variable [NeZero N] def heckeDiffBar (ℓ : Nat.Primes) : Module.End (AlgebraicClosure ℚ) Ω[modularFunctionFieldBar N⁄AlgebraicClosure ℚ] := haveI : NeZero (ℓ : ℕ) := ⟨ℓ.2.ne_zero⟩ heckeDiffAlong (AlgebraicClosure ℚ) N ℓ theorem heckeDiffBar_eq (ℓ : Nat.Primes) : heckeDiffBar N ℓ = (haveI : NeZero (ℓ : ℕ) := ⟨ℓ.2.ne_zero⟩; Differential.correspondence (heckeBetaBar (AlgebraicClosure ℚ) N ℓ) (heckeAlphaBar (AlgebraicClosure ℚ) N ℓ)) := rfl abbrev diffQExpBar : Ω[modularFunctionFieldBar N⁄AlgebraicClosure ℚ] →ₗ[modularFunctionFieldBar N] LaurentSeries (AlgebraicClosure ℚ) := diffQExp (modularFunctionFieldBar N) abbrev regularDifferentialsBar : Submodule (AlgebraicClosure ℚ) Ω[modularFunctionFieldBar N⁄AlgebraicClosure ℚ] := regularDifferentials (AlgebraicClosure ℚ) (modularFunctionFieldBar N) end Bar end ModularCurve end
Statements phrased using this module (63)
- q-expansion of the Hecke correspondence on differentials, ℓ∤ N
ModularCurve.coeff_diffQExpBar_heckeDiffBar_of_not_dvd151 below · depth 10 - q-expansion dictionary: ℂ⊗Ω_{reg}≅ S₂(Γ₀(N))
ModularCurve.exists_linearEquiv_tensor_regularDifferentialsBar_cuspForm643 below · depth 10 - Hecke polynomials killing regular differentials kill J₀(N)
ModularCurve.freeAlgebra_lift_heckeOperatorBar_eq_zero_of_lift_heckeDiffBar_eq_zero798 below · depth 10 - q-expansion of the Hecke differential operator for ℓ ∣ N
ModularCurve.coeff_diffQExpBar_heckeDiffBar_of_dvd148 below · depth 11 - Rational weight-2 cusp forms as Kähler differentials
ModularCurve.exists_coeffMap_diffQExpBar_eq_qExpansion108 below · depth 11 - Weight-2 cusp form q-expansion forces a regular differential
ModularCurve.mem_regularDifferentialsBar_of_coeffMap_diffQExpBar_eq_qExpansion266 below · depth 11 - Injectivity of the q-expansion map on differentials
ModularCurve.diffQExpBar_injective_of_neZero145 below · depth 13 - Regular differentials on X₀(N)_ℚ̄ are weight-two cusp forms
ModularCurve.exists_cuspForm_coeffMap_diffQExpBar_eq_qExpansion_of_mem_regularDifferentialsBar450 below · depth 13 - Integrality bounds from regularity of x djmath̄ on X₀(N)_ℚ̄
ModularCurve.isIntegral_and_isIntegral_of_smul_D_mem_regularDifferentialsBar427 below · depth 14 - Diamond correspondence on differentials computes ⟨ d⟩ on weight-2 forms
ModularCurve.coeffMap_diffQExp_correspondence_diamondAutBar_eq_qExpansion_diamondLinOne121 below · depth 19 - q-expansion of the Hecke correspondence T_ℓ on differentials
ModularCurve.coeff_diffQExp_correspondence_heckeBetaOneBar_heckeAlphaOneBar_of_not_dvd223 below · depth 19 - Regular differentials on X₁(M) over ℚ̄ give S₂(Γ₁(M))
ModularCurve.exists_linearEquiv_tensor_regularDifferentials_x1FunctionFieldBar_cuspForm403 below · depth 19 - Injectivity of the q-expansion of differentials on ℚ̄·ℚ(X₁(M))
ModularCurve.diffQExp_x1FunctionFieldBar_injective5 below · depth 20 - Weight-2 cusp forms on Γ₁(M) as q-expansions of differentials
ModularCurve.exists_coeffMap_diffQExp_x1FunctionFieldBar_eq_qExpansion136 below · depth 20 - Regular differentials of ℚ̄· F(Γ₁(M)) are weight-two cusp forms
ModularCurve.exists_cuspForm_coeffMap_diffQExp_x1FunctionFieldBar_eq_qExpansion_of_mem_regularDifferentials243 below · depth 20 - Differentials with cusp-form q-expansion are regular
ModularCurve.mem_regularDifferentials_x1FunctionFieldBar_of_coeffMap_diffQExp_eq_qExpansion237 below · depth 20 - Integrality of x⁶j⁴(j-1728)³ when x dj is regular
ModularCurve.isIntegral_and_isIntegral_of_smul_D_mem_regularDifferentials_qExpFunctionFieldC157 below · depth 21 - q-expansion differential along an inclusion agrees with `diffQExp`
ModularCurve.qExpansionDiffAlong_val_eq_diffQExp75 below · depth 21 - U_ℓ on q-expansions of differentials of X₁(M)
ModularCurve.coeff_diffQExp_correspondence_heckeBetaOneBar_heckeAlphaOneBar_of_dvd219 below · depth 22 - Reduction of a regular differential x dj on X₀(N) modulo p∤ N
ModularCurve.smul_D_jqModC_mem_regularDifferentials_residueField_of_smul_D_mem_regularDifferentialsBar774 below · depth 23 - Global 1-forms of the ℤ₍ₚ₎-model versus p-integral cusp forms
ModularCurve.exists_linearEquiv_kaehlerH0_baseChange_intLattice_of_ratCurveModel_of_cuspSection_compat_of_neZero872 below · depth 24 - Chart rings of a mathbf Z₍ₚ₎-model embed into ̄ F_N
ModularCurve.exists_ringHom_cover_modularFunctionFieldBar_of_ratCurveModel_of_neZero2 below · depth 24 - Hecke adjunction for the integral Serre pairing, sectional charts
ModularCurve.serrePairingInt_deformationClass_heckeGen_eq_of_isCompletionAlong_of_res_eq_heckeDiffBar365 below · depth 24 - Norm–pull-back endomorphism acts by trace on Čech H¹
AlgebraicGeometry.RelPicard.IsDeformationClassMap.exists_cechH1ToH1_germ_eq_traceAlong_of_classifies_normModule_pullback_of_mono129 below · depth 25 - Hecke correspondence on differentials matches the Hecke operator on q-expansions
ModularCurve.coeffMap_diffQExpBar_heckeDiffBar_eq_qExpansion_latticeRestrictHom_heckeProj_heckeGen162 below · depth 25 - Degeneracy roof at the generic fibre: function-field Hecke correspondence
ModularCurve.exists_functionField_degeneracyRoof_kaehlerToFunctionField_eq_correspondence_of_res_eq_heckeDiffBar208 below · depth 25 - Integral weight-two cusp forms as relative differentials on the model
ModularCurve.exists_kaehlerH0_coeffMap_diffQExpBar_eq_qExpansion_of_mem_intLattice_of_ratCurveModel_of_cuspSection_compat_of_neZero456 below · depth 25 - Integrality of q-expansions of global 1-forms on a ℤ₍ₚ₎-model
ModularCurve.exists_powerSeries_diffQExpBar_eq_ofPowerSeries_map_of_kaehlerH0_of_ratCurveModel_of_cuspSection_compat_of_neZero349 below · depth 25 - Global differentials injected into Ω_̄ F_N/ℚ̄
ModularCurve.kaehlerH0_res_injective_of_injective_chartMap_of_neZero1 below · depth 25 - Global 1-forms restrict to regular differentials on ℚ̄(X₀(N))
ModularCurve.res_mem_regularDifferentialsBar_of_chartMap_of_neZero170 below · depth 25 - Tangent action of a norm-pull-back endomorphism over a field
AlgebraicGeometry.RelPicard.IsDeformationClassMap.exists_cechH1ToH1_germ_eq_traceAlong_of_classifies_normModule_pullback_of_field74 below · depth 26 - Moduli description of an endomorphism transported to the base change
AlgebraicGeometry.RelPicard.RepresentsRelSubPic.nonempty_poincare_pullbackAlong_iso_rigidify_normModule_baseChange58 below · depth 26 - p-saturation of global differentials via q-expansions
ModularCurve.exists_eq_smul_of_diffQExpBar_eq_ofPowerSeries_smul_of_kaehlerH0_of_ratCurveModel_of_cuspSection_compat_of_neZero366 below · depth 26 - Degeneracy roof at q over the generic fibre
ModularCurve.exists_functionField_degeneracyRoof_lift_of_ratCurveModel4 below · depth 26 - Generic restriction of a global 1-form factors through the cusp stalk
ModularCurve.exists_kaehlerDifferential_stalk_and_ringHom_res_eq_mapOfRingHom_cuspSection_of_ratCurveModel_compat_of_neZero2 below · depth 26 - p-power multiple of an integral weight-2 cusp form as a differential
ModularCurve.exists_pow_smul_kaehlerH0_coeffMap_diffQExpBar_eq_qExpansion_of_mem_intLattice_of_ratCurveModel_of_cuspSection_compat_of_neZero322 below · depth 26 - Integral q-expansions of germs at the cusp of a ℤ₍ₚ₎-model
ModularCurve.exists_powerSeries_map_eq_ffEquiv_symm_stalkMap_stalkSpecializes_cuspSection_of_ratCurveModel_compat_of_neZero346 below · depth 26 - Function field of the geometric generic fibre is ℚ̄F_N
ModularCurve.exists_ringEquiv_functionField_pullback_comp_baseToFunctionField_eq_and_germToFunctionField_eq_chartMap_of_neZero2 below · depth 26 - Residue package for the two legs of the T_q degeneracy roof
ModularCurve.functionField_residuePackage_degeneracyRoof_of_finiteAlong85 below · depth 26 - Geometric generic fibre of a ℤ₍ₚ₎-model of X₀(N) is integral
ModularCurve.isIntegral_pullback_and_nonempty_of_chartMap_of_neZero7 below · depth 26 - Generic-fibre degeneracy roof for Hecke action on differentials
ModularCurve.kaehlerToFunctionField_eq_correspondence_degeneracyRoof_of_res_eq_heckeDiffBar161 below · depth 26 - Integral q-parameter at the cusp of a ℤ₍ₚ₎-model
ModularCurve.exists_algHom_retraction_param_stalk_cuspSection_ffEquiv_symm_eq_ofPowerSeries_isUnit_coeff_one_of_ratCurveModel_compat_of_neZero342 below · depth 27 - Germs at the cusp with p-divisible q-expansion are p-divisible
ModularCurve.exists_eq_germ_mul_of_ffEquiv_symm_stalkMap_stalkSpecializes_eq_ofPowerSeries_smul_cuspSection_of_ratCurveModel_compat_of_neZero3 below · depth 27 - Base change to ℚ̄ of the Hecke correspondence on differentials
ModularCurve.map_differentialCorrespondence_eq_heckeDiffBar_map1 below · depth 27 - Regular differentials spanned by restrictions of global 1-forms
ModularCurve.mem_span_range_res_of_mem_regularDifferentialsBar_of_chartMap_of_neZero172 below · depth 27 - The two q-expansion maps on differentials agree
ModularCurve.qExpansionDiffAlong_val_eq_diffQExpBar75 below · depth 27 - Injectivity of the q-expansion map on differentials
ModularCurve.diffQExp_qExpFunctionFieldC_injective51 below · depth 28 - Invertibility of j at generic-fibre points over the cusp
ModularCurve.exists_isUnit_stalk_ffEquiv_symm_stalkMap_genericPoint_eq_jq_of_specializes_cuspSection_of_ratCurveModel_compat_of_neZero288 below · depth 28 - Cusp parameter has q-expansion 1/j up to a unit
ModularCurve.exists_isUnit_stalk_ffEquiv_symm_stalkMap_mul_stalkSpecializes_eq_jq_inv_cuspSection_of_ratCurveModel_compat_of_neZero8 below · depth 28 - Modular invariant j as a unit along the special fibre
ModularCurve.exists_notMem_span_germ_and_ffEquiv_symm_stalkMap_stalkSpecializes_eq_jq_mul_cuspSection_of_ratCurveModel_compat_of_neZero323 below · depth 28 - Uniqueness of the place over the cusp ∞ after base change
ModularCurve.eq_cuspInftyBar_of_comap_toSubring_eq_cuspInftyFull0 below · depth 29 - Vertical order of j at the cusp section's special point
ModularCurve.exists_int_notMem_span_germ_and_ffEquiv_symm_stalkMap_stalkSpecializes_eq_jq_mul_zpow_mul_cuspSection_of_ratCurveModel_compat_of_neZero4 below · depth 29 - Valuation-ring lift of a ℚ̄-point along a specialisation
ModularCurve.exists_liesOverPrime_schemeHomOver_comp_eq_base_closedPoint_eq_of_specializes0 below · depth 29 - Base change injectivity for differentials of q-expansion function fields
ModularCurve.exists_linearMap_injective_tensorProduct_kaehler_qExpFunctionFieldC_apply_tmul52 below · depth 29 - No pole of j along the special fibre at the cusp
ModularCurve.false_of_ffEquiv_symm_stalkMap_stalkSpecializes_eq_jq_mul_pow_mul_cuspSection_of_ratCurveModel_compat_of_neZero309 below · depth 29 - No zero of j along the special fibre
ModularCurve.false_of_pow_mul_ffEquiv_symm_stalkMap_stalkSpecializes_eq_jq_mul_cuspSection_of_ratCurveModel_compat_of_neZero319 below · depth 29 - q-expansion of Kähler differentials commutes with coefficient extension
ModularCurve.diffQExp_map_eq_coeffMap_diffQExp0 below · depth 30 - Finitely many zeros and poles of ̄ j on the special fibre
ModularCurve.false_of_infinite_setOf_ord_pointEquivPlace_jqModC_ne_zero_cuspSection_of_ratCurveModel_compat_of_neZero113 below · depth 30 - An open set containing infinitely many κ-points of the special fibre
ModularCurve.infinite_setOf_base_closedPoint_mem_of_fromSpecStalk_span_germ_mem_cuspSection_of_ratCurveModel_compat_of_neZero47 below · depth 30 - Pole of ̄ j at the reduction of an A-point
ModularCurve.ord_apply_pointEquivPlace_jqModC_neg_of_stalkClosedPointTo_mem_maximalIdeal_of_ffEquiv_symm_stalkMap_eq_jq_inv_cuspSection_of_ratCurveModel_compat_of_neZero277 below · depth 30 - An A-point with j∈mathfrak m_A reduces to a zero of ̄ j
ModularCurve.ord_apply_pointEquivPlace_jqModC_pos_of_stalkClosedPointTo_mem_maximalIdeal_of_ffEquiv_symm_stalkMap_eq_jq_cuspSection_of_ratCurveModel_compat_of_neZero287 below · depth 30 - Integral q-expansion differentials are g dj with g in W₀
ModularCurve.XHDRLevel.exists_mem_gauss_and_eq_smul_D_jAt_of_diffQExp_eq_ofPowerSeries122 below · depth 31 - Geometric function field identification is base change of the rational one
ModularCurve.coe_ffEquiv_symm_stalkMap_eq_coeffEmb_ffEquiv_symm_of_galoisCompat_of_placeCompat44 below · depth 31