Documentation

TauCeti.NumberTheory.HeckeRing.GL2.Gamma0.Diagonal.PrimePower

The diagonal generators of the Γ₀(N) Hecke ring #

This file builds the two generating classes of the Hecke ring R(Γ₀(N), Δ₀(N)) on top of the general diagonal element diagElemGamma0 from Diagonal/Elem.lean, together with the family the Diamond–Shurman recurrence assembles.

The two generators specialise that element: heckeTGeneratorGamma0 p at ![1, p] and heckeTScalarGamma0 p at ![p, p]. The iterated family heckeTGeneratorRecGamma0 p r satisfies T₀ = 1, T₁ = T_p and

T_{r+2} = T_p · T_{r+1} − (p · S_p) · T_r,

which when p shares a factor with the level degenerates to T_r = T_p^r, the scalar term having vanished.

Every declaration here is stated for an arbitrary natural p, and the names say so: they follow heckeTDiag/heckeTScalar/heckeT at level one (GL2/Basic.lean), none of which asks Nat.Prime either. The elements are the classical T_p and T_{p^r} of Γ₀(N) exactly when p is prime — that is the intended reading, and the recurrence is chosen to match it — but nothing below assumes it, so nothing below is named for it.

The composite element assembled over a prime factorisation is not built here; this file supplies the generators it needs, and the per-prime product formula they satisfy.

Main definitions #

Main results #

References #

The diagonal generator of the Γ₀(N) Hecke ring: for 0 < p the class of Γ₀(N)·diag(1, p)·Γ₀(N), including when p shares a factor with the level, and 0 at p = 0. At a prime p this is the classical T_p.

No coprimality is asked of p: the head entry of ![1, p] is 1, which is coprime to every level, so only positivity can send this to the junk branch, and it does exactly at p = 0 (heckeTGeneratorGamma0_zero). No consumer needs 0 < p as a hypothesis, so it is not imposed on the definition.

Equations
Instances For

    The scalar generator of the Γ₀(N) Hecke ring: the class of Γ₀(N)·diag(p, p)·Γ₀(N) when 0 < p and p is coprime to the level, and 0 otherwise. Both halves of the guard bite: heckeTScalarGamma0 1 0 is 0 even though 0 is coprime to the level 1.

    Unlike heckeTGeneratorGamma0 the coprimality here has content, because the head entry of ![p, p] is p. For 0 < p sharing a factor with N the vanishing is a membership fact — diag(p, p) ∉ Δ₀(N) — and mirrors ⟨p⟩ = 0. At p = 0 it is instead a junk-value convention: natDiagGL 2 ![0, 0] is the identity and so does lie in Δ₀(N), but the positivity guard sends the element to 0 at every level, coprime or not.

    Equations
    Instances For

      The diagonal generator as a single. The guard has two halves: coprimality is discharged outright by Nat.coprime_one_left, since the head entry of ![1, p] is 1, and the supplied 0 < p discharges positivity — so past that hypothesis this is the class of the double coset. Named _eq_single rather than _def because it states the two-level unfolding, not the definition; heckeTGeneratorGamma0_def below is the actual defining equation.

      The defining equation of the diagonal generator: it is diagElemGamma0 at ![1, p]. Both generator bodies are sealed, so without this the diagElemGamma0_* API is unreachable for them.

      The defining equation of the scalar generator, the companion of heckeTGeneratorGamma0_def.

      The scalar generator in the coprime branch, where it is nonzero.

      @[simp]

      The scalar generator vanishes when p shares a factor with the level. This is the case that lets the recurrence below be stated without splitting on whether p divides N.

      @[simp]

      At p = 1 the scalar generator is the identity: diag(1, 1) is the identity matrix.

      @[simp]

      At p = 0 the generator vanishes: ![1, 0] is not everywhere positive.

      @[simp]

      At p = 0 the scalar generator vanishes too, for the same reason and at every level. The two generators agreeing here is what the shared positivity guard buys: before it, this one vanished only because 0 is not coprime to N > 1, and so had no unconditional normal form.

      @[simp]

      At p = 1 the generator is the identity for the other reason: diag(1, 1) is the identity matrix, so this is diagElemGamma0_one rather than the degeneracy case above.

      The family generated from heckeTGeneratorGamma0 by the Diamond–Shurman recurrence T₀ = 1, T₁ = T_p and T_{r+2} = T_p · T_{r+1} − (p · S_p) · T_r.

      The recurrence is chosen so that at a prime p the r-th term is the classical T_{p^r}, but it is defined for every natural p and nothing here assumes primality.

      Equations
      Instances For
        @[simp]

        The empty product: T₀ = 1.

        @[simp]

        The first term is the generator itself: T₁ = T_p.

        The r + 2 case of the recurrence, as a rewriting rule. Not a simp lemma: the right-hand side mentions heckeTGeneratorRecGamma0 at two smaller arguments, so it is a recursion to unfold deliberately rather than a normal form to rewrite towards.

        @[simp]

        When p shares a factor with the level the scalar term vanishes and the recurrence degenerates to a power of the generator: T_r = T_p^r.

        @[simp] because this is the normal form once the coprimality hypothesis is in context: it is conditional, so it fires only where ¬ Nat.Coprime p N can be discharged, and leaves the unconditional heckeTGeneratorRecGamma0_zero/_one normal forms alone elsewhere.

        The product formula #

        heckeTGeneratorRecGamma0 is a two-term linear recurrence with D = T_p and S = p · S_p, so a product of two of its terms is an instance of TauCeti.linearRec₂_mul_eq_sum_pow_mul. That is the route heckeT_prime_pow_mul already takes at level one (GL2/Recurrence.lean); the only input beyond the recurrence is that D and S commute.

        theorem HeckeRing.GL2.heckeTGeneratorRecGamma0_mul (N : ℕ) [NeZero N] (p : ℕ) {r s : ℕ} (hrs : r ≤ s) :

        Shimura, Theorem 3.24(3) at level Γ₀(N) — the per-prime product formula: T_{p^r} · T_{p^s} = ∑_{i ≤ r} pⁱ · S_pⁱ · T_{p^{r+s−2i}} for r ≤ s, so that no product of two T-values survives on the right.

        No primality is asked of p, for the same reason the recurrence does not ask it. When p shares a factor with the level S_p = 0, every summand but i = 0 drops and the identity degenerates to T_p^r · T_p^s = T_p^{r+s}.