The double coset Γ₀(N) · diag(1, p) · Γ₀(N) at a prime #
The right-coset decomposition of the Γ₀(N) double coset of diag(1, p), the Γ₀(N)
counterpart of Gamma1/CoprimeCosets.lean and Gamma1/UpperTriCosets.lean. At p ∤ N the
representatives are the same p + 1 matrices as over Γ₁(N) — !![1, j; 0, p] for j < p and
the twisted diagonal σ · diag(p, 1), primeRep σ p — and at p ∣ N the p upper-triangular
ones. Injectivity of the representatives and the membership of the twisted one come from the
Γ₁(N) files, since Γ₁(N) ≤ Γ₀(N); what is new is the covering step over Γ₀(N), whose
elements need not have a ≡ 1 (mod N).
The covering step #
For γ = [a, b; c, d] ∈ Γ₀(N): if p ∤ a, the upper-triangular factorisation
exists_mem_Gamma0_upperTriRep_mul_of_isUnit at offset 0 writes diag(1, p) · γ as an element
of Γ₀(N) times !![1, j; 0, p]; if p ∣ a, then
diag(1, p) · γ = [a / p, b; c, p d] · diag(p, 1) with the first factor in Γ₀(N), which is the
coset of σ · diag(p, 1) because σ ∈ Γ₀(N).
Main results #
HeckeRing.GL2.doubleCoset_natDiagGL_Gamma0_eq_iUnion_rightCosets_of_prime: at a primep ∤ N, the union of thep + 1right cosets named byprimeRep σ p.HeckeRing.GL2.doubleCoset_natDiagGL_Gamma0_eq_iUnion_rightCosets_of_dvd: at a primep ∣ N, the union of thepupper-triangular right cosets. Read at the chosen representative ofdiagCosetGamma0 N ![1, p]throughHeckeCoset.toSet_eq_doubleCoset_repanddiagCosetGamma0_toSet, these are the shapes the twisted slash-sum machinery ofHeckeSlash/Nebentypus/Independence.leanconsumes.HeckeRing.GL2.Delta0UpperUnit_upperTriRep,HeckeRing.GL2.Delta0UpperUnit_mapGL_mul_scaleRep: the upper-left unit of either kind of representative is1, so the twisting character ofHeckeSlash/Nebentypus/*is trivial on both.
Provenance #
The coset bookkeeping behind heckeRingHomCharSpace_D_p_eq_scalar_charRestrict of the AINTLIB
LeanModularForms project (LeanModularForms/HeckeRIngs/GL2/Unified/NebentypusHeckeRingHom.lean,
Chris Birkbeck, commit 2baa76f742bdb4fb8ee323fabba41203bd390e08, Apache-2.0,
https://github.com/CBirkbeck/AINTLIB/tree/main/projects/LeanModularForms), reorganised around
this repository's primeRep and doubleCoset_eq_iUnion_rightCosets_of_forall_exists.
When p divides the upper-left entry of γ ∈ Γ₀(N), diag(1, p) · γ factors through the
scaling representative: diag(1, p) · !![a, b; c, d] = !![a / p, b; c, p d] · diag(p, 1), and the
first factor lies in Γ₀(N).
Every diag(1, p) · γ with γ ∈ Γ₀(N) lies in a right coset named by primeRep σ p: at
p ∤ a the upper-triangular factorisation exists_mem_Gamma0_upperTriRep_mul_of_isUnit at offset
0 lands on !![1, j; 0, p]; at p ∣ a the scaling factorisation lands on σ · diag(p, 1)
after absorbing σ⁻¹ ∈ Γ₀(N).
The Γ₀(N) double coset of diag(1, p) at a prime p ∤ N is the union of p + 1 right
cosets, named by the same representatives primeRep σ p as over Γ₁(N): p ∤ N is carried by
the twist σ with bottom row (N, p).
At a prime dividing the level, the Γ₀(N) double coset of diag(1, p) is the union of the
p upper-triangular right cosets: the factorisation
exists_mem_Gamma0_upperTriRep_mul_of_mem_Gamma0 never leaves the family.
The upper-left units of the representatives #
The upper-left unit of an upper-triangular representative is 1.
The upper-left unit of the twisted representative σ · diag(p, 1) is 1: its upper-left
entry is σ₀₀ p ≡ 1 (mod N), by the determinant of σ.