Documentation

TauCeti.NumberTheory.HeckeRing.GL2.Gamma0.CosetMap

Comparing the Γ₀(N) and level-one double cosets #

Shimura, Propositions 3.30 and 3.31. Since Γ₀(N) ≤ SL₂(ℤ) and Δ₀(N) ≤ Δ, sending Γ₀(N) α Γ₀(N) to SL₂(ℤ) α SL₂(ℤ) is well defined on double cosets:

noncomputable def toLevelOneCoset :
    HeckeCoset (Delta0 N) ((Gamma0 N).map (mapGL ℚ))
      ((Gamma0 N).map (mapGL ℚ)) →
      HeckeCoset (posDetInt 2) (SLnZ 2) (SLnZ 2)

and it is injective on the cosets whose determinant is coprime to the level (toLevelOneCoset_injOn). Injectivity is the content: two Γ₀(N)-double cosets with the same level-one double coset are recovered from it by intersecting with Δ₀(N), which is exactly doubleCoset_SLnZ_inter_Delta0_eq_doubleCoset_Gamma0_map.

This is the injectivity step towards a later good-prime comparison of R(Γ₀(N), Δ₀(N)) with the level-one Hecke ring. Neither surjectivity nor compatibility with the Hecke-ring operations is proved here: this file compares the two coset types only.

Ported from the AINTLIB LeanModularForms project (LeanModularForms/HeckeRIngs/GLn/CongruenceHecke/Props.lean, Chris Birkbeck, https://github.com/CBirkbeck/AINTLIB/tree/main/projects/LeanModularForms), the cosetMap and shimura_prop_3_31 section. The bespoke Delta0_inclusion there is Submonoid.inclusion here, and AINTLIB's HeckePair bundle is Mathlib's HeckeCoset.

Main definitions #

Main results #

References #

Shimura, Proposition 3.30. Passing from a Γ₀(N)-double coset to the level-one double coset of the same element, as the HeckeCoset.map of the three inclusions Δ₀(N) ≤ Δ, Γ₀(N) ≤ SL₂(ℤ) (twice).

Equations
Instances For

    Coprimality of the determinant to a modulus M, as a predicate on Γ₀(N)-double cosets. At M = N it is CoprimeDet on a representative.

    Equations
    Instances For
      @[simp]

      CoprimeDetCoset reads the determinant of any integral witness of a representative.

      @[simp]

      At the level itself, CoprimeDetCoset is CoprimeDet on any representative.

      This has high simp priority so it fires before the general coprimeDetCoset_mk.

      Shimura, Proposition 3.31. toLevelOneCoset is injective on the double cosets whose determinant is coprime to N: the level-one double coset determines the Γ₀(N) one, because intersecting it with Δ₀(N) returns the latter.