Definitions/Def_CuspForm_HeckeEvalForms.lean
Evaluating the abstract Hecke algebra on cusp forms
Fix a level N \ge 1 and a weight k \in \mathbb{Z}. The abstract Hecke algebra ModularCurve.HeckeAlg is the polynomial ring \mathbb{Z}[X_\ell] over the type of primes, with X_\ell = ModularCurve.heckeGen \ell; the analytic side is CuspForm.heckeAlgebra N k ∅, the \mathbb{Z}-subalgebra of \operatorname{End}_{\mathbb{C}} S_k(\Gamma_0(N)) generated by the operators heckeTLin for primes \ell \nmid N together with heckeULin for primes q \mid N, no prime being excluded since the exceptional set is empty. Two declarations are made. First, heckeFormsGen N k ℓ assigns to each prime \ell an element of that subalgebra: it is the bundled element heckeAlgebra.U attached to heckeULin when \ell \mid N, and the bundled element heckeAlgebra.T attached to heckeTLin when \ell \nmid N; the two accompanying lemmas record these two branches. Second, heckeEvalForms N k is the ring homomorphism \mathbb{Z}[X_\ell] \to heckeAlgebra N k ∅ obtained as the \mathbb{Z}-algebra evaluation map at the family heckeFormsGen N k, viewed as a map of rings. Its characteristic properties are recorded: the generator X_\ell goes to heckeFormsGen N k ℓ, hence to U_q for q \mid N and to T_\ell for \ell \nmid N; and a constant polynomial C(a), a \in \mathbb{Z}, goes to the image of a under the structure map \mathbb{Z} \to heckeAlgebra N k ∅. Because the assignment is defined for every prime, the target must be the Hecke algebra with empty exceptional set.
Relation to Mathlib
The abstract Hecke algebra is Mathlib's MvPolynomial ring over \mathbb{Z} and the evaluation map is Mathlib's MvPolynomial.aeval; the target, an algebra of Hecke operators on S_k(\Gamma_0(N)) built from slash actions, is the project's own construction.
Where it is used
The homomorphism provides the dictionary between the abstract Hecke algebra, in whose terms eigensystems, Eisenstein ideals and the local conditions at Frobenius are phrased, and operators genuinely acting on cusp forms of level \Gamma_0(N), as needed on the Hecke side of the Eichler–Shimura comparison and in the passage between eigenforms and Galois representations.
References
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005, Chapter 5
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Princeton University Press, 1971, Chapter 3
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 50 lines
- 8 declarations
- used in the statements of 28 theorems and imported by 33 proofs
- imports 2 definition modules
Source file: Definitions/Def_CuspForm_HeckeEvalForms.lean
Imported by
- no other definition module
Declarations
- def
CuspForm.heckeFormsGen - theorem
CuspForm.heckeFormsGen_of_dvd - theorem
CuspForm.heckeFormsGen_of_not_dvd - def
CuspForm.heckeEvalForms - theorem
CuspForm.heckeEvalForms_heckeGen - theorem
CuspForm.heckeEvalForms_heckeGen_of_dvd - theorem
CuspForm.heckeEvalForms_heckeGen_of_not_dvd - theorem
CuspForm.heckeEvalForms_C
Source
import Definitions.Def_CuspForm_HeckeAlgebra import Definitions.Def_HeckeGalois_EichlerShimura set_option autoImplicit false noncomputable section namespace CuspForm variable (N : ℕ) [NeZero N] (k : ℤ) def heckeFormsGen (ℓ : Nat.Primes) : heckeAlgebra N k ∅ := if h : (ℓ : ℕ) ∣ N then heckeAlgebra.U ℓ.2 h (Set.notMem_empty _) else heckeAlgebra.T ℓ.2 h (Set.notMem_empty _) variable {N k} in theorem heckeFormsGen_of_dvd {q : Nat.Primes} (h : (q : ℕ) ∣ N) : heckeFormsGen N k q = heckeAlgebra.U q.2 h (Set.notMem_empty _) := dif_pos h variable {N k} in theorem heckeFormsGen_of_not_dvd {ℓ : Nat.Primes} (h : ¬ (ℓ : ℕ) ∣ N) : heckeFormsGen N k ℓ = heckeAlgebra.T ℓ.2 h (Set.notMem_empty _) := dif_neg h def heckeEvalForms : ModularCurve.HeckeAlg →+* heckeAlgebra N k ∅ := (MvPolynomial.aeval (heckeFormsGen N k)).toRingHom theorem heckeEvalForms_heckeGen (ℓ : Nat.Primes) : heckeEvalForms N k (ModularCurve.heckeGen ℓ) = heckeFormsGen N k ℓ := MvPolynomial.aeval_X _ ℓ variable {N k} in theorem heckeEvalForms_heckeGen_of_dvd {q : Nat.Primes} (h : (q : ℕ) ∣ N) : heckeEvalForms N k (ModularCurve.heckeGen q) = heckeAlgebra.U q.2 h (Set.notMem_empty _) := by rw [heckeEvalForms_heckeGen, heckeFormsGen_of_dvd h] variable {N k} in theorem heckeEvalForms_heckeGen_of_not_dvd {ℓ : Nat.Primes} (h : ¬ (ℓ : ℕ) ∣ N) : heckeEvalForms N k (ModularCurve.heckeGen ℓ) = heckeAlgebra.T ℓ.2 h (Set.notMem_empty _) := by rw [heckeEvalForms_heckeGen, heckeFormsGen_of_not_dvd h] theorem heckeEvalForms_C (a : ℤ) : heckeEvalForms N k (MvPolynomial.C a) = algebraMap ℤ (heckeAlgebra N k ∅) a := MvPolynomial.aeval_C _ a end CuspForm end
Statements phrased using this module (28)
- Mazur-type bound on T^L/((q^m)+(P^L)^M) for large M
ModularCurve.exists_natCard_heckeLatticeAlgebra_quotient_span_pow_sup_pow_le_natCard_eisensteinPrimaryTorsionBar_quotient_mul_pow2,327 below · depth 12 - Upper transfer bound for I^m-torsion of J₀(N)
ModularCurve.exists_natCard_torsionBySet_jZero_le_sq_natCard_torsionBySet_heckeLatticeAlgebra_quotient_mul_pow776 below · depth 12 - Equal kernels: Hecke algebras on S₂(Γ₀(p)) and on J₀(p)
ModularCurve.ker_heckeEvalForms_latticeRestrict_eq_ker_heckeEvalBar845 below · depth 12 - T/I ≅ ℤ/n at prime level (Mazur II.9.7)
ModularCurve.natCard_heckeLatticeAlgebra_quotient_eisensteinIdeal_eq_eisensteinNumerator1,158 below · depth 12 - Bound for I^m-torsion in the kernel of reduction above 2
ModularCurve.exists_natCard_torsionBySet_pow_inf_ker_reductionModL_le_natCard_heckeLatticeAlgebra_quotient_two_mul_pow2,553 below · depth 13 - Rank-two bound: Hecke quotients against I^m-torsion of J₀(N)
ModularCurve.exists_sq_natCard_heckeLatticeAlgebra_quotient_le_natCard_torsionBySet_mul_pow779 below · depth 13 - Multiplicative-type submodule and pairing of Eisenstein torsion (q ≠ 2)
ModularCurve.exists_submodule_multiplicativeTypeNat_heckeTorsion_span_sup_pairing_heckeLatticeAlgebra_quotient_of_ne_two2,326 below · depth 13 - Surjectivity of the abstract Hecke evaluation on S_k(Γ₀(N))
CuspForm.heckeEvalForms_range_eq_top0 below · depth 14 - Hecke-equivariant bounded-kernel map on Eisenstein torsion killed by reduction
ModularCurve.exists_addMonoidHom_inf_ker_reductionModL_eisensteinTorsionBar_heckeLatticeAlgebra_quotient_two_pow_natCard_ker_le2,547 below · depth 14 - Hecke-balanced pairing with multiplicative-type left kernel (q odd)
ModularCurve.exists_pairing_heckeTorsion_span_sup_heckeLatticeAlgebra_quotient_of_multiplicativeTypeNat_maximal_of_ne_two2,321 below · depth 14 - Hecke coordinate on multiplicative-type subgroups of J₀(p)[P^m] at 2
ModularCurve.exists_addMonoidHom_heckeLatticeAlgebra_quotient_two_pow_natCard_ker_le_of_multiplicativeTypeNat_le_eisensteinTorsionBar2,544 below · depth 15 - Character detecting inertia eigenvectors in Eisenstein torsion, q odd
ModularCurve.exists_character_generator_heckeTorsion_span_sup_inertiaSubgroupIn_of_ne_two2,072 below · depth 15 - Inertia acts by the cyclotomic character on t· v in the Eisenstein torsion tower
ModularCurve.inertia_smul_smul_eq_nsmul_of_latticeRestrict_heckeEvalForms_mem_span_sup775 below · depth 15 - Inertia eigenvectors force membership in the stable lattice ideal
ModularCurve.latticeRestrict_heckeEvalForms_mem_span_sup_of_inertia_smul_smul_eq_nsmul_of_ne_two2,320 below · depth 15 - Hecke coordinate on inertia displacements in J₀(p)[P^m]
ModularCurve.exists_addSubgroup_le_eisensteinTorsionBar_inertia_smul_sub_mem_addMonoidHom_heckeLatticeAlgebra_quotient_natCard_ker_le2,543 below · depth 16 - A character on the stable Eisenstein torsion of J₀(p)
ModularCurve.exists_character_free_heckeTorsion_span_sup_inertiaSubgroupIn_of_ne_two2,319 below · depth 16 - A generator for Eisenstein torsion inertia-eigenvectors at odd q
ModularCurve.exists_nsmul_generator_heckeTorsion_span_sup_of_inertia_smul_eisensteinMaximalIdeal_smul_eq_nsmul_of_ne_two2,070 below · depth 16 - A Hecke coordinate on inertia-displaced Eisenstein 2-torsion
ModularCurve.exists_addMonoidHom_eisensteinTorsionBar_inf_closure_inertia_smul_sub_heckeLatticeAlgebra_quotient_natCard_ker_le2,542 below · depth 17 - Counting q^k-torsion: #V_M=#R_M·#V_M⁰ for odd q≠ p
ModularCurve.natCard_heckeTorsion_span_sup_eq_natCard_heckeLatticeAlgebra_quotient_mul_natCard_inertia_smul_eq_nsmul_of_ne_two2,314 below · depth 17 - Hecke coordinate with bounded kernel on 2^m-torsion of multiplicative type
ModularCurve.exists_addMonoidHom_torsionBy_two_pow_inf_closure_inertia_smul_sub_heckeLatticeAlgebra_quotient_natCard_ker_le_of_multiplicativeTypeNat2,505 below · depth 18 - Reduced Eisenstein torsion dominates the lattice Hecke quotient
ModularCurve.natCard_heckeLatticeAlgebra_quotient_le_natCard_image_reductionModL_heckeTorsion_span_sup2,221 below · depth 18 - Reduced Eisenstein torsion bounded by lattice Hecke quotient
ModularCurve.natCard_image_reductionModL_heckeTorsion_span_sup_le_natCard_heckeLatticeAlgebra_quotient2,102 below · depth 18 - Hecke coordinates mod 2^m on the inertia part of T₂J₀(p)
ModularCurve.exists_addMonoidHom_family_tateModule_inf_pi_closure_inertia_smul_sub_heckeLatticeAlgebra_quotient_natCard_ker_quotient_le2,503 below · depth 19 - Eisenstein torsion of J₀(p) counted as a square
ModularCurve.natCard_heckeTorsion_span_sup_eq_sq_natCard_heckeLatticeAlgebra_quotient1,033 below · depth 19 - Generator and idempotent tower on the Eisenstein inertia Tate module
ModularCurve.exists_nsmul_generator_idempotent_tower_heckeAlg_tateModule_inf_pi_closure_inertia_smul_sub2,502 below · depth 20 - A 2-adic Eisenstein idempotent tower acting on J₀(p)
ModularCurve.exists_heckeAlg_idempotent_tower_smul_eq_self_of_mem_eisensteinTorsionBar871 below · depth 21 - A uniform 2-adic exponent for torsion annihilators on J₀(p)
ModularCurve.exists_latticeRestrict_heckeEvalForms_mem_span_two_pow_of_forall_smul_eq_zero1,263 below · depth 21 - Inertia-fixed Tate vector with independent Hecke orbit
ModularCurve.exists_tateModule_inertia_fixed_linearIndependent_heckeLatticeAlgebra_orbit816 below · depth 22