The level-descent matrices are permuted by Γ₀(N / p) #
Newforms/Descent/Cosets.lean defines the family descendMatrix p N that Miyake's level
descent at a prime p runs over, and leaves open both that the family is a set of coset
representatives and that the associated slash sum descends the level. This file proves neither of
those; it supplies a prerequisite for both: for p ∣ N, right multiplication by an element of
Γ₀(N / p) permutes the family, up to left multiplication by an element of Γ₀(N), and the
Γ₀(N) witness has the lower-right entry of γ modulo N / p. The two cases p² ∣ N and
p ∥ N have different index maps and are proved separately.
The permutation is named rather than left existential, because that is what the descent
consumes: a slash by γ ∈ Γ₀(N / p) sends the summand at v to the summand at the image of v,
and the sum is unchanged only because that map is a bijection of the index set.
The case p² ∣ N #
The hypothesis enters twice. It collapses descendMatrixCount p N to p, so every index is
that of an upper-triangular member; and it gives p ∣ N / p, which places γ in Γ₀(p), and
that is what makes the offset map HeckeRing.GL2.upperTriShift a bijection (descendShift).
The case p ∥ N: the index line #
With p + 1 members the natural index set is the projective line over ZMod p: the
upper-triangular member [1, j; 0, p] sits at the affine point j, the extra member
[1, 0; 0, p] γ_p (for γ_p = descendExtraGamma p N) at ∞ (descendIndexEquiv). On that
line the descent's index map j ↦ (b + j d) / (a + j c) is the Möbius action of moebiusGL
(LinearAlgebra/Matrix/GeneralLinearGroup/MoebiusZMod.lean) at γ reduced modulo p, so it is
a bijection for free (descendIndexShift_bijective): the affine index with a + j c ≡ 0 — which
exists exactly when p ∤ c — goes to ∞, and ∞ comes back to d / c.
The case p ∥ N: the factorisation #
Every case is the general upper-triangular factorisation
HeckeRing.GL2.exists_mem_Gamma0_upperTriRep_mul_of_isUnit, applied to γ twisted by γ_p:
to γ itself at an affine index with a + j c a unit, to γ γ_p⁻¹ at the degenerate affine
index, to γ_p γ at ∞ when p ∤ c, and to γ_p γ γ_p⁻¹ at ∞ when p ∣ c. Since
γ_p ≡ S = [0, -1; 1, 0] (mod p) the twists have computable residues, which is what makes the
denominators units and pins the target indices; since γ_p ≡ 1 (mod N / p) every witness has
the lower-right entry of γ modulo N / p, which is what transporting a nebentypus needs.
Main definitions #
TauCeti.descendShift: atp² ∣ N,HeckeRing.GL2.upperTriShiftcarried toFin (descendMatrixCount p N)alongdescendMatrixCount p N = p.TauCeti.descendIndexEquiv: atp ∥ N,Fin (descendMatrixCount p N) ≃ OnePoint (ZMod p).TauCeti.descendIndexGL:moebiusGLofγmodulop, the element whose action is the descent's index map atp ∥ N.TauCeti.descendIndexShift: that action read back on the index set.
Main results #
TauCeti.cast_descendShift,TauCeti.descendShift_bijective: atp² ∣ Nthe index map isupperTriShifttransported, and a bijection.TauCeti.exists_mem_Gamma0_descendMatrix_mul: atp² ∣ N,descendMatrix p N v * γ = α * descendMatrix p N (descendShift … v)for someα ∈ Γ₀(N)whose lower-right entry isγ 1 1 - γ 1 0 * shift v.TauCeti.descendIndexShift_bijective: atp ∥ Nthe index map is a bijection.TauCeti.exists_mem_Gamma0_descendMatrix_mul_of_not_sq_dvd: atp ∥ N,descendMatrix p N v * γ = α * descendMatrix p N (descendIndexShift … v)for someα ∈ Γ₀(N)withα 1 1 ≡ γ 1 1 (mod N / p); assembled from four private cases, one per value of the index map.TauCeti.descendIndexShift_val_of_isUnit,TauCeti.descendIndexShift_val_of_eq_zero,TauCeti.descendIndexShift_val_of_le_of_ne_zeroandTauCeti.descendIndexShift_val_of_le_of_eq_zero: the value of the index map in each case.
Scope #
A statement uniform in the two cases is not made. The completeness of the family as a coset system, the invariance of the slash sum and the behaviour at cusps are separate statements and none of them is claimed here.
Corresponds to descendCosetList_action_upper_tri_clean (the p² ∣ N case) and to
descendCosetList_action_upper_tri_extra, descendCosetList_action_extra and
descendCosetList_action (the p² ∤ N branch, including its Gamma0MapUnits compatibility) of
the AINTLIB LeanModularForms project
(LeanModularForms/StrongMultiplicityOne/DescentCosets.lean, Chris Birkbeck, commit
2baa76f742bdb4fb8ee323fabba41203bd390e08, Apache-2.0,
https://github.com/CBirkbeck/AINTLIB/tree/main/projects/LeanModularForms). The source
handles the pole by a direct matrix computation and proves bijectivity of the index map by an
injectivity argument on Fin (p + 1); here both come from the projective line.
The offset map on the descent index set. HeckeRing.GL2.upperTriShift carried across
descendMatrixCount p N = p, which holds because p² ∣ N. This is the map the descent's slash
sum reindexes along.
Equations
- TauCeti.descendShift p N hpsq γ v = (finCongr ⋯).symm (HeckeRing.GL2.upperTriShift p γ ((finCongr ⋯) v))
Instances For
The defining property of descendShift: transported to Fin p, it is
HeckeRing.GL2.upperTriShift. Read the map off this rather than off the definition, whose
finCongr plumbing carries a proof argument. Stated with Fin.cast because that, not
finCongr, is the simp normal form.
The same, on underlying naturals, which is the form the descendMatrix branches read.
The offset map is a bijection of the descent index set. The hypothesis is γ ∈ Γ₀(p),
which is all bijectivity needs. The descent acts by γ ∈ Γ₀(N / p), and p² ∣ N puts that group
inside Γ₀(p): a descent caller turns p² ∣ N into p ∣ N / p with
Nat.dvd_div_of_mul_dvd and feeds that to Gamma0_le_Gamma0_of_dvd. Reindexing the descent's
slash sum along this map is what the bijection is for.
The descent family is permuted by Γ₀(N / p) when p² ∣ N. For γ ∈ Γ₀(N / p), the
product descendMatrix p N v * γ is an element of Γ₀(N) times the member of the family at
descendShift p N hpsq γ v — and that map is a bijection, by descendShift_bijective.
The target index is named rather than existentially quantified, because reindexing the descent's slash sum needs the permutation itself, not merely that some member of the family appears.
The lower-right entry of α is given as an equation, as exists_mem_Gamma0_upperTriRep_mul
gives it, rather than as a congruence: the modulus at which it is useful varies with the caller.
Transporting a nebentypus through the descent reads off from it that α and γ agree modulo
N / p, since N / p ∣ γ 1 0.
When p exactly divides N #
When p² does not divide N, the descent's index set is the projective line over
ZMod p. descendMatrixCount p N is p + 1 then, and Fin (p + 1) ≃ Option (Fin p) ≃ Option (ZMod p), which is OnePoint (ZMod p): the upper-triangular members are the affine
points and the extra representative is ∞.
Equations
- TauCeti.descendIndexEquiv p N hpsq = (finCongr ⋯).trans (finSuccEquivLast.trans (ZMod.finEquiv p).optionCongr)
Instances For
An index below p is the affine point it names.
The index p is the point at infinity.
The Möbius element of the descent at γ: moebiusGL of γ reduced modulo p, whose
action on the projective line is the descent's index map j ↦ (b + j d) / (a + j c).
Equations
- TauCeti.descendIndexGL p γ = TauCeti.moebiusGL ((↑γ).map ⇑(Int.castRingHom (ZMod p))) ⋯
Instances For
The value of the descent's Möbius element at an affine point, in the entries of γ.
The value of the descent's Möbius element at the point at infinity.
The degenerate affine index goes to infinity. When a + j c ≡ 0, the offset map has no
affine target — which is why the index set is the projective line, not Fin p.
Infinity comes back to d / c when p ∤ c.
Infinity is fixed when p ∣ c.
The index map when p² does not divide N: the Möbius action of descendIndexGL p γ on
the projective line, read through descendIndexEquiv. It is a bijection
(descendIndexShift_bijective), and the descent's factorisation sends the member of the family
at v to the member at descendIndexShift p N hpsq γ v.
Equations
- TauCeti.descendIndexShift p N hpsq γ v = (TauCeti.descendIndexEquiv p N hpsq).symm (TauCeti.descendIndexGL p γ • (TauCeti.descendIndexEquiv p N hpsq) v)
Instances For
The index map is a bijection, because a group action is.
The value of the index map at an affine index whose denominator is a unit: the offset map's value.
The value of the index map at the degenerate affine index: the extra index p.
The value of the index map at the extra index when p ∣ c: the extra index itself.
The residues of the extra matrix and of its twists #
The four cases of the factorisation #
The value of the index map at the extra index when p ∤ c: the offset map of the twist
γ_p γ at 0, that is d / c.
The descent family is permuted by Γ₀(N / p) when p exactly divides N. For
γ ∈ Γ₀(N / p), the product descendMatrix p N v * γ is an element of Γ₀(N) times the member
of the family at descendIndexShift p N hpsq γ v, a bijection of the index set by
descendIndexShift_bijective; and the Γ₀(N) witness has the lower-right entry of γ modulo
N / p.