Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_Gamma0HeckeOperatorHom

Hecke operators on homomorphisms out of Γ0​(N) via transfer #

Definition: Gamma0HeckeOperatorHom (28f733ff-028e-55e7-b8ef-e2f1bceef18f), by Claude, 2026-09-05.

For natural numbers $N,\ell$ with $\ell\neq 0$ and an additively written abelian group $A$, this module constructs an endomorphism heckeOperatorHom N ℓ A of the group of additive homomorphisms $\mathrm{Hom}(\Gamma_0(N),A)$ (in Lean, Additive ↥(Gamma0 N) →+ A, so for trivial coefficients this is $H^1(\Gamma_0(N),A)$), realising the double-coset recipe for $\alpha=\begin{pmatrix}1&0\\0&\ell\end{pmatrix}$ entirely inside $\Gamma_0(N)$. Three ingredients are defined. First, heckeUpperSL ℓ is the subgroup of $\mathrm{SL}_2(\mathbb{Z})$ cut out by $\ell\mid g_{01}$, and heckeUpper N ℓ is its preimage in $\Gamma_0(N)$; it contains the kernel of the reduction homomorphism gammaZeroRed N ℓ : Gamma0 N →* SL(2, ZMod ℓ) and is therefore of finite index. Second, heckeConjMat ℓ g is the integer matrix $\begin{pmatrix}g_{00}&g_{01}/\ell\\ \ell g_{10}&g_{11}\end{pmatrix}$ (with Int division), characterised when $\ell\mid g_{01}$ by the denominator-free identity $(\mathrm{heckeConjMat}\,\ell\,g)\cdot\alpha=\alpha\cdot g$, whence it is multiplicative, determinant-preserving and injective on matrices with $\ell\mid g_{01}$; it yields an injective group homomorphism heckeConj N ℓ : heckeUpper N ℓ →* Gamma0 N, $\gamma\mapsto\alpha\gamma\alpha^{-1}$, the level being preserved because the lower-left entry is multiplied by $\ell$. Third, a transfer is set up at the level of homomorphisms: resHom H is restriction along $H\hookrightarrow G$, transferAux H g q $=\overline{g\cdot q}^{\,-1}(g\,\overline{q})\in H$ is the transfer cocycle formed with the canonical section $q\mapsto\overline q$ of $G\to G\,⧸\,H$ (satisfying the cocycle identity transferAux_mul), and, for $H$ of finite index, coresHom H sends $\varphi\in\mathrm{Hom}(H,A)$ to $g\mapsto\sum_{q\in G⧸H}\varphi(\mathrm{transferAux}\,H\,g\,q)$. The Hecke operator is pullback along heckeConj N ℓ followed by corestriction from heckeUpper N ℓ to $\Gamma_0(N)$, with heckeOperatorHom_apply giving the explicit sum over $\Gamma_0(N)⧸\mathrm{heckeUpper}\,N\,\ell$; uOperatorHom N A q is the same operator under a $U_q$-style name. Finally HeckeIndexEq N ℓ is the proposition, not a theorem, that $[\Gamma_0(N):\mathrm{heckeUpper}\,N\,\ell]=\ell+1$.

Relation to Mathlib. Built on Mathlib's congruence subgroup Gamma0 and Subgroup.subgroupOf, Subgroup.FiniteIndex machinery; the Hecke subgroup, the conjugation homomorphism by $\mathrm{diag}(1,\ell)$ and the transfer/corestriction on $\mathrm{Hom}(-,A)$ used here are the project's own, and the resulting operator acts on homomorphisms out of $\Gamma_0(N)$ rather than on a space of modular forms.

Where it is used. These operators supply the Hecke (and $U_q$) action on $\mathrm{Hom}(\Gamma_0(N),A)$, i.e. on degree-one cohomology of $\Gamma_0(N)$ with trivial coefficients, which is the shape in which the Hecke action at level $N$ is used on the modular side of the argument.

<!-- Generated by add_prove2me_provenance.py -->

def HeckeEis.alphaMat (ℓ : ℕ) :
Matrix (Fin 2) (Fin 2) ℤ

The diagonal matrix with entries 1 and ℓ used in the Hecke correspondence.

