Definitions/Def_ModularCurve_CharLDegeneracyHecke.lean
Degeneracy Hecke operators on Pic⁰ in characteristic ℓ
Three groups of definitions. First, a total descent device for divisor correspondences: for an extension F/K of fields, DescendsToPic0 T asserts of an additive endomorphism T of the divisor group \mathrm{Div}(F/K) that it maps degree-zero divisors to degree-zero divisors and principal divisors to principal divisors; degZeroEnd is then the induced endomorphism of the degree-zero subgroup, and toPic0End T is the induced endomorphism of \mathrm{Pic}^0 when DescendsToPic0 T holds and the zero map otherwise, with the two branches recorded by rewriting lemmas. Second, for K of characteristic \ell and level N, heckePic0FibreChar is the \mathbb{Z}-linear endomorphism of \mathrm{Pic}^0 of the level-N fibre function field obtained by applying this device to the divisor-level operator heckeFibreGeomLevel attached to a ModularPolynomialData satisfying KroneckerCongruence; it is shown independent of that data, to satisfy DescendsToPic0 when K is \ell-divisible and all places have degree one, and, for K algebraically closed with the curve hypothesis, to agree with the geometric-level \mathrm{Pic}^0 operator. Given an arbitrary family T^{\mathrm{ne}} indexed by primes, heckeFamilyFibreOf takes heckePic0FibreChar at the prime \ell and T^{\mathrm{ne}}_q elsewhere; HeckeOperatorsCommuteFibreOf asserts pairwise commutation of this family, and heckeModuleFibreOf is a total HeckeAlg-module structure on \mathrm{Pic}^0 — the module induced by the commuting family when commutation holds, and otherwise the action through the constant term — whose generator normal forms and agreement with SpecialFibreHeckeModuleMatch are recorded. Third, the degeneracy legs: charLDegeneracyRoof is the subfield of k((t))-type Laurent series generated over k by the four j-type elements at levels 1, N, q, Nq; heckeAlphaC is the inclusion of the level-N fibre field, heckeBetaC is the q-power substitution on q-expansions into the roof, HeckeAlphaCIntegral/HeckeBetaCIntegral assert integrality of these legs, and heckeDivFibre is the push–pull correspondence of the two legs. HeckeDivFibreDescends and HeckeInputsFibre are the universal and existential forms of the input package (principal divisors on the roof, both integrality witnesses, descent), heckePic0Fibre is the descended operator at such a witness and zero otherwise, and heckeFamilyFibre, HeckeOperatorsCommuteFibre, heckeModuleFibre instantiate the family at these operators for q \neq \ell.
Relation to Mathlib
The Hecke algebra is Mathlib's MvPolynomial Nat.Primes ℤ and the \mathrm{Pic}^0 descent uses QuotientAddGroup.map; places, divisors, principal divisors, \mathrm{Pic}^0 of a function field, modular function fields and divisor correspondences are the project's own notions, with no Mathlib counterpart.
Where it is used
These operators supply the Hecke action on \mathrm{Pic}^0 of the characteristic-\ell fibre of X_0(N) in which the \ell-slot is the geometric Frobenius operator, so that the Eichler–Shimura congruence relation F^2 - T_\ell F + \ell = 0 holds on the special fibre. That relation is the relation field of the specialisation witness used to produce the local conditions (unramifiedness outside the level, Frobenius quadratic relation) on the Galois representations attached to modular curves in the level-lowering step.
References
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Iwanami Shoten and Princeton University Press, 1971, Ch. 7
- P. Deligne and M. Rapoport, Les schémas de modules de courbes elliptiques, in: Modular Functions of One Variable II, Lecture Notes in Mathematics 349, Springer, 1973, 143–316
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154, §1
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 370 lines
- 51 declarations
- used in the statements of 103 theorems and imported by 132 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_CharLDegeneracyHecke.lean
Declarations
- def
AlgebraicCurve.Divisor.DescendsToPic0 - def
AlgebraicCurve.Divisor.degZeroEnd - theorem
AlgebraicCurve.Divisor.coe_degZeroEnd - def
AlgebraicCurve.Divisor.toPic0End - theorem
AlgebraicCurve.Divisor.toPic0End_eq - theorem
AlgebraicCurve.Divisor.toPic0End_mk - theorem
AlgebraicCurve.Divisor.toPic0End_of_not - def
ModularCurve.heckePic0FibreChar - theorem
ModularCurve.heckePic0FibreChar_apply - theorem
ModularCurve.heckeFibreGeomLevel_indep - theorem
ModularCurve.heckePic0FibreChar_indep - theorem
ModularCurve.descendsToPic0_heckeFibreGeomLevel - theorem
ModularCurve.heckePic0FibreChar_eq_heckeFibreGeomLevelPic0OfIsCurveOver - def
ModularCurve.heckeFamilyFibreOf - theorem
ModularCurve.heckeFamilyFibreOf_of_eq - theorem
ModularCurve.heckeFamilyFibreOf_of_ne - def
ModularCurve.HeckeOperatorsCommuteFibreOf - def
ModularCurve.heckeCommutingFamilyFibreOf - def
ModularCurve.heckeModuleFibreOf - theorem
ModularCurve.heckeModuleFibreOf_smul_def - theorem
ModularCurve.heckeModuleFibreOf_heckeGen_smul - theorem
ModularCurve.heckeModuleFibreOf_heckeGen_smul_char - theorem
ModularCurve.heckeModuleFibreOf_heckeGen_smul_of_ne - theorem
ModularCurve.heckeModuleFibreOf_smul_of_not - theorem
ModularCurve.heckeModuleFibreOf_heckeGen_smul_of_not - theorem
ModularCurve.endHom_C' - theorem
ModularCurve.heckeModuleFibreOf_C_smul - theorem
ModularCurve.pic0SpecialFibreCommutingFamilyMatch_heckeCommutingFamilyFibreOf - theorem
ModularCurve.specialFibreHeckeModuleMatch_heckeModuleFibreOf - def
ModularCurve.charLDegeneracyRoof - theorem
ModularCurve.modularFunctionFieldC_le_charLDegeneracyRoof - theorem
ModularCurve.qExpand_image_le_charLDegeneracyRoof - def
ModularCurve.heckeAlphaC - theorem
ModularCurve.coe_heckeAlphaC - def
ModularCurve.heckeBetaCRingHom - def
ModularCurve.heckeBetaC - theorem
ModularCurve.coe_heckeBetaC - def
ModularCurve.HeckeAlphaCIntegral - def
ModularCurve.HeckeBetaCIntegral - def
ModularCurve.heckeDivFibre - def
ModularCurve.HeckeDivFibreDescends - def
ModularCurve.HeckeInputsFibre - def
ModularCurve.heckePic0Fibre - theorem
ModularCurve.heckeInputsFibre_intro - theorem
ModularCurve.heckePic0Fibre_eq - theorem
ModularCurve.heckePic0Fibre_of_not - def
ModularCurve.heckeFamilyFibre - def
ModularCurve.HeckeOperatorsCommuteFibre - def
ModularCurve.heckeModuleFibre - theorem
ModularCurve.heckeModuleFibre_heckeGen_smul - theorem
ModularCurve.specialFibreHeckeModuleMatch_heckeModuleFibre
Source
import Definitions.Def_ModularCurve_CharLSpecialFibrePic0CommutingFamilyBridge set_option autoImplicit false noncomputable section open AlgebraicCurve namespace AlgebraicCurve namespace Divisor variable {K F : Type*} [Field K] [Field F] [Algebra K F] def DescendsToPic0 (T : Divisor K F →+ Divisor K F) : Prop := (∀ D : Divisor K F, D ∈ Divisor.degZero (K := K) (F := F) → T D ∈ Divisor.degZero (K := K) (F := F)) ∧ ∀ D : Divisor K F, D.IsPrincipal → (T D).IsPrincipal def degZeroEnd (T : Divisor K F →+ Divisor K F) (h : DescendsToPic0 T) : Divisor.degZero (K := K) (F := F) →+ Divisor.degZero (K := K) (F := F) := (T.domRestrict (Divisor.degZero (K := K) (F := F))).codRestrict _ (fun D => h.1 D D.2) @[simp] theorem coe_degZeroEnd (T : Divisor K F →+ Divisor K F) (h : DescendsToPic0 T) (D : Divisor.degZero (K := K) (F := F)) : (degZeroEnd T h D : Divisor K F) = T D := rfl open Classical in def toPic0End (T : Divisor K F →+ Divisor K F) : Pic0 K F →+ Pic0 K F := if h : DescendsToPic0 T then QuotientAddGroup.map _ _ (degZeroEnd T h) (by rintro ⟨D, hD0⟩ hD simp only [AddSubgroup.mem_addSubgroupOf] at hD ⊢ exact h.2 D hD) else 0 theorem toPic0End_eq (T : Divisor K F →+ Divisor K F) (h : DescendsToPic0 T) : toPic0End T = QuotientAddGroup.map _ _ (degZeroEnd T h) (by rintro ⟨D, hD0⟩ hD simp only [AddSubgroup.mem_addSubgroupOf] at hD ⊢ exact h.2 D hD) := by rw [toPic0End, dif_pos h] theorem toPic0End_mk (T : Divisor K F →+ Divisor K F) (h : DescendsToPic0 T) (D : Divisor.degZero (K := K) (F := F)) : toPic0End T (Pic0.mk D) = Pic0.mk (degZeroEnd T h D) := by rw [toPic0End_eq T h] rfl theorem toPic0End_of_not (T : Divisor K F →+ Divisor K F) (h : ¬ DescendsToPic0 T) : toPic0End T = 0 := by rw [toPic0End, dif_neg h] end Divisor end AlgebraicCurve namespace ModularCurve section CharSlot variable (K : Type*) [Field K] (N : ℕ) [NeZero N] {ℓ : ℕ} [hℓ : Fact ℓ.Prime] [CharP K ℓ] variable (data : ModularPolynomialData ℓ) (hKr : KroneckerCongruence ℓ data) def heckePic0FibreChar : Module.End ℤ (Pic0 K (modularFunctionFieldC K N)) := (Divisor.toPic0End (heckeFibreGeomLevel K N data hKr)).toIntLinearMap theorem heckePic0FibreChar_apply (x : Pic0 K (modularFunctionFieldC K N)) : heckePic0FibreChar K N data hKr x = Divisor.toPic0End (heckeFibreGeomLevel K N data hKr) x := rfl theorem heckeFibreGeomLevel_indep (data' : ModularPolynomialData ℓ) (hKr' : KroneckerCongruence ℓ data') : heckeFibreGeomLevel K N data hKr = heckeFibreGeomLevel K N data' hKr' := rfl theorem heckePic0FibreChar_indep (data' : ModularPolynomialData ℓ) (hKr' : KroneckerCongruence ℓ data') : heckePic0FibreChar K N data hKr = heckePic0FibreChar K N data' hKr' := rfl theorem descendsToPic0_heckeFibreGeomLevel (hperf : ∀ c : K, ∃ d : K, d ^ ℓ = c) (hdeg1 : ∀ w : Place K (modularFunctionFieldC K N), w.deg = 1) : Divisor.DescendsToPic0 (heckeFibreGeomLevel K N data hKr) := ⟨fun _ hD => heckeFibreGeomLevel_mem_degZero K N data hKr hdeg1 hD, fun _ hD => isPrincipal_heckeFibreGeomLevel' K N data hKr hperf (frobOnPlacesGeomLevel_surjective K N data hKr hperf) hD⟩ theorem heckePic0FibreChar_eq_heckeFibreGeomLevelPic0OfIsCurveOver [IsAlgClosed K] [IsCurveOver K (modularFunctionFieldC K N)] : heckePic0FibreChar K N data hKr = (heckeFibreGeomLevelPic0OfIsCurveOver K N data hKr).toIntLinearMap := by have h := descendsToPic0_heckeFibreGeomLevel K N data hKr (perfect_of_isAlgClosed K) (deg_eq_one_modularFunctionFieldC K N) refine LinearMap.ext fun x => ?_ obtain ⟨D, rfl⟩ := Pic0.mk_surjective x rw [heckePic0FibreChar_apply, Divisor.toPic0End_mk _ h, AddMonoidHom.coe_toIntLinearMap, heckeFibreGeomLevelPic0OfIsCurveOver_eq, heckeFibreGeomLevelPic0_mk] exact congrArg Pic0.mk (Subtype.ext rfl) end CharSlot section Family variable (K : Type*) [Field K] (N : ℕ) [NeZero N] {ℓ : ℕ} [hℓ : Fact ℓ.Prime] [CharP K ℓ] variable (data : ModularPolynomialData ℓ) (hKr : KroneckerCongruence ℓ data) variable (Tne : Nat.Primes → Module.End ℤ (Pic0 K (modularFunctionFieldC K N))) def heckeFamilyFibreOf (q : Nat.Primes) : Module.End ℤ (Pic0 K (modularFunctionFieldC K N)) := if (q : ℕ) = ℓ then heckePic0FibreChar K N data hKr else Tne q theorem heckeFamilyFibreOf_of_eq {q : Nat.Primes} (hq : (q : ℕ) = ℓ) : heckeFamilyFibreOf K N data hKr Tne q = heckePic0FibreChar K N data hKr := if_pos hq theorem heckeFamilyFibreOf_of_ne {q : Nat.Primes} (hq : (q : ℕ) ≠ ℓ) : heckeFamilyFibreOf K N data hKr Tne q = Tne q := if_neg hq def HeckeOperatorsCommuteFibreOf : Prop := ∀ q q' : Nat.Primes, Commute (heckeFamilyFibreOf K N data hKr Tne q) (heckeFamilyFibreOf K N data hKr Tne q') variable {K N data hKr Tne} in def heckeCommutingFamilyFibreOf (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) : CommutingHeckeFamily (Pic0 K (modularFunctionFieldC K N)) := ⟨heckeFamilyFibreOf K N data hKr Tne, h⟩ open Classical in @[implicit_reducible] def heckeModuleFibreOf : Module HeckeAlg (Pic0 K (modularFunctionFieldC K N)) := if h : HeckeOperatorsCommuteFibreOf K N data hKr Tne then (heckeCommutingFamilyFibreOf h).module else Module.compHom (Pic0 K (modularFunctionFieldC K N)) (MvPolynomial.eval₂Hom (Int.castRingHom ℤ) (0 : Nat.Primes → ℤ)) variable {K N data hKr Tne} theorem heckeModuleFibreOf_smul_def (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) (t : HeckeAlg) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; t • x) = (heckeCommutingFamilyFibreOf h).endHom t x := by have e : heckeModuleFibreOf K N data hKr Tne = (heckeCommutingFamilyFibreOf h).module := dif_pos h rw [e] rfl theorem heckeModuleFibreOf_heckeGen_smul (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) (q : Nat.Primes) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; heckeGen q • x) = heckeFamilyFibreOf K N data hKr Tne q x := by rw [heckeModuleFibreOf_smul_def h, CommutingHeckeFamily.endHom_heckeGen] rfl theorem heckeModuleFibreOf_heckeGen_smul_char (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) {q : Nat.Primes} (hq : (q : ℕ) = ℓ) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; heckeGen q • x) = heckePic0FibreChar K N data hKr x := by rw [heckeModuleFibreOf_heckeGen_smul h, heckeFamilyFibreOf_of_eq K N data hKr Tne hq] theorem heckeModuleFibreOf_heckeGen_smul_of_ne (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) {q : Nat.Primes} (hq : (q : ℕ) ≠ ℓ) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; heckeGen q • x) = Tne q x := by rw [heckeModuleFibreOf_heckeGen_smul h, heckeFamilyFibreOf_of_ne K N data hKr Tne hq] theorem heckeModuleFibreOf_smul_of_not (h : ¬ HeckeOperatorsCommuteFibreOf K N data hKr Tne) (t : HeckeAlg) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; t • x) = MvPolynomial.constantCoeff t • x := by have e : heckeModuleFibreOf K N data hKr Tne = Module.compHom (Pic0 K (modularFunctionFieldC K N)) (MvPolynomial.eval₂Hom (Int.castRingHom ℤ) (0 : Nat.Primes → ℤ)) := dif_neg h rw [e] show (MvPolynomial.eval₂Hom (Int.castRingHom ℤ) (0 : Nat.Primes → ℤ) t) • x = _ rw [MvPolynomial.eval₂Hom_zero_apply, eq_intCast, Int.cast_id] theorem heckeModuleFibreOf_heckeGen_smul_of_not (h : ¬ HeckeOperatorsCommuteFibreOf K N data hKr Tne) (q : Nat.Primes) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; heckeGen q • x) = 0 := by rw [heckeModuleFibreOf_smul_of_not h, heckeGen, MvPolynomial.constantCoeff_X, zero_zsmul] private theorem endHom_C' {J' : Type*} [AddCommGroup J'] (fam : CommutingHeckeFamily J') (a : ℤ) : fam.endHom (MvPolynomial.C a) = (a : Module.End ℤ J') := by rw [← MvPolynomial.algebraMap_eq, eq_intCast, map_intCast] theorem heckeModuleFibreOf_C_smul (a : ℤ) (x : Pic0 K (modularFunctionFieldC K N)) : (letI := heckeModuleFibreOf K N data hKr Tne; (MvPolynomial.C a : HeckeAlg) • x) = a • x := by by_cases h : HeckeOperatorsCommuteFibreOf K N data hKr Tne · rw [heckeModuleFibreOf_smul_def h, endHom_C', Module.End.intCast_apply] · rw [heckeModuleFibreOf_smul_of_not h, MvPolynomial.constantCoeff_C] end Family section Match variable (K : Type*) [Field K] (N : ℕ) [NeZero N] [IsAlgClosed K] [IsCurveOver K (modularFunctionFieldC K N)] variable {ℓ : ℕ} [hℓ : Fact ℓ.Prime] [CharP K ℓ] variable (data : ModularPolynomialData ℓ) (hKr : KroneckerCongruence ℓ data) variable (Tne : Nat.Primes → Module.End ℤ (Pic0 K (modularFunctionFieldC K N))) theorem pic0SpecialFibreCommutingFamilyMatch_heckeCommutingFamilyFibreOf (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) : Pic0SpecialFibreCommutingFamilyMatch K N data hKr (heckeCommutingFamilyFibreOf h) := by show heckeFamilyFibreOf K N data hKr Tne ⟨ℓ, hℓ.out⟩ = _ rw [heckeFamilyFibreOf_of_eq K N data hKr Tne rfl, heckePic0FibreChar_eq_heckeFibreGeomLevelPic0OfIsCurveOver K N data hKr] theorem specialFibreHeckeModuleMatch_heckeModuleFibreOf (h : HeckeOperatorsCommuteFibreOf K N data hKr Tne) : SpecialFibreHeckeModuleMatch K N data hKr (heckeModuleFibreOf K N data hKr Tne) := by have e : heckeModuleFibreOf K N data hKr Tne = (heckeCommutingFamilyFibreOf h).module := dif_pos h rw [e] exact specialFibreHeckeModuleMatch_of_commutingFamily K N data hKr _ (pic0SpecialFibreCommutingFamilyMatch_heckeCommutingFamilyFibreOf K N data hKr Tne h) end Match end ModularCurve namespace ModularCurve variable (k : Type*) [Field k] (N q : ℕ) [NeZero N] [NeZero q] def charLDegeneracyRoof : IntermediateField k (LaurentSeries k) := IntermediateField.adjoin k {jqModC k, jqNModC k N, jqNModC k q, jqNModC k (N * q)} theorem modularFunctionFieldC_le_charLDegeneracyRoof : modularFunctionFieldC k N ≤ charLDegeneracyRoof k N q := by unfold modularFunctionFieldC charLDegeneracyRoof apply IntermediateField.adjoin.mono intro x hx rcases hx with h | h · exact Or.inl h · exact Or.inr (Or.inl h) theorem qExpand_image_le_charLDegeneracyRoof : (modularFunctionFieldC k N).map (qExpandAlgC k q) ≤ charLDegeneracyRoof k N q := by unfold modularFunctionFieldC rw [IntermediateField.adjoin_map] apply IntermediateField.adjoin.mono rintro x hx simp only [Set.image_insert_eq, Set.image_singleton, qExpandAlgC_apply] at hx rcases hx with h | h · subst h exact Or.inr (Or.inr (Or.inl rfl)) · rw [Set.mem_singleton_iff] at h subst h refine Or.inr (Or.inr (Or.inr ?_)) rw [Set.mem_singleton_iff] show qExpand k q (jqNModC k N) = jqNModC k (N * q) unfold jqNModC rw [qExpand_qExpand] simp only [Nat.mul_comm q N] def heckeAlphaC : modularFunctionFieldC k N →ₐ[k] charLDegeneracyRoof k N q := IntermediateField.inclusion (modularFunctionFieldC_le_charLDegeneracyRoof k N q) @[simp] theorem coe_heckeAlphaC (x : modularFunctionFieldC k N) : (heckeAlphaC k N q x : LaurentSeries k) = (x : LaurentSeries k) := IntermediateField.coe_inclusion _ x def heckeBetaCRingHom : modularFunctionFieldC k N →+* charLDegeneracyRoof k N q where toFun x := ⟨qExpand k q (x : LaurentSeries k), qExpand_image_le_charLDegeneracyRoof k N q ⟨x, x.2, rfl⟩⟩ map_one' := Subtype.ext (map_one (qExpand k q)) map_mul' _ _ := Subtype.ext (map_mul (qExpand k q) _ _) map_zero' := Subtype.ext (map_zero (qExpand k q)) map_add' _ _ := Subtype.ext (map_add (qExpand k q) _ _) def heckeBetaC : modularFunctionFieldC k N →ₐ[k] charLDegeneracyRoof k N q := { heckeBetaCRingHom k N q with commutes' := fun a => Subtype.ext <| by show qExpand k q (algebraMap k (LaurentSeries k) a) = algebraMap k (LaurentSeries k) a rw [algebraMap_laurentSeries_apply_eq_single, qExpand_single, mul_zero] } @[simp] theorem coe_heckeBetaC (x : modularFunctionFieldC k N) : (heckeBetaC k N q x : LaurentSeries k) = qExpand k q (x : LaurentSeries k) := rfl def HeckeAlphaCIntegral : Prop := (heckeAlphaC k N q).toRingHom.IsIntegral def HeckeBetaCIntegral : Prop := (heckeBetaC k N q).toRingHom.IsIntegral def heckeDivFibre [HasPrincipalDivisors k (charLDegeneracyRoof k N q)] (hβ : HeckeBetaCIntegral k N q) (hα : HeckeAlphaCIntegral k N q) : Divisor k (modularFunctionFieldC k N) →+ Divisor k (modularFunctionFieldC k N) := Divisor.correspondence (heckeBetaC k N q) (heckeAlphaC k N q) hβ hα def HeckeDivFibreDescends : Prop := ∀ (hP : HasPrincipalDivisors k (charLDegeneracyRoof k N q)) (hβ : HeckeBetaCIntegral k N q) (hα : HeckeAlphaCIntegral k N q), letI := hP AlgebraicCurve.Divisor.DescendsToPic0 (heckeDivFibre k N q hβ hα) def HeckeInputsFibre : Prop := ∃ (hP : HasPrincipalDivisors k (charLDegeneracyRoof k N q)) (hβ : HeckeBetaCIntegral k N q) (hα : HeckeAlphaCIntegral k N q), letI := hP AlgebraicCurve.Divisor.DescendsToPic0 (heckeDivFibre k N q hβ hα) open Classical in def heckePic0Fibre : Module.End ℤ (Pic0 k (modularFunctionFieldC k N)) := if h : HeckeInputsFibre k N q then letI := h.fst (AlgebraicCurve.Divisor.toPic0End (heckeDivFibre k N q h.snd.fst h.snd.snd.fst)).toIntLinearMap else 0 theorem heckeInputsFibre_intro [hP : HasPrincipalDivisors k (charLDegeneracyRoof k N q)] (hβ : HeckeBetaCIntegral k N q) (hα : HeckeAlphaCIntegral k N q) (hdesc : AlgebraicCurve.Divisor.DescendsToPic0 (heckeDivFibre k N q hβ hα)) : HeckeInputsFibre k N q := ⟨hP, hβ, hα, hdesc⟩ theorem heckePic0Fibre_eq [hP : HasPrincipalDivisors k (charLDegeneracyRoof k N q)] (hβ : HeckeBetaCIntegral k N q) (hα : HeckeAlphaCIntegral k N q) (hdesc : AlgebraicCurve.Divisor.DescendsToPic0 (heckeDivFibre k N q hβ hα)) : heckePic0Fibre k N q = (AlgebraicCurve.Divisor.toPic0End (heckeDivFibre k N q hβ hα)).toIntLinearMap := by rw [heckePic0Fibre, dif_pos (heckeInputsFibre_intro k N q hβ hα hdesc)] theorem heckePic0Fibre_of_not (h : ¬ HeckeInputsFibre k N q) : heckePic0Fibre k N q = 0 := by rw [heckePic0Fibre, dif_neg h] section Instantiated variable {ℓ : ℕ} [hℓ : Fact ℓ.Prime] [CharP k ℓ] (data : ModularPolynomialData ℓ) (hKr : KroneckerCongruence ℓ data) def heckeFamilyFibre (q' : Nat.Primes) : Module.End ℤ (Pic0 k (modularFunctionFieldC k N)) := heckeFamilyFibreOf k N data hKr (fun p' => letI : NeZero (p' : ℕ) := ⟨p'.2.pos.ne'⟩; heckePic0Fibre k N (p' : ℕ)) q' def HeckeOperatorsCommuteFibre : Prop := HeckeOperatorsCommuteFibreOf k N data hKr (fun p' => letI : NeZero (p' : ℕ) := ⟨p'.2.pos.ne'⟩; heckePic0Fibre k N (p' : ℕ)) @[implicit_reducible] def heckeModuleFibre : Module HeckeAlg (Pic0 k (modularFunctionFieldC k N)) := heckeModuleFibreOf k N data hKr (fun p' => letI : NeZero (p' : ℕ) := ⟨p'.2.pos.ne'⟩; heckePic0Fibre k N (p' : ℕ)) theorem heckeModuleFibre_heckeGen_smul (h : HeckeOperatorsCommuteFibre k N data hKr) (q' : Nat.Primes) (x : Pic0 k (modularFunctionFieldC k N)) : (letI := heckeModuleFibre k N data hKr; heckeGen q' • x) = heckeFamilyFibre k N data hKr q' x := heckeModuleFibreOf_heckeGen_smul (K := k) (N := N) (data := data) (hKr := hKr) (Tne := fun p' => letI : NeZero (p' : ℕ) := ⟨p'.2.pos.ne'⟩; heckePic0Fibre k N (p' : ℕ)) h q' x theorem specialFibreHeckeModuleMatch_heckeModuleFibre [IsAlgClosed k] [AlgebraicCurve.IsCurveOver k (modularFunctionFieldC k N)] (h : HeckeOperatorsCommuteFibre k N data hKr) : SpecialFibreHeckeModuleMatch k N data hKr (heckeModuleFibre k N data hKr) := specialFibreHeckeModuleMatch_heckeModuleFibreOf k N data hKr (fun p' => letI : NeZero (p' : ℕ) := ⟨p'.2.pos.ne'⟩; heckePic0Fibre k N (p' : ℕ)) h end Instantiated example : Prop := letI : Fact (Nat.Prime 5) := ⟨by norm_num⟩ HeckeInputsFibre (ZMod 5) 7 2 example : Prop := letI : Fact (Nat.Prime 5) := ⟨by norm_num⟩ HeckeDivFibreDescends (ZMod 5) 7 2 end ModularCurve end
Statements phrased using this module (103)
- Widths, component map and glued specialisation for J₀(Nq) at q
ModularCurve.exists_width_comp_sp3,537 below · depth 10 - Specialisation of J₀(N) intertwines T_q with the special-fibre operator
ModularCurve.CharPModel.FibreModel.heckePic0Fibre_spPic0_eq_spPic0_heckeGen_smul963 below · depth 11 - Hecke law for the glued specialization on Pic⁰ pairs
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_heckeGen_smul_eq_heckePic0Fibre_of_isModel1,173 below · depth 11 - Principal divisors on the degeneracy roof k(̃ j,̃ j_N,̃ j_q,̃ j_{Nq})
ModularCurve.hasPrincipalDivisors_charLDegeneracyRoof79 below · depth 11 - Hecke inputs at the q-degeneracy roof from separability
ModularCurve.heckeInputsFibre_of_separable_phi_map62 below · depth 11 - Widths, component map, glued specialisation and Hecke matrices
ModularCurve.PlaceSpecialization.exists_widths_componentMap_gluedSpecialization_placeWidthChar_correspondence_heckeComponentAction_agree_of_isModel2,483 below · depth 12 - Hecke equivariance of spPic⁰ at primes q≠ℓ
ModularCurve.PlaceSpecialization.heckePic0Fibre_spPic0_eq_spPic0_heckeGen_smul_of_ne_ell956 below · depth 12 - Finiteness of the four-generator roof over k(j,j_N)
ModularCurve.finiteAlong_heckeAlphaC59 below · depth 12 - Finiteness of the q-twisting degeneracy embedding
ModularCurve.finiteAlong_heckeBetaC59 below · depth 12 - Descent of the fibre Hecke correspondence to Pic⁰
ModularCurve.heckeDivFibreDescends_of_separable_phi_map59 below · depth 12 - Reduction mod ℓ commutes with T_q for q≠ℓ
ModularCurve.reductionModL_heckeOperatorBar_of_ne938 below · depth 12 - Hecke equivariance of the depth functional in the component group
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul2,247 below · depth 13 - Hecke transport of node units on the glued fibre at q
ModularCurve.PlaceSpecialization.exists_matrix_eq_correspondence_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel1,780 below · depth 13 - Degeneracy roof at (N,q) equals full level-Nq function field
ModularCurve.charLDegeneracyRoof_eq_modularFunctionFieldFullC_mul113 below · depth 13 - A semistable witness package for J₀(Nq) at q∤ N
ModularCurve.exists_placeSpecialization_prolongationTuple_width_comp_sp_gluedSpecialization_placeWidthChar_regularityLaw_nodeValueLaw3,321 below · depth 13 - Degeneracy embedding of level N into level Nℓ has degree ℓ+1
ModularCurve.finrankAlong_heckeAlphaC_residueField_eq_add_one762 below · depth 13 - Unconditional integrality of the degeneracy leg `heckeAlphaC`
ModularCurve.heckeAlphaCIntegral_unconditional73 below · depth 13 - Unconditional integrality of the degeneracy map heckeBetaC
ModularCurve.heckeBetaCIntegral_unconditional82 below · depth 13 - Width divides off-diagonal Hecke correspondence coefficients in characteristic q'
ModularCurve.placeWidthChar_dvd_correspondence_heckeAlphaC_heckeBetaC_single_of_ne_of_prime702 below · depth 13 - Weighted symmetry of the degree-s Hecke correspondence matrix
ModularCurve.placeWidthChar_mul_correspondence_heckeAlphaC_heckeBetaC_single_comm_of_prime604 below · depth 13 - Places of the characteristic-ℓ degeneracy roof have degree one
ModularCurve.place_deg_eq_one_charLDegeneracyRoof108 below · depth 13 - Igusa separability of the level-q degeneracy maps mod ℓ
ModularCurve.separableAlong_heckeAlphaC_heckeBetaC134 below · depth 13 - Hecke transport of the depth functional: annulus case, q≥ 5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_five_le_of_not_isGoodDiv2,172 below · depth 14 - Hecke transport of depth functionals in component groups, q<5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_lt_five2,237 below · depth 14 - T_ℓ (ℓ≠ q) acts on node units by a correspondence matrix
ModularCurve.PlaceSpecialization.exists_matrix_eq_correspondence_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel_of_prolongation_of_regularityLaw_nodeValueLaw986 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 - Hecke inputs at the degeneracy roof for invertible q
ModularCurve.heckeInputsFibre_of_natCast_ne_zero68 below · depth 14 - Inertia degree one along α̃_q over an algebraically closed field
ModularCurve.inertiaDegAlong_heckeAlphaC_eq_one109 below · depth 14 - Inertia degree along the β-leg is one over ̄ k
ModularCurve.inertiaDegAlong_heckeBetaC_eq_one112 below · depth 14 - Cross identity w(β W)e_α(W)=w(α W)e_β(W) on the degeneracy roof
ModularCurve.placeWidthChar_restrictAlong_mul_ramificationIndexAlong_heckeAlphaC_heckeBetaC_cross_of_prime593 below · depth 14 - Off-diagonal roof places: e_α· r equals characteristic j-width
ModularCurve.ramificationIndexAlong_heckeAlphaC_mul_placeRamificationJ_eq_jWidthChar_of_restrictAlong_ne_of_prime701 below · depth 14 - Hecke equivariance of the depth class, good case
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_isGoodDiv2,025 below · depth 15 - Hecke transport of the depth functional: annulus case, q<5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_lt_five_of_not_isGoodDiv2,235 below · depth 15 - First reduction intertwines T_ℓ with the fibre correspondence
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_eq_heckeDivFibre_mapDomain_reduceFst_of_ne_of_isModel_of_orderLawFixed842 below · depth 15 - First reduction of the Hecke divisor of one place
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_single_apply_eq_correspondence_of_ne346 below · depth 15 - Commutativity of the divisor correspondences α_*β^* at two primes
ModularCurve.correspondence_heckeBetaC_heckeAlphaC_correspondence_heckeBetaC_heckeAlphaC_comm258 below · depth 15 - Degeneracy pushforwards commute with α_*β^* at ℓ ≠ s
ModularCurve.degeneracyPair_pushforwardAlong_correspondence_heckeBetaC_heckeAlphaC_comm_of_ne_of_not_dvd237 below · depth 15 - Fricke and Atkin–Lehner involutions of the degeneracy roof
ModularCurve.exists_algEquiv_modularFunctionFieldC_swap_and_charLDegeneracyRoof_swap147 below · depth 15 - Coefficient automorphisms extend to the roof, intertwining both Hecke legs
ModularCurve.exists_semilinearAut_intertwinesAlong_heckeAlphaC_heckeBetaC_coeffSemilinearAut0 below · depth 15 - Reduction commutes with the divisorial Hecke correspondence
ModularCurve.mapDomain_heckeDivBar_single_eq_heckeDivFibre_of_regularProlongation238 below · depth 15 - Width-weighted symmetry of the two Hecke correspondence orientations
ModularCurve.placeWidthChar_mul_correspondence_heckeBetaC_heckeAlphaC_single_apply_eq_of_prime596 below · depth 15 - Hecke correspondence at ℓ preserves supersingular places
ModularCurve.restrictAlong_heckeAlphaC_mem_ssPlaces_of_restrictAlong_heckeBetaC_mem_ssPlaces266 below · depth 15 - Trace preserves pole-order bounds at a place
AlgebraicCurve.Place.neg_le_ord_trace_of_forall_le_ord2 below · depth 16 - Strict trace bound along places over a fixed place
AlgebraicCurve.Place.trace_eq_zero_or_neg_add_one_le_ord_trace_of_forall_le_ord0 below · depth 16 - Cartier anchors for toric monodromy, with witnesses identified
CerednikDrinfeld.exists_cartierAnchors_degeneracyDuality_jZero_ssPlaces_correspondence_arithFrobC_restrictAlong_placeWidthChar3,361 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 - First reduction at q commutes with T_ℓ, ℓ ≠ q
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_eq_heckeDivFibre_mapDomain_reduceFst_of_ne278 below · depth 16 - Place specialisation commutes with both degeneracy maps
ModularCurve.PlaceSpecialization.restrictAlong_heckeAlphaC_sp_and_restrictAlong_heckeBetaC_sp_eq_sp_restrictAlong_of_isModel933 below · depth 16 - Node depth along the degeneracy tower is a ramification power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerInclBar_eq_yDepth_pow_ramificationIndexAlong_heckeAlphaC1,296 below · depth 16 - Depth along the ℓ-substitution leg is a ramification power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerSubstBar_eq_yDepth_pow_ramificationIndexAlong_heckeBetaC985 below · depth 16 - Cuspidal Hecke eigen-function yields mod-p cusp eigenform of weight 2m'
ModularCurve.SSHeckeV2.exists_isModPEigen_modPCusp_of_eigen_riemannRochSpace997 below · depth 16 - Hecke eigenfunctions in L(D_m) give mod-p eigenforms
ModularCurve.SSHeckeV2.exists_isModPEigen_of_eigen_riemannRochSpace876 below · depth 16 - The Hecke multiplier satisfies its defining differential identity
ModularCurve.SSHeckeV2.heckeMultiplier_spec121 below · depth 16 - Lead coefficients of the weight-2m Hecke image compute T_ℓ^{ss}
ModularCurve.SSHeckeV2.lead_trace_heckeBetaC_mul_pow_eq_ssHeckeFun_of_map893 below · depth 16 - The ℓ-roof equals the level-Nℓ modular function field
ModularCurve.charLDegeneracyRoof_eq_modularFunctionFieldC_mul113 below · depth 16 - Places of X₀(M), X₀(Ms) and the two degeneracy laws
ModularCurve.exists_orbitMap_cyclicAddSubgroup_places_restrictAlong_heckeAlphaC_heckeBetaC_eq437 below · depth 16 - A Fricke involution on supersingular places swapping the Hecke legs
ModularCurve.exists_perm_ssPlaces_correspondence_heckeBetaC_heckeAlphaC_perm_eq_correspondence_heckeAlphaC_heckeBetaC335 below · depth 16 - The ℓ-degeneracy roof is a curve over K
ModularCurve.isCurveOver_charLDegeneracyRoof154 below · depth 16 - Vanishing of leadₓᵃ of a trace at supersingular places
ModularCurve.lead_trace_eq_zero_of_forall_le_ord366 below · depth 16 - Order bound for β(d)h^m on the α-fibre of an index place
ModularCurve.neg_mul_poleOrder_add_one_le_ord_heckeBetaC_mul_pow366 below · depth 16 - Floor bound for β(d)h^m along a supersingular fibre
ModularCurve.neg_mul_poleOrder_le_ord_heckeBetaC_mul_pow366 below · depth 16 - q-expansion of the weight-2m trace Hecke operator
ModularCurve.qexpOfWeight_trace_heckeBetaC_mul_pow_eq_heckePS_of_eq_smul_map132 below · depth 16 - Trace at a place: Tr(g)(x)=sum_{y∣ x}e(y∣ x) g(y)
AlgebraicCurve.Place.mem_and_evalAt_trace_eq_sum_ramificationIndexAlong_smul_evalAt9 below · depth 17 - Two-level joint semistable specialisation with pinned Hecke transport
CerednikDrinfeld.exists_twoLevelSemistableSpecialization_jointConstruction_ssPlaces_heckeTransport_canonical_levelPrimeIntertwine_correspondence_arithFrobC_restrictAlong_placeWidthChar3,351 below · depth 17 - Joint two-level semistable specialisation with degeneracy and Hecke transport
CerednikDrinfeld.exists_twoLevelSemistableSpecialization_jointConstruction_ssPlaces_heckeTransport_correspondence_restrictAlong_degeneracyComp_placeWidthChar3,338 below · depth 17 - Node depth along the ℓ-degeneracy leg is a ramified power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerInclBar_eq_yDepth_pow_ramificationIndexAlong_heckeAlphaC_of_prime1,308 below · depth 17 - Node depth along the substitution degeneracy leg at ℓ≠ q
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerSubstBar_eq_yDepth_pow_ramificationIndexAlong_heckeBetaC_of_prime985 below · depth 17 - Tameness of cusp pole orders on the ℓ-degeneracy roof
ModularCurve.cast_natAbs_ord_heckeAlphaC_ne_zero_and_heckeBetaC_of_ord_neg127 below · depth 17 - Roof reduction commutes place by place with both degeneracy maps
ModularCurve.exists_charLDegeneracyRoof_regularProlongation_heckeCompat_restrictAlong_eq_of_ne874 below · depth 17 - Common width along both degeneracy legs of the ℓ-roof
ModularCurve.exists_ramificationIndexAlong_mul_eq_placeWidth_restrictAlong_heckeAlphaC_heckeBetaC859 below · depth 17 - Constant column sums of β_*α^* on supersingular places
ModularCurve.exists_sum_ssPlaces_correspondence_heckeAlphaC_heckeBetaC_single_eq_of_dvd336 below · depth 17 - Hasse invariant intertwines the two Hecke operators at ℓ
ModularCurve.hasse_smul_traceAlong_smul_pullbackAlong_smul_D_jGeomGen_eq155 below · depth 17 - Supersingular order bound for the Hecke difference on the roof
ModularCurve.neg_mul_add_one_le_ord_pow_mul_heckeBetaC_mul_pow_sub_of_mem_ssPlaces966 below · depth 17 - Poles of j(q) and j(q^ℓ) agree at every place
ModularCurve.ord_heckeAlphaC_jGeomGen_neg_iff_ord_heckeBetaC_jGeomGen_neg42 below · depth 17 - Order of the Hecke multiplier at a tame place
ModularCurve.ord_heckeMultiplier_eq17 below · depth 17 - Order of the Hecke multiplier at a pole of α^*j
ModularCurve.ord_heckeMultiplier_eq_of_ord_neg_of_eq_smul_map451 below · depth 17 - Width-weighted adjointness of the two degeneracy Hecke correspondences
ModularCurve.placeWidthChar_mul_correspondence_heckeBetaC_heckeAlphaC_single_apply_eq_of_prime_of_five_le493 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 - Supersingularity along the two legs of the ℓ-roof
ModularCurve.restrictAlong_heckeAlphaC_mem_ssPlaces_iff_restrictAlong_heckeBetaC_mem_ssPlaces859 below · depth 17 - Joint two-level semistable specialisation with widths and arithmetic Frobenius
CerednikDrinfeld.exists_twoLevelSemistableSpecialization_jointConstruction_ssPlaces_heckeTransport_correspondence_restrictAlong_degeneracyComp_placeWidthChar_frobArithFrobC3,338 below · depth 18 - Hecke correspondences at two primes commute on divisors
ModularCurve.correspondence_heckeAlphaC_heckeBetaC_correspondence_heckeAlphaC_heckeBetaC_comm258 below · depth 18 - Degeneracy maps commute with the ℓ-Hecke correspondence on divisors
ModularCurve.degeneracyPair_pushforwardAlong_correspondence_comm_of_ne_of_charP_of_isAlgClosed426 below · depth 18 - Degeneracy identities for the level-prime Hecke correspondence
ModularCurve.degeneracyPair_pushforwardAlong_correspondence_levelPrime_identities421 below · depth 18 - Cyclicity of Eisenstein classes on the characteristic-q fibre
ModularCurve.eq_zero_or_exists_eq_nsmul_of_heckePic0Fibre_eq_eisenstein_of_heckeOperatorModL_eq_of_smul_eq_neg316 below · depth 18 - One witness package for the semistable specialisation of J₀(Nq)
ModularCurve.exists_placeSpecialization_prolongationTuple_width_comp_sp_gluedSpecialization_placeWidthChar3,321 below · depth 18 - Hecke inputs at level N and index q, both primes
ModularCurve.heckeInputsFibre_of_prime95 below · depth 18 - Uₚ=-wₚ on Pic⁰ of the special fibre
ModularCurve.heckePic0Fibre_eq_neg_fricke_smul_of_prime981 below · depth 18 - Order of the Hecke multiplier at a pole of j
ModularCurve.ord_heckeMultiplier_eq_of_ord_neg102 below · depth 18 - Order zero of the Hecke multiplier away from j=0,1728
ModularCurve.ord_heckeMultiplier_eq_zero_of_evalAt_ne380 below · depth 18 - Supersingularity along both legs of the ℓ-roof when ℓ ∣ N
ModularCurve.restrictAlong_heckeAlphaC_mem_ssPlaces_iff_restrictAlong_heckeBetaC_mem_ssPlaces_of_dvd335 below · depth 18 - Row form of Hecke compatibility for the supersingular residue pairing
ModularCurve.ssResiduePairing_ssHeckeFun_eq_comp_traceAlong891 below · depth 18 - aₙₚ=aₙ for a Uₚ-fixed, Fricke-anti-invariant q-torsion class
ModularCurve.coeff_inv_mul_thetaL_mul_level_eq_of_heckePic0Fibre_self_eq_of_smul_eq_neg269 below · depth 19 - q-expansion of T_ℓ on differentials of X₀(N)
ModularCurve.coeff_qExpansionDiffAlong_traceDiff_pullbackDiff_heckeBetaC213 below · depth 19 - Weight-zero cuspidal integrality forces vanishing
ModularCurve.eq_zero_of_isModPCuspFormFn_zero165 below · depth 19 - j(mathsf q)-a is a uniformiser on the ℓ-degeneracy roof
ModularCurve.ord_heckeAlphaC_jGeomGen_sub_algebraMap_eq_one360 below · depth 19 - j(q^ℓ) - a' is a uniformiser at generic places of the roof
ModularCurve.ord_heckeBetaC_jGeomGen_sub_algebraMap_eq_one363 below · depth 19 - Hecke compatibility of the supersingular residue pairing
ModularCurve.sum_kaehlerResidueTerm_liftFun_ssHeckeFun_eq890 below · depth 19 - Serre's δ intertwines ̄ T_q with tr_α∘β^*
ModularCurve.apply_eq_traceAlong_pullbackAlong_of_coe_eq_heckePic0Fibre175 below · depth 20 - Coefficients of U_ℓ on differentials: aₙ↦ a_{ℓ n}
ModularCurve.coeff_qExpansionDiffAlong_traceDiff_pullbackDiff_heckeAlphaC_of_dvd215 below · depth 20 - Degeneracy trace acts as formal T_q on q-expansions
ModularCurve.qExpansionDiffAlong_traceAlong_pullbackAlong_eq_heckeT231 below · depth 20 - q-expansion of the trace down the degeneracy roof at level p
ModularCurve.qExpansionDiffAlong_traceDiff_pullbackDiff_heckeBetaC_self209 below · depth 20 - Supersingular residue pairing against the degeneracy correspondence
ModularCurve.sum_kaehlerResidueTerm_eq_sum_kaehlerResidueTerm_traceAlong_of_ord_sub_traceFunAlong1 below · depth 20 - Integral node matrix for T_ℓ, ℓ≠ q, on glued specialisations
ModularCurve.PlaceSpecialization.exists_matrix_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel_of_prolongation_of_regularityLaw_nodeValueLaw986 below · depth 22