Documentation

TauCeti.NumberTheory.HeckeRing.GL2.Gamma1.Gamma0Conjugation

The double coset of diag(1, p) is stable under conjugation by Γ₀(N) #

The diamond operators act on M_k(Γ₁(N)) through Γ₀(N) ⧸ Γ₁(N), and they commute with Tₚ. On the Hecke-ring side that commutation is not an analytic fact but a statement about double cosets. The diamond ⟨d⟩ is the basis element of Γ₁(N) · g · Γ₁(N) for a g ∈ Γ₀(N), and such a g normalizes Γ₁(N), so products taken with it carry no structure constant (HeckeCosetModule.single_mul_single_of_mem_normalizer, and single_diamondCosetGamma1_mul_single_diamondCosetGamma1 for the diamonds among themselves). Commuting ⟨d⟩ past the basis element of Γ₁(N) · diag(1, p) · Γ₁(N) therefore comes down to one equation between double cosets,

Γ₁(N) · (g · diag(1, p)) · Γ₁(N) = Γ₁(N) · (diag(1, p) · g) · Γ₁(N),

which — g normalizing Γ₁(N), so that a Γ₁(N) factor may be moved across it — is exactly the assertion that conjugating diag(1, p) by g does not leave the double coset. This file proves that assertion, for p prime.

The two branches, and why neither covers the other #

Write g = !![a, b; c, e] ∈ Γ₀(N), so N ∣ c and a e − b c = 1. The conjugate is

g · diag(1, p) · g⁻¹ = !![1 + b c (1 − p), a b (p − 1); c e (1 − p), p + b c (p − 1)],

and membership in the double coset means writing it as τ · diag(1, p) · γ with τ, γ ∈ Γ₁(N).

The coprime branch reads its offset straight off a Bézout pair for e and p, and both outer factors land in Γ₁(N) — the left one because N ∣ c makes the whole lower row divisible by N, the right one because every power of T lies in Γ₁(N).

At a prime the two branches are exhaustive, which is conj_natDiagGL_mem_doubleCoset_of_prime. Neither needs p to be prime on its own, and neither needs a coprimality hypothesis relating p to N: reducing a (p f) − b c = 1 along N ∣ c leaves (a f) p ≡ 1 (mod N), so p is automatically invertible modulo the level wherever the twisted branch needs it.

Main results #

Provenance #

No code is transcribed, and the statement has no counterpart to port. The AINTLIB LeanModularForms project (Chris Birkbeck, Apache-2.0, commit 6d87d596a5372d5b122c47b7082d4c3afa9b7c3b) proves the diamond/Hecke commutation twice, but never on the coset side: HeckeRing.GL2.heckeT_n_comm_diamondOp (HeckeRIngs/GL2/Unified/RingTransport.lean:298) argues on the character eigenspace, where the diamond is the scalar χ(d) and commutation is automatic, and heckeT_p_comm_diamondOp (HeckeRIngs/GL2/HeckeT_p.lean:983) is an operator-level slash identity. Both take the analytic action as given; the double-coset statement below is what a Hecke ring needs, and is proved here from the group law and the matrix entries.

References #

Conjugation by Γ₀(N) fixes the double coset of diag(1, p), when the lower-right entry of the conjugating matrix is coprime to p. The complementary case, where p divides that entry, is conj_natDiagGL_mem_doubleCoset_of_dvd.

Conjugation by Γ₀(N) fixes the double coset of diag(1, p), when p divides the lower-right entry of the conjugating matrix. The complementary case, where that entry is coprime to p, is conj_natDiagGL_mem_doubleCoset_of_isCoprime.