Equations
Instances For
    @[simp]
    theorem HeckeEis.alphaMat_apply_zero_zero (ℓ : ℕ) :
    alphaMat ℓ 0 0 = 1
    @[simp]
    theorem HeckeEis.alphaMat_apply_zero_one (ℓ : ℕ) :
    alphaMat ℓ 0 1 = 0
    @[simp]
    theorem HeckeEis.alphaMat_apply_one_zero (ℓ : ℕ) :
    alphaMat ℓ 1 0 = 0
    @[simp]
    theorem HeckeEis.alphaMat_apply_one_one (ℓ : ℕ) :
    alphaMat ℓ 1 1 = ↑ℓ
    theorem HeckeEis.det_alphaMat (ℓ : ℕ) :
    (alphaMat ℓ).det = ↑ℓ
    theorem HeckeEis.eq_of_mul_alphaMat_eq {ℓ : ℕ} (hℓ : ↑ℓ ≠ 0) {A B : Matrix (Fin 2) (Fin 2) ℤ} (h : A * alphaMat ℓ = B * alphaMat ℓ) :
    A = B
    def HeckeEis.heckeConjMat (ℓ : ℕ) (g : Matrix (Fin 2) (Fin 2) ℤ) :
    Matrix (Fin 2) (Fin 2) ℤ

    Diagonal conjugation dividing the upper-right entry by ℓ and multiplying the lower-left entry by ℓ.

    Equations
    Instances For
      @[simp]
      theorem HeckeEis.heckeConjMat_apply_zero_zero (ℓ : ℕ) (g : Matrix (Fin 2) (Fin 2) ℤ) :
      heckeConjMat ℓ g 0 0 = g 0 0
      @[simp]
      theorem HeckeEis.heckeConjMat_apply_zero_one (ℓ : ℕ) (g : Matrix (Fin 2) (Fin 2) ℤ) :
      heckeConjMat ℓ g 0 1 = g 0 1 / ↑ℓ
      @[simp]
      theorem HeckeEis.heckeConjMat_apply_one_zero (ℓ : ℕ) (g : Matrix (Fin 2) (Fin 2) ℤ) :
      heckeConjMat ℓ g 1 0 = g 1 0 * ↑ℓ
      @[simp]
      theorem HeckeEis.heckeConjMat_apply_one_one (ℓ : ℕ) (g : Matrix (Fin 2) (Fin 2) ℤ) :
      heckeConjMat ℓ g 1 1 = g 1 1
      theorem HeckeEis.heckeConjMat_mul_alphaMat {ℓ : ℕ} {g : Matrix (Fin 2) (Fin 2) ℤ} (hg : ↑ℓ ∣ g 0 1) :
      heckeConjMat ℓ g * alphaMat ℓ = alphaMat ℓ * g
      theorem HeckeEis.dvd_mul_apply_zero_one {ℓ : ℕ} {g h : Matrix (Fin 2) (Fin 2) ℤ} (hg : ↑ℓ ∣ g 0 1) (hh : ↑ℓ ∣ h 0 1) :
      ↑ℓ ∣ (g * h) 0 1
      theorem HeckeEis.heckeConjMat_mul {ℓ : ℕ} (hℓ : ↑ℓ ≠ 0) {g h : Matrix (Fin 2) (Fin 2) ℤ} (hg : ↑ℓ ∣ g 0 1) (hh : ↑ℓ ∣ h 0 1) :
      heckeConjMat ℓ (g * h) = heckeConjMat ℓ g * heckeConjMat ℓ h
      theorem HeckeEis.det_heckeConjMat {ℓ : ℕ} (hℓ : ↑ℓ ≠ 0) {g : Matrix (Fin 2) (Fin 2) ℤ} (hg : ↑ℓ ∣ g 0 1) :
      (heckeConjMat ℓ g).det = g.det
      theorem HeckeEis.heckeConjMat_injective {ℓ : ℕ} (hℓ : ↑ℓ ≠ 0) {g h : Matrix (Fin 2) (Fin 2) ℤ} (hg : ↑ℓ ∣ g 0 1) (hh : ↑ℓ ∣ h 0 1) (e : heckeConjMat ℓ g = heckeConjMat ℓ h) :
      g = h

      The subgroup of SL(2, ℤ) with upper-right entry divisible by ℓ.

      Equations
      Instances For
        @[simp]
        theorem HeckeEis.mem_heckeUpperSL {ℓ : ℕ} {g : Matrix.SpecialLinearGroup (Fin 2) ℤ} :
        g ∈ heckeUpperSL ℓ ↔ ↑ℓ ∣ ↑g 0 1

        The intersection of Γ₀(N) with heckeUpperSL.

        Equations
        Instances For
          theorem HeckeEis.mem_heckeUpper (N ℓ : ℕ) {γ : ↥(CongruenceSubgroup.Gamma0 N)} :
          γ ∈ heckeUpper N ℓ ↔ ↑ℓ ∣ ↑↑γ 0 1

          Reduction modulo ℓ of matrices in Γ₀(N).

          Equations
          Instances For
            def HeckeEis.heckeConjSL (N ℓ : ℕ) [NeZero ℓ] (γ : ↥(heckeUpper N ℓ)) :

            The special linear matrix obtained by diagonal conjugation of a matrix in heckeUpperSL.

            Equations
            Instances For
              @[simp]
              theorem HeckeEis.coe_heckeConjSL (N ℓ : ℕ) [NeZero ℓ] (γ : ↥(heckeUpper N ℓ)) :
              ↑(heckeConjSL N ℓ γ) = heckeConjMat ℓ ↑↑↑γ
              def HeckeEis.heckeConj (N ℓ : ℕ) [NeZero ℓ] :

              The diagonal-conjugation homomorphism from heckeUpper to Γ₀(N).

              Equations
              Instances For
                @[simp]
                theorem HeckeEis.coe_heckeConj (N ℓ : ℕ) [NeZero ℓ] (γ : ↥(heckeUpper N ℓ)) :
                ↑((heckeConj N ℓ) γ) = heckeConjSL N ℓ γ
                def HeckeEis.resHom {G : Type u_1} [Group G] (H : Subgroup G) {A : Type u_2} [AddCommGroup A] :

                Restriction of additive characters to a subgroup.

                Equations
                Instances For
                  @[simp]
                  theorem HeckeEis.resHom_apply {G : Type u_1} [Group G] (H : Subgroup G) {A : Type u_2} [AddCommGroup A] (φ : Additive G →+ A) (γ : ↥H) :
                  ((resHom H) φ) (Additive.ofMul γ) = φ (Additive.ofMul ↑γ)
                  noncomputable def HeckeEis.transferAux {G : Type u_1} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H) :
                  ↥H

                  The subgroup element (g • q).out⁻¹ * g * q.out used in the transfer formula.

                  Equations
                  Instances For
                    @[simp]
                    theorem HeckeEis.coe_transferAux {G : Type u_1} [Group G] (H : Subgroup G) (g : G) (q : G ⧸ H) :
                    ↑(transferAux H g q) = (Quotient.out (g • q))⁻¹ * (g * Quotient.out q)
                    theorem HeckeEis.transferAux_mul {G : Type u_1} [Group G] (H : Subgroup G) (g₁ g₂ : G) (q : G ⧸ H) :
                    transferAux H (g₁ * g₂) q = transferAux H g₁ (g₂ • q) * transferAux H g₂ q
                    noncomputable def HeckeEis.coresHom {G : Type u_1} [Group G] (H : Subgroup G) {A : Type u_2} [AddCommGroup A] [H.FiniteIndex] :

                    Corestriction of additive characters from a finite-index subgroup.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem HeckeEis.coresHom_apply {G : Type u_1} [Group G] (H : Subgroup G) {A : Type u_2} [AddCommGroup A] [H.FiniteIndex] (φ : Additive ↥H →+ A) (g : G) :
                      ((coresHom H) φ) (Additive.ofMul g) = ∑ q : G ⧸ H, φ (Additive.ofMul (transferAux H g q))
                      def HeckeEis.pullbackHom {G : Type u_1} {K : Type u_2} [Group G] [Group K] {A : Type u_3} [AddCommGroup A] (f : G →* K) :

                      Pullback of additive characters along a group homomorphism.

                      Equations
                      Instances For
                        @[simp]
                        theorem HeckeEis.pullbackHom_apply {G : Type u_1} {K : Type u_2} [Group G] [Group K] {A : Type u_3} [AddCommGroup A] (f : G →* K) (φ : Additive K →+ A) (g : G) :
                        ((pullbackHom f) φ) (Additive.ofMul g) = φ (Additive.ofMul (f g))

                        The Hecke operator on additive characters defined by conjugation pullback and corestriction.

                        Equations
                        Instances For
                          @[reducible, inline]

                          The U-operator on additive characters, using the same correspondence formula as heckeOperatorHom.

                          Equations
                          Instances For

                            The Hecke correspondence subgroup has index ℓ + 1.

                            Equations
                            Instances For