Definitions/Def_ModularForm_HeckeOperatorForms.lean
Hecke operators , on modular and cusp forms
For a weight k \in \mathbb{Z} and level \Gamma_0(N), this module packages the raw Hecke operators of ModularForm_HeckeOperator as bundled \mathbb{C}-linear endomorphisms of the Mathlib spaces ModularForm (CongruenceSubgroup.Gamma0 N) k and CuspForm (CongruenceSubgroup.Gamma0 N) k. Recall the underlying operators on functions f : \mathbb{H} \to \mathbb{C}: with \alpha_j = \begin{pmatrix}1 & j\\ 0 & p\end{pmatrix} and \delta_p = \begin{pmatrix}p & 0\\ 0 & 1\end{pmatrix} acting by the weight-k slash action, heckeU k p f = \sum_{j=0}^{p-1} f \mid_k \alpha_j, i.e. \tau \mapsto p^{-1}\sum_{j<p} f((\tau+j)/p), and heckeT k p f = heckeU k p f +\, f\mid_k \delta_p, i.e. the extra term p^{k-1}f(p\tau); on q-expansions these are the usual normalisations a_n \mapsto a_{np} and a_n \mapsto a_{np} + p^{k-1}a_{n/p}.
ModularForm.heckeTLin k hp hpN takes p prime and p \nmid N (whence N \neq 0, since p \mid 0) and sends f to the modular form whose underlying function is heckeT k p ⇑f; its three structure fields — \Gamma_0(N)-invariance under the weight-k slash action, holomorphy as a map of the upper half-plane, and boundedness at the cusps — are filled in by the imported theorems heckeT_slash_eq_self_of_mem_Gamma0, mdifferentiable_heckeT and ModularFormClass.isBoundedAt_heckeT. ModularForm.heckeULin k hpN does the same with heckeU under the hypotheses [NeZero N] and p \mid N; note that no primality of p is assumed for U_p. CuspForm.heckeTLin and CuspForm.heckeULin are the parallel constructions on cusp forms, with the boundedness field replaced by vanishing at the cusps via CuspFormClass.isZeroAt_heckeT/isZeroAt_heckeU. Additivity and \mathbb{C}-homogeneity come from heckeT_add, heckeT_smul, heckeU_add, heckeU_smul through injectivity of the coercion to functions. Four rfl lemmas (coe_heckeTLin_apply, coe_heckeULin_apply and their pointwise forms) record that the coercion of the bundled operator is the raw operator. Only T_p and U_p at a single prime are constructed here: no T_n for composite n, and no \Gamma_1(N) or nebentypus variants.
Relation to Mathlib
Built on Mathlib's ModularForm, CuspForm, CongruenceSubgroup.Gamma0 and weight-k slash action; Mathlib provides no Hecke operators on these spaces, so these linear endomorphisms are the project's own.
Where it is used
These bundled operators make the Hecke action on S_k(\Gamma_0(N)) expressible in Lean, and hence statements about commuting families, eigenforms and their eigenvalues — the input to the construction of the Galois representation attached to a weight-2 newform on \Gamma_0(N) 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.1–5.3
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Princeton University Press, 1971, Ch. 3
- 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.
- 113 lines
- 12 declarations
- used in the statements of 64 theorems and imported by 106 proofs
- imports 1 definition modules, and the statements of 8 theorems
Source file: Definitions/Def_ModularForm_HeckeOperatorForms.lean
Imports
Theorems imported by this definition module
Declarations
- def
ModularForm.heckeTLin - def
ModularForm.heckeULin - theorem
ModularForm.coe_heckeTLin_apply - theorem
ModularForm.coe_heckeULin_apply - theorem
ModularForm.heckeTLin_apply_apply - theorem
ModularForm.heckeULin_apply_apply - def
CuspForm.heckeTLin - def
CuspForm.heckeULin - theorem
CuspForm.coe_heckeTLin_apply - theorem
CuspForm.coe_heckeULin_apply - theorem
CuspForm.heckeTLin_apply_apply - theorem
CuspForm.heckeULin_apply_apply
Source
import Mathlib.NumberTheory.ModularForms.CongruenceSubgroups ↗ import Definitions.Def_ModularForm_HeckeOperator import Theorems.Thm_ModularForm_heckeT_slash_eq_self_of_mem_Gamma0 import Theorems.Thm_ModularForm_heckeU_slash_eq_self_of_mem_Gamma0 import Theorems.Thm_ModularForm_mdifferentiable_heckeT import Theorems.Thm_ModularForm_mdifferentiable_heckeU import Theorems.Thm_ModularFormClass_isBoundedAt_heckeT import Theorems.Thm_ModularFormClass_isBoundedAt_heckeU import Theorems.Thm_CuspFormClass_isZeroAt_heckeT import Theorems.Thm_CuspFormClass_isZeroAt_heckeU set_option autoImplicit false noncomputable section namespace ModularForm variable {N : ℕ} {p : ℕ} def heckeTLin (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) : ModularForm (CongruenceSubgroup.Gamma0 N) k →ₗ[ℂ] ModularForm (CongruenceSubgroup.Gamma0 N) k := haveI : NeZero N := ⟨fun h => hpN (h ▸ dvd_zero p)⟩ { toFun := fun f => { toFun := heckeT k p ⇑f slash_action_eq' := fun γ hγ => heckeT_slash_eq_self_of_mem_Gamma0 k hp hpN (fun γ hγ => SlashInvariantFormClass.slash_action_eq f γ hγ) γ hγ holo' := mdifferentiable_heckeT (ModularFormClass.holo f) k p bdd_at_cusps' := fun hc => ModularFormClass.isBoundedAt_heckeT f p hc } map_add' := fun f g => DFunLike.coe_injective <| show heckeT k p ⇑(f + g) = heckeT k p ⇑f + heckeT k p ⇑g by rw [ModularForm.coe_add, heckeT_add] map_smul' := fun c f => DFunLike.coe_injective <| show heckeT k p ⇑(c • f) = c • heckeT k p ⇑f by rw [ModularForm.IsGLPos.coe_smul, heckeT_smul] } def heckeULin (k : ℤ) [NeZero N] (hpN : p ∣ N) : ModularForm (CongruenceSubgroup.Gamma0 N) k →ₗ[ℂ] ModularForm (CongruenceSubgroup.Gamma0 N) k where toFun f := { toFun := heckeU k p ⇑f slash_action_eq' := fun γ hγ => heckeU_slash_eq_self_of_mem_Gamma0 k hpN (fun γ hγ => SlashInvariantFormClass.slash_action_eq f γ hγ) γ hγ holo' := mdifferentiable_heckeU (ModularFormClass.holo f) k p bdd_at_cusps' := fun hc => ModularFormClass.isBoundedAt_heckeU f p hc } map_add' f g := DFunLike.coe_injective <| show heckeU k p ⇑(f + g) = heckeU k p ⇑f + heckeU k p ⇑g by rw [ModularForm.coe_add, heckeU_add] map_smul' c f := DFunLike.coe_injective <| show heckeU k p ⇑(c • f) = c • heckeU k p ⇑f by rw [ModularForm.IsGLPos.coe_smul, heckeU_smul] @[simp] theorem coe_heckeTLin_apply (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) (f : ModularForm (CongruenceSubgroup.Gamma0 N) k) : ⇑(heckeTLin k hp hpN f) = heckeT k p ⇑f := rfl @[simp] theorem coe_heckeULin_apply (k : ℤ) [NeZero N] (hpN : p ∣ N) (f : ModularForm (CongruenceSubgroup.Gamma0 N) k) : ⇑(heckeULin k hpN f) = heckeU k p ⇑f := rfl theorem heckeTLin_apply_apply (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) (f : ModularForm (CongruenceSubgroup.Gamma0 N) k) (τ : UpperHalfPlane) : heckeTLin k hp hpN f τ = heckeT k p ⇑f τ := rfl theorem heckeULin_apply_apply (k : ℤ) [NeZero N] (hpN : p ∣ N) (f : ModularForm (CongruenceSubgroup.Gamma0 N) k) (τ : UpperHalfPlane) : heckeULin k hpN f τ = heckeU k p ⇑f τ := rfl end ModularForm namespace CuspForm open ModularForm variable {N : ℕ} {p : ℕ} def heckeTLin (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) : CuspForm (CongruenceSubgroup.Gamma0 N) k →ₗ[ℂ] CuspForm (CongruenceSubgroup.Gamma0 N) k := haveI : NeZero N := ⟨fun h => hpN (h ▸ dvd_zero p)⟩ { toFun := fun f => { toFun := heckeT k p ⇑f slash_action_eq' := fun γ hγ => heckeT_slash_eq_self_of_mem_Gamma0 k hp hpN (fun γ hγ => SlashInvariantFormClass.slash_action_eq f γ hγ) γ hγ holo' := mdifferentiable_heckeT (CuspFormClass.holo f) k p zero_at_cusps' := fun hc => CuspFormClass.isZeroAt_heckeT f p hc } map_add' := fun f g => DFunLike.coe_injective <| show heckeT k p ⇑(f + g) = heckeT k p ⇑f + heckeT k p ⇑g by rw [CuspForm.coe_add, heckeT_add] map_smul' := fun c f => DFunLike.coe_injective <| show heckeT k p ⇑(c • f) = c • heckeT k p ⇑f by rw [CuspForm.IsGLPos.coe_smul, heckeT_smul] } def heckeULin (k : ℤ) [NeZero N] (hpN : p ∣ N) : CuspForm (CongruenceSubgroup.Gamma0 N) k →ₗ[ℂ] CuspForm (CongruenceSubgroup.Gamma0 N) k where toFun f := { toFun := heckeU k p ⇑f slash_action_eq' := fun γ hγ => heckeU_slash_eq_self_of_mem_Gamma0 k hpN (fun γ hγ => SlashInvariantFormClass.slash_action_eq f γ hγ) γ hγ holo' := mdifferentiable_heckeU (CuspFormClass.holo f) k p zero_at_cusps' := fun hc => CuspFormClass.isZeroAt_heckeU f p hc } map_add' f g := DFunLike.coe_injective <| show heckeU k p ⇑(f + g) = heckeU k p ⇑f + heckeU k p ⇑g by rw [CuspForm.coe_add, heckeU_add] map_smul' c f := DFunLike.coe_injective <| show heckeU k p ⇑(c • f) = c • heckeU k p ⇑f by rw [CuspForm.IsGLPos.coe_smul, heckeU_smul] @[simp] theorem coe_heckeTLin_apply (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) (f : CuspForm (CongruenceSubgroup.Gamma0 N) k) : ⇑(heckeTLin k hp hpN f) = heckeT k p ⇑f := rfl @[simp] theorem coe_heckeULin_apply (k : ℤ) [NeZero N] (hpN : p ∣ N) (f : CuspForm (CongruenceSubgroup.Gamma0 N) k) : ⇑(heckeULin k hpN f) = heckeU k p ⇑f := rfl theorem heckeTLin_apply_apply (k : ℤ) (hp : p.Prime) (hpN : ¬ p ∣ N) (f : CuspForm (CongruenceSubgroup.Gamma0 N) k) (τ : UpperHalfPlane) : heckeTLin k hp hpN f τ = heckeT k p ⇑f τ := rfl theorem heckeULin_apply_apply (k : ℤ) [NeZero N] (hpN : p ∣ N) (f : CuspForm (CongruenceSubgroup.Gamma0 N) k) (τ : UpperHalfPlane) : heckeULin k hpN f τ = heckeU k p ⇑f τ := rfl end CuspForm end
Statements phrased using this module (64)
- Normalized eigenforms are T_ℓ-eigenvectors with eigenvalue a_ℓ
CuspForm.IsNormalizedEigenform.heckeTLin_apply_eq_qCoeff_smul0 below · depth 9 - Realising a partial Hecke eigensystem by a normalised eigenform
CuspForm.exists_isNormalizedEigenform_of_forall_heckeTLin_eq_smul34 below · depth 9 - Eigenform criterion for Tₚ in terms of q-coefficients
CuspForm.heckeTLin_apply_eq_smul_iff6 below · depth 9 - Tₚ and U_q commute on S_k(Γ₀(N))
CuspForm.heckeTLin_heckeULin_comm11 below · depth 9 - Uₚ-eigenform criterion on q-expansion coefficients
CuspForm.heckeULin_apply_eq_smul_iff6 below · depth 9 - Normalised eigenforms as simultaneous Hecke eigenvectors in S₂(Γ₀(N))
CuspForm.isNormalizedEigenform_iff_heckeTLin15 below · depth 9 - Divisorial Hecke ring of J₀(N) embeds in End_ℂS₂(Γ₀(N))
ModularCurve.exists_injective_ringHom_adjoin_heckeOperatorBar_cuspForm842 below · depth 9 - Normalized eigenforms are U_q-eigenvectors at bad primes
CuspForm.IsNormalizedEigenform.heckeULin_apply_eq_qCoeff_smul0 below · depth 10 - Hecke operators Tₚ, T_q commute on cusp forms
CuspForm.heckeTLin_comm7 below · depth 10 - Commutativity of Uₚ and U_q on S_k(Γ₀(N))
CuspForm.heckeULin_comm7 below · depth 10 - q-expansion of Tₚ on weight-2 cusp forms
CuspForm.qExpansion_heckeTLin2 below · depth 10 - Hecke equivariance of the period map in weight two
ModularCurve.periodMap_heckeTLin3 below · depth 10 - Period map intertwines U_q with the cohomological operator
ModularCurve.periodMap_heckeULin3 below · depth 10 - Conjugation of cusp forms commutes with all Hecke operators
CuspForm.conjForm_heckeTLin_heckeULin_comm0 below · depth 11 - Hecke-equivariant Eichler–Shimura decomposition of parabolic cohomology
HeckeEis.exists_eichlerShimura_coeffH1par_binaryFormRepSL_forall_prime644 below · depth 11 - Hecke relations on S₂(Γ₀(N)) descend to J₀(N)
ModularCurve.freeAlgebra_lift_heckeOperatorBar_eq_zero_of_lift_cuspForm_eq_zero712 below · depth 11 - A basis of S₂(Γ₀(N)) with rational Hecke matrices
CuspForm.exists_basis_repr_heckeTLin_heckeULin_mem_range_ratCast593 below · depth 12 - Deligne–Serre lifting: eigenform congruent to a mod-𝔪 eigensystem
CuspForm.exists_eigenform_qCoeff_congr_of_heckeT_sub_mem22 below · depth 12 - Normalised joint Hecke eigenform with integral eigenvalue coefficients
CuspForm.exists_normalized_eigenvector23 below · depth 12 - Eichler–Shimura map intertwines T_ℓ with cohomological T_ℓ
HeckeEis.eichlerShimuraMap_heckeTLin17 below · depth 12 - Eichler–Shimura map intertwines U_ℓ for ℓ ∣ N
HeckeEis.eichlerShimuraMap_heckeULin17 below · depth 12 - Mod p Hecke eigenclass in parabolic cohomology of Γ₀(N)
HeckeEis.exists_coeffH1par_binaryFormRepSL_eigenclass_of_ideal_heckeAlgebra_of_ne_two54 below · depth 12 - T_ℓ-eigenvalue of the W_q-twisted trace combination
ModularForm.heckeT_trace_alSlash_of_eigen13 below · depth 12 - Dual multiplicity one for newforms away from finitely many primes
CuspForm.IsNewform.finrank_iInf_eigenspace_dualMap_heckeTLin_eq_one101 below · depth 13 - w_q commutes with U_ℓ for ℓ ≠ q
CuspForm.atkinLehnerLin_heckeULin0 below · depth 13 - Normalized eigenform in a Hecke-stable subspace supporting a prime
CuspForm.exists_isNormalizedEigenform_mem_annihilator_le_of_isPrime26 below · depth 13 - Hecke algebra realises all q-coefficients through a₁
CuspForm.exists_mem_heckeAlgebra_qCoeff_apply_one_eq2 below · depth 13 - Hecke operators at ℓ commute with degeneracy rescaling
CuspForm.heckeTLin_rescaleLin3 below · depth 13 - Vanishing of Tr(w_qf) forces a_q(f)²=1
CuspForm.qCoeff_sq_eq_one_of_traceLin_atkinLehnerLin_eq_zero20 below · depth 13 - Level-lowering trace commutes with T_ℓ for ℓ ∤ M
CuspForm.traceLin_heckeTLin13 below · depth 13 - Level-lowering trace commutes with U_ℓ, ℓ≠ q
CuspForm.traceLin_heckeULin9 below · depth 13 - U_q stabilises the q-new kernel of the trace pair
CuspForm.traceLin_heckeULin_eq_zero_of_traceLin_eq_zero_of_traceLin_atkinLehnerLin_eq_zero3 below · depth 13 - Mod-p parabolic eigenclass attached to a maximal Hecke ideal
HeckeEis.exists_coeffH1par_int_modp_eigenclass_of_ideal_heckeAlgebra51 below · depth 13 - Hecke operator acts on the period class by a_ℓ(f)
ModularCurve.heckeOperatorHom_periodMap_of_isNormalizedEigenform21 below · depth 13 - U_q scales the period homomorphism of an eigenform by a_q
ModularCurve.heckeOperatorHom_periodMap_of_isNormalizedEigenform_of_dvd21 below · depth 13 - Integral Eichler–Shimura eigenclass at level Nr
CohCarrier.exists_primitive_mem_parabolicHoms_heckeT_eq_smul_level_mul_of_heckeTLin_eq_smul_of_notMem195 below · depth 14 - Nonzero level-N form with prescribed T_ℓ and U_q eigenvalues
CuspForm.exists_ne_zero_heckeTLin_eq_smul_heckeULin_eq_of_isNewform_of_sq_dvd6 below · depth 14 - T_{ℓ_0} lies in the algebra generated by T_ℓ, ℓ notin S
CuspForm.heckeTLin_mem_adjoin_heckeTLin_of_finite99 below · depth 14 - At prime level ℓ: U_ℓ = -w_ℓ on S₂(Γ₀(ℓ))
CuspForm.heckeULin_eq_neg_atkinLehnerLin_of_prime_level4 below · depth 14 - Self-adjointness of Tₚ for the Petersson product at p ∤ N
CuspForm.petersson_heckeTLin0 below · depth 14 - Vanishing of coefficients coprime to the level for Hecke eigenvectors
CuspForm.qCoeff_eq_zero_of_coprime_of_forall_heckeTLin_eq_smul_of_qCoeff_one_eq_zero1 below · depth 14 - Good Hecke eigenvectors span S₂(Γ₀(M))
CuspForm.span_heckeTLin_eigen_eq_top21 below · depth 14 - Integral parabolic mod-p eigenclass attached to a Hecke eigenform
HeckeEis.exists_coeffH1par_int_modp_eigenclass_of_eigenform46 below · depth 14 - The Hecke algebra of Sₙ₊₂(Γ₀(N)) is ℤ-finite
HeckeEis.finite_int_heckeAlgebra45 below · depth 14 - Hecke-equivariant Eichler–Shimura map into H¹ at H=top
CohCarrier.exists_eichlerShimura_H1_top582 below · depth 15 - U_q lowers the level when q² divides it
CuspForm.exists_coe_eq_heckeU_of_mul_eq_of_dvd0 below · depth 15 - Trace of f∣ D_q over Γ₀(qN₀)-cosets equals a_q f
CuspForm.IsNewform.sum_range_slash_heckeDiagMatrix_conj_eq_qCoeff_smul69 below · depth 16 - Oldforms at p∤ M in weight two: eigensystem descent
CuspForm.exists_eq_rescaleLin_add_rescaleLin_of_heckeTLin_eq_smul_of_exists_level101 below · depth 16 - U_q on S₂(Γ₀(N)) killed by X R(X) with R(0)∣ qᵃ
CuspForm.exists_heckeULin_mul_aeval_eq_zero_of_sq_dvd_of_not_cube_dvd95 below · depth 16 - U_q acts by a_q(g) on the g-eigenpacket
CuspForm.heckeULin_eq_qCoeff_smul_of_isNewform_of_dvd_of_not_dvd_div100 below · depth 16 - Cuspidal T_q-eigenvalues at good primes lie below q+1
CuspForm.norm_lt_of_heckeTLin_eq_smul8 below · depth 16 - Lower-unipotent coset sum of the doubly q-rescaled cusp form
CuspForm.sum_range_slash_heckeDiagMatrix_heckeDiagMatrix_conj_eq3 below · depth 16 - Hecke equivariance of Eichler integrals on H¹(Γ₀(N),Symⁿ)
HeckeEis.coeffH1Mk_cocycle_heckeTLin_modularForm3 below · depth 16 - Eigensystems in H¹(Γ₀(N),Symⁿ) arise from weight n+2 forms
HeckeEis.exists_modularForm_heckeTLin_eq_smul_of_isEigensystemH1677 below · depth 16 - Eichler–Shimura mod p: eigensystems occur in H¹(Γ₀(N),Symⁿ)
HeckeEis.isEigensystemH1_binaryFormRepSL_of_heckeTLin_eq_smul24 below · depth 16 - Hecke operators Tₚ, T_q on M_k(Γ₀(N)) commute
ModularForm.heckeTLin_comm7 below · depth 16 - Annihilating polynomial for U_q when q² exactly divides N
CuspForm.exists_heckeULin_mul_aeval_eq_zero_isIntegral_of_sq_dvd_of_not_cube_dvd89 below · depth 17 - Trace of the rescaling equals T_{q'}
CuspForm.traceLin_rescaleLin1 below · depth 17 - Hecke-equivariant Eichler–Shimura decomposition of parabolic cohomology
HeckeEis.exists_eichlerShimura_coeffH1par_binaryFormRepSL645 below · depth 17 - Boundary Hecke eigensystems arise from modular forms
HeckeEis.exists_modularForm_heckeTLin_eq_smul_of_notMem_range_coeffH1parToH143 below · depth 17 - Determinant of Uₚ on S₂(Γ₀(Rp)) is ± p^{dim S₂(Γ₀(R))}
CuspForm.det_heckeULin_two_eq_pow_finrank_or_eq_neg17 below · depth 18 - Uᵣ-eigenvalues are roots of X²-aᵣ(g₀)X+r
CuspForm.sq_sub_qCoeff_mul_add_eq_zero_of_heckeULin_eq_smul_of_isNewform101 below · depth 18 - Trace of the second oldform embedding is T_q
CuspForm.traceLin_of_coe_eq_slash_heckeDiagMatrix0 below · depth 18 - Multiplicity one: the Hecke eigenspace of a newform is its line
CuspForm.IsNewform.iInf_eigenspace_heckeTLin_eq_span_singleton101 below · depth 21