Definitions/Def_ModularCurve_HeckeOperator.lean
Hecke correspondences on base-changed modular function fields
Fix a field L of characteristic zero (L a field with a \mathbb{Q}-algebra structure), a level N and an index \ell, both nonzero. All objects live on the base change laurentBaseChange L (modularFunctionFieldFull N), the intermediate field of L((q)) generated over L by the coefficientwise image of the project's full modular function field of level N (imported from ModularCurve_ArithmeticGalois); at L=\overline{\mathbb{Q}} this is modularFunctionFieldBar N, whose Pic0 is JZero N. Two L-algebra maps from level N to level N\ell are defined: heckeAlphaBar, which is literally IntermediateField.inclusion applied to the monotonicity of laurentBaseChange along the degeneracy inclusion for N \mid N\ell (so it is the identity on underlying Laurent series, coe_heckeAlphaBar), and heckeBetaBar, the substitution q \mapsto q^{\ell} given by the project's qExpand L ℓ on L((q)) (coe_heckeBetaBar), built from the ring homomorphism heckeBetaBarRingHom and shown to fix L; that q \mapsto q^{\ell} maps the level-N field into the level-N\ell field is supplied by the private helpers coeffMap_qExpand', coeffEmb_qExpand', laurentBaseChange_mono' and qExpand_mem_laurentBaseChange'. Two predicates record integrality of these maps as ring homomorphisms: HeckeAlphaBarIntegral, HeckeBetaBarIntegral. Given these, heckeDivBar is Divisor.correspondence (heckeBetaBar …) (heckeAlphaBar …), i.e. push-forward along \alpha of pull-back along \beta, an additive endomorphism of the divisor group of the level-N field over L; heckePic0Bar is the corresponding endomorphism of Pic0, taking as further explicit binders the fundamental identity along \beta and the finiteness and norm formula along \alpha from AlgebraicCurve_Correspondence, together with an instance binder HasPrincipalDivisors L at level N\ell. heckeDivBarTranspose and heckePic0BarTranspose are the same constructions with the roles of \alpha and \beta exchanged. The module only constructs these maps: no primality of \ell is assumed, \ell \mid N and \ell = 1 are permitted, nothing is proved about the operators, and neither orientation is identified with the classical action a_n \mapsto a_{n\ell} + \ell a_{n/\ell} on q-expansions. Two examples check that at L = \overline{\mathbb{Q}} the maps land on modularFunctionFieldBar and give an endomorphism of JZero N.
Relation to Mathlib
Mathlib has no Hecke correspondence on Jacobians of modular curves; the function-field carriers (modularFunctionFieldFull, laurentBaseChange, qExpand), the divisor and Pic0 formalism and Divisor.correspondence/Pic0.correspondence are the project's own, imported from its definition modules. Only IntermediateField.inclusion and the RingHom.IsIntegral predicate used in the integrality definitions come from Mathlib.
Where it is used
These endomorphisms provide the Hecke action on the Jacobian J_0(N) in the form used later for the Eichler–Shimura relation and for the Galois representations attached to modular forms, which is what the Frey curve route to Fermat's Last Theorem requires.
References
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Publications of the Mathematical Society of Japan 11, Princeton University Press, 1971
- F. Diamond, J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 192 lines
- 17 declarations
- used in the statements of 68 theorems and imported by 102 proofs
- imports 2 definition modules
Source file: Definitions/Def_ModularCurve_HeckeOperator.lean
Declarations
- theorem
ModularCurve.coeffMap_qExpand' - theorem
ModularCurve.coeffEmb_qExpand' - theorem
ModularCurve.laurentBaseChange_mono' - theorem
ModularCurve.qExpand_mem_laurentBaseChange' - def
ModularCurve.heckeAlphaBar - theorem
ModularCurve.coe_heckeAlphaBar - def
ModularCurve.heckeBetaBarRingHom - theorem
ModularCurve.coe_heckeBetaBarRingHom - def
ModularCurve.heckeBetaBar - theorem
ModularCurve.heckeAlphaBar_eq_inclusion - theorem
ModularCurve.coe_heckeBetaBar - def
ModularCurve.HeckeAlphaBarIntegral - def
ModularCurve.HeckeBetaBarIntegral - def
ModularCurve.heckeDivBar - def
ModularCurve.heckePic0Bar - def
ModularCurve.heckeDivBarTranspose - def
ModularCurve.heckePic0BarTranspose
Source
import Definitions.Def_AlgebraicCurve_Correspondence import Definitions.Def_ModularCurve_ArithmeticGalois 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 (N ℓ : ℕ) [NeZero N] [NeZero ℓ] section DegeneracyMapsBar variable (L) in def heckeAlphaBar : laurentBaseChange L (modularFunctionFieldFull N) →ₐ[L] laurentBaseChange L (modularFunctionFieldFull (N * ℓ)) := IntermediateField.inclusion (laurentBaseChange_mono' L (full_degeneracy_le (dvd_mul_right N ℓ))) @[simp] theorem coe_heckeAlphaBar (x : laurentBaseChange L (modularFunctionFieldFull N)) : (heckeAlphaBar L N ℓ x : LaurentSeries L) = (x : LaurentSeries L) := IntermediateField.coe_inclusion _ x variable (L) in def heckeBetaBarRingHom : laurentBaseChange L (modularFunctionFieldFull N) →+* laurentBaseChange L (modularFunctionFieldFull (N * ℓ)) where toFun x := ⟨qExpand L ℓ (x : LaurentSeries L), qExpand_mem_laurentBaseChange' ℓ (fun y hy => full_degeneracy_map_le (N := N) ℓ ⟨y, hy, rfl⟩) 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 ℓ) _ _) omit [NeZero N] in @[simp] theorem coe_heckeBetaBarRingHom (x : laurentBaseChange L (modularFunctionFieldFull N)) : (heckeBetaBarRingHom L N ℓ x : LaurentSeries L) = qExpand L ℓ (x : LaurentSeries L) := rfl variable (L) in def heckeBetaBar : laurentBaseChange L (modularFunctionFieldFull N) →ₐ[L] laurentBaseChange L (modularFunctionFieldFull (N * ℓ)) := { heckeBetaBarRingHom L N ℓ 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] } theorem heckeAlphaBar_eq_inclusion (h : laurentBaseChange L (modularFunctionFieldFull N) ≤ laurentBaseChange L (modularFunctionFieldFull (N * ℓ))) : heckeAlphaBar L N ℓ = IntermediateField.inclusion h := rfl omit [NeZero N] in @[simp] theorem coe_heckeBetaBar (x : laurentBaseChange L (modularFunctionFieldFull N)) : (heckeBetaBar L N ℓ x : LaurentSeries L) = qExpand L ℓ (x : LaurentSeries L) := rfl end DegeneracyMapsBar section HeckePic0Bar variable (L) in def HeckeAlphaBarIntegral : Prop := (heckeAlphaBar L N ℓ).toRingHom.IsIntegral variable (L) in def HeckeBetaBarIntegral : Prop := (heckeBetaBar L N ℓ).toRingHom.IsIntegral variable {N ℓ} variable (hα : HeckeAlphaBarIntegral L N ℓ) (hβ : HeckeBetaBarIntegral L N ℓ) variable [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull (N * ℓ)))] def heckeDivBar : Divisor L (laurentBaseChange L (modularFunctionFieldFull N)) →+ Divisor L (laurentBaseChange L (modularFunctionFieldFull N)) := Divisor.correspondence (heckeBetaBar L N ℓ) (heckeAlphaBar L N ℓ) hβ hα def heckePic0Bar (hFI : FundamentalIdentityAlong L (heckeBetaBar L N ℓ) hβ) (hfin : FiniteAlong L (heckeAlphaBar L N ℓ)) (hN : NormFormulaAlong L (heckeAlphaBar L N ℓ) hfin) : Pic0 L (laurentBaseChange L (modularFunctionFieldFull N)) →+ Pic0 L (laurentBaseChange L (modularFunctionFieldFull N)) := Pic0.correspondence (heckeBetaBar L N ℓ) (heckeAlphaBar L N ℓ) hβ hα hFI hfin hN end HeckePic0Bar section Transpose variable {N ℓ} variable (hα : HeckeAlphaBarIntegral L N ℓ) (hβ : HeckeBetaBarIntegral L N ℓ) variable [HasPrincipalDivisors L (laurentBaseChange L (modularFunctionFieldFull (N * ℓ)))] def heckeDivBarTranspose : Divisor L (laurentBaseChange L (modularFunctionFieldFull N)) →+ Divisor L (laurentBaseChange L (modularFunctionFieldFull N)) := Divisor.correspondence (heckeAlphaBar L N ℓ) (heckeBetaBar L N ℓ) hα hβ def heckePic0BarTranspose (hFI : FundamentalIdentityAlong L (heckeAlphaBar L N ℓ) hα) (hfin : FiniteAlong L (heckeBetaBar L N ℓ)) (hN : NormFormulaAlong L (heckeBetaBar L N ℓ) hfin) : Pic0 L (laurentBaseChange L (modularFunctionFieldFull N)) →+ Pic0 L (laurentBaseChange L (modularFunctionFieldFull N)) := Pic0.correspondence (heckeAlphaBar L N ℓ) (heckeBetaBar L N ℓ) hα hβ hFI hfin hN end Transpose section ModularInstance example : (modularFunctionFieldBar N) →ₐ[AlgebraicClosure ℚ] (modularFunctionFieldBar (N * ℓ)) := heckeAlphaBar (AlgebraicClosure ℚ) N ℓ example (hα : HeckeAlphaBarIntegral (AlgebraicClosure ℚ) N ℓ) (hβ : HeckeBetaBarIntegral (AlgebraicClosure ℚ) N ℓ) [HasPrincipalDivisors (AlgebraicClosure ℚ) (modularFunctionFieldBar (N * ℓ))] (hFI : FundamentalIdentityAlong (AlgebraicClosure ℚ) (heckeBetaBar (AlgebraicClosure ℚ) N ℓ) hβ) (hfin : FiniteAlong (AlgebraicClosure ℚ) (heckeAlphaBar (AlgebraicClosure ℚ) N ℓ)) (hN : NormFormulaAlong (AlgebraicClosure ℚ) (heckeAlphaBar (AlgebraicClosure ℚ) N ℓ) hfin) : JZero N →+ JZero N := heckePic0Bar hα hβ hFI hfin hN end ModularInstance end ModularCurve end
Statements phrased using this module (68)
- Integrality of the degeneracy embedding ᾱ for prime ℓ
ModularCurve.heckeAlphaBarIntegral_of_prime47 below · depth 8 - Finiteness of the degeneracy inclusion at prime level ℓ
ModularCurve.finiteAlong_heckeAlphaBar_of_prime46 below · depth 9 - Finiteness along β̄ for prime level increase ℓ
ModularCurve.finiteAlong_heckeBetaBar_of_prime45 below · depth 9 - Integrality of the α-leg from a modular polynomial
ModularCurve.heckeAlphaBarIntegral_of_modularPolynomialData8 below · depth 9 - Integrality of the degeneracy embedding β for prime ℓ
ModularCurve.heckeBetaBarIntegral_of_prime46 below · depth 9 - Hecke correspondence at ℓ multiplies the cuspidal divisor by 1+ℓ
ModularCurve.heckeDivBar_cuspidalDivisor_of_prime180 below · depth 9 - Uₚ fixes the cuspidal divisor at prime level
ModularCurve.heckeDivBar_cuspidalDivisor_self_of_prime151 below · depth 9 - Hecke correspondence scales the cuspidal class by 1+ℓ
ModularCurve.heckePic0Bar_cuspidalClass0 below · depth 9 - Uₚ fixes the cuspidal class of J₀(p)
ModularCurve.heckePic0Bar_cuspidalClass_self1 below · depth 9 - Galois equivariance of the Hecke correspondence on Pic⁰
ModularCurve.heckePic0Bar_smul13 below · depth 9 - Arithmetic Galois action commutes with the degeneracy inclusion α
ModularCurve.arithmeticGalois_smul_heckeAlphaBar0 below · depth 10 - Arithmetic Galois action commutes with the β degeneracy embedding
ModularCurve.arithmeticGalois_smul_heckeBetaBar1 below · depth 10 - Finiteness along the degeneracy inclusion at prime level
ModularCurve.finiteAlong_heckeAlphaBar_of_modularPolynomialData7 below · depth 10 - Finiteness along the β-degeneracy map q↦ q^ℓ
ModularCurve.finiteAlong_heckeBetaBar_of_modularPolynomialData6 below · depth 10 - Integrality of the β degeneracy map from a symmetric Φ_ℓ
ModularCurve.heckeBetaBarIntegral_of_modularPolynomialData7 below · depth 10 - Base change commutes with the degeneracy map q↦ q^ℓ
ModularCurve.heckeBetaBar_coeffEmb2 below · depth 10 - Hecke correspondence acts on the cuspidal divisor by 1+ℓ
ModularCurve.heckeDivBar_cuspidalDivisor2 below · depth 10 - Uₚ fixes the cuspidal divisor from summed fibre data
ModularCurve.heckeDivBar_cuspidalDivisor_self_of_sum2 below · depth 10 - Hecke relation on the cuspidal divisor descends to the cuspidal class
ModularCurve.heckePic0Bar_cuspidalClass_of_heckeDivBar0 below · depth 10 - Kronecker congruence at level N, norm form
ModularCurve.kroneckerCongruence_norm_heckeBetaBar151 below · depth 10 - Hecke divisor correspondence on a single point of X₀(N)
ModularCurve.ComplexPlaceDictionary.heckeDivBar_single_pt192 below · depth 11 - Atkin–Lehner automorphism exchanges the two degeneracy legs
ModularCurve.geomAut_atkinLehner_comp_legs1 below · depth 11 - Fricke conjugation swaps the two degeneracy maps at level p²
ModularCurve.heckeAlphaBar_frickeInvolutionBar_sq148 below · depth 11 - Inertia degrees are one over an algebraically closed constant field
ModularCurve.inertiaDegAlong_eq_one_laurentBaseChange93 below · depth 11 - Hecke divisor of a single place, transported along sp
ModularCurve.mapDomain_heckeDivBar_single1 below · depth 11 - Two-component exhaustion at an ℓ-adic place of X₀(Nℓ)
ModularCurve.twoComponentExhaustion_valuation_mul_lt_one_of_ord_inv_sub_pos218 below · depth 11 - Degeneracy inclusion restricts the place of τ to the place of τ
ModularCurve.ComplexPlaceDictionary.restrictAlong_pt_heckeAlphaBar16 below · depth 12 - Degeneracy map q↦ q^ℓ sends the place of τ to that of ℓτ
ModularCurve.ComplexPlaceDictionary.restrictAlong_pt_heckeBetaBar16 below · depth 12 - Atkin–Lehner relation U_q D + w_q· D = β^*α_*D on divisors
ModularCurve.heckeDivBar_self_add_atkinLehner_smul186 below · depth 12 - Hecke specialisation extends from places to all divisors
ModularCurve.mapDomain_heckeDivBar_eq_of_forall_single0 below · depth 12 - Specialisation of T_ℓ on divisors: Eichler–Shimura relation
ModularCurve.mapDomain_heckeDivBar_single_eq_heckeFibreGeomLevel170 below · depth 12 - Degeneracy restriction commutes with the Hecke correspondence at ℓ≠ q
ModularCurve.mapDomain_restrictAlong_degeneracy_heckeDivBar_comm_of_ne204 below · depth 12 - Ramification indices along β sum to ℓ+1
ModularCurve.sum_ramificationIndexAlong_heckeBetaBar_of_deg_eq_one170 below · depth 12 - Degeneracy map on ℚ̄-points restricts places along ᾱ
ModularCurve.DRModelPackageLevel.pointEquivPlace_eq_restrictAlong_heckeAlphaBar_of_comp_pi96 below · depth 14 - Second degeneracy morphism: places restrict along `heckeBetaBar`
ModularCurve.DRModelPackageLevel.pointEquivPlace_eq_restrictAlong_heckeBetaBar_of_comp_piw131 below · depth 14 - Roof prolongation at level Nℓ over a level-N reduction datum
ModularCurve.exists_charLDegeneracyRoof_regularProlongation_heckeCompat_of_ne_of_residue_jq_jqN768 below · depth 14 - Fricke automorphism intertwines the Hecke correspondence with its transpose
ModularCurve.heckePic0BarTranspose_fricke_smul80 below · depth 14 - Coupled Kronecker dichotomy at the two degeneracy restrictions
ModularCurve.kroneckerCentreDichotomy63 below · depth 14 - Coordinatewise Kronecker dichotomy at the two degeneracy places
ModularCurve.kroneckerCoordinatewiseDichotomy67 below · depth 14 - Modular equation as minimal polynomial of α(j) over β
ModularCurve.minpoly_heckeAlphaBar_along_heckeBetaBar148 below · depth 14 - Degeneracy morphism on generic points is Spec of α
ModularCurve.DRModelPackageLevel.fromSpecStalk_genericPoint_comp_eq_spec_map_heckeAlphaBar2 below · depth 15 - Second degeneracy map on generic points is Specβ
ModularCurve.DRModelPackageLevel.fromSpecStalk_genericPoint_comp_eq_spec_map_heckeBetaBar77 below · depth 15 - Places restrict along chart-pinned morphisms of Igusa schemes
ModularCurve.IgusaScheme.pointEquivPlace_eq_restrictAlong_of_chart_pin4 below · depth 15 - Base change of an Atkin–Lehner automorphism exchanges the degeneracy maps
ModularCurve.exists_algEquiv_comp_heckeAlphaBar_eq_heckeBetaBar2 below · depth 15 - Fricke involution carries the level-one inclusion to q-rescaling
ModularCurve.frickeInvolutionBar_comp_heckeAlphaBar_one79 below · depth 15 - Norm transform endomorphism realises T_q on ℚ̄-points
ModularCurve.heckeOperatorBar_points_eq_comp_of_transform359 below · depth 15 - Reduction commutes with the divisorial Hecke correspondence
ModularCurve.mapDomain_heckeDivBar_single_eq_heckeDivFibre_of_regularProlongation238 below · depth 15 - Restriction along β of the Fricke translate equals restriction along α
ModularCurve.restrictAlong_heckeBetaBar_frickeInvolutionBar_smul81 below · depth 15 - Atkin–Lehner involution restricts places along the geometric automorphism
ModularCurve.DRModelPackageLevel.pointEquivPlace_eq_restrictAlong_geomAut_of_comp_w4 below · depth 16 - Reduction of places commutes with both degeneracy legs
ModularCurve.PlaceSpecialization.exists_spRoof_pullbackAlong_restrictAlong_compat_of_exists_placeMap_fullC_v2236 below · depth 16 - The β-fibre over a cusp: ramification 1 and ℓ
ModularCurve.exists_pair_fiberAlong_heckeBetaBar_of_ord_neg164 below · depth 16 - Hecke operator T_q on J₀(p)(ℚ̄) realised by φ_η
ModularCurve.heckeOperatorBar_points_eq_comp_of_transform_rat359 below · depth 16 - Fricke translation exchanges the two degeneracy restrictions
ModularCurve.restrictAlong_heckeAlphaBar_frickeInvolutionBar_smul81 below · depth 16 - Roof reduction commutes place by place with both degeneracy maps
ModularCurve.exists_charLDegeneracyRoof_regularProlongation_heckeCompat_restrictAlong_eq_of_ne874 below · depth 17 - Fricke involution sends the second degeneracy leg to the first
ModularCurve.frickeInvolutionBar_comp_heckeBetaBar_one79 below · depth 17 - Uniqueness of the regular prolongation reducing j and j_M
ModularCurve.regularProlongation_integers_eq_and_coe_residue_eq_of_residue_jq_jqN176 below · depth 17 - Restriction of a slot place along ᾱ from level Nℓ
ModularCurve.slot_restrictAlong_heckeAlphaBar85 below · depth 17 - Slot data under restriction along `heckeBetaBar`
ModularCurve.slot_restrictAlong_heckeBetaBar85 below · depth 17 - Strict first-kind places reduce onto the Frobenius graph
ModularCurve.PlaceSpecialization.exists_ord_jFun_sub_pos_and_red_eq_pow_of_isStrictFst59 below · depth 20 - Hecke endomorphism T_q of the relative Jacobian, with moduli description
ModularCurve.exists_heckeEndomorphism_relJacobian_moduli_of_ratCurveModel591 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 - Degeneracy roof at the generic fibre: function-field Hecke correspondence
ModularCurve.exists_functionField_degeneracyRoof_kaehlerToFunctionField_eq_correspondence_of_res_eq_heckeDiffBar208 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 - Degeneracy roof at q over the generic fibre
ModularCurve.exists_functionField_degeneracyRoof_lift_of_ratCurveModel4 below · depth 26 - Residue package for the two legs of the T_q degeneracy roof
ModularCurve.functionField_residuePackage_degeneracyRoof_of_finiteAlong85 below · depth 26 - Generic-fibre degeneracy roof for Hecke action on differentials
ModularCurve.kaehlerToFunctionField_eq_correspondence_degeneracyRoof_of_res_eq_heckeDiffBar161 below · depth 26