Hecke rings: the module of left cosets #
The scalar operations underlying the natural representation of the Hecke ring, following
Shimura, §3.1: on the free module LeftCosetModule Δ H R over the left
cosets Δ/H, each element of 𝕋 Δ H R defines a scalar operation, with a double coset
HgH = ⊔ᵢ σᵢgH sending a left coset βH to Σᵢ βσᵢgH. This file constructs the
left-coset presentation, the orbit Finsets, and the scalar multiplication, and proves it is
additive in both arguments and faithful. Since HgH sends βH to Σᵢ βσᵢgH by right
multiplication, this is right multiplication, encoded as scalar operations of the
opposite ring (𝕋 Δ H R)ᵐᵒᵖ per Mathlib convention. This file provides only the scalar
operations, not yet an action: Shimura's compatibility law (f * g) • m = g • (f • m)
(Proposition 3.2) is exactly mul_smul for the opposite ring, and is established — turning
these scalars into a genuine action — together with the degree homomorphism in the
follow-up development.
Ported from the AINTLIB LeanModularForms project
(HeckeRIngs/AbstractHeckeRing/Module.lean,
https://github.com/CBirkbeck/AINTLIB/tree/main/projects/LeanModularForms), per the
ModularForms roadmap's dependency policy, rebuilt on the left-coset quotient of the vendored
Mathlib stack.
Main definitions #
HeckeCoset.mk_bot_eq_mk_bot: the left cosets ofHwith a representative inΔare the bottom-left double cosetsHeckeCoset Δ ⊥ H(⊥βH = βH); this characterization makes the existing double-coset quotient serve as the left-coset quotient, with no new type.HeckeCoset.smulOrbit H g β: the orbit Finset{βσᵢgH}of a left coset under a double coset representative.- the
SMul (𝕋 Δ H R)ᵐᵒᵖ (LeftCosetModule Δ H R)instance — right multiplication by the Hecke ring in its opposite-ring encoding.
Main results #
HeckeCoset.smulOrbit_congr,HeckeCoset.smulOrbit_disjoint: the orbit depends only on the left coset, and orbits of distinct double cosets are disjoint.HeckeCoset.mk_bot_mem_smulOrbit_iff: membership in an orbit, characterized by membership in the corresponding double coset.LeftCosetModule.instFaithfulSMul: the scalar multiplication of the (opposite) Hecke ring on the module of left cosets is faithful.
The left cosets βH of Δ-elements are the bottom-left specialization HeckeCoset Δ ⊥ H
of the double cosets: ⊥βH = βH. The type, constructor HeckeCoset.mk ⊥ H,
representative HeckeCoset.rep, and induction principle are all reused from the
double-coset API (they are built from the data alone); this section adds only the
⊥-specialized characterizations.
The identity left coset 1H = H in the bottom-left specialization.
Equations
- HeckeCoset.instOneBot Δ = { one := HeckeCoset.mk ⊥ H ⟨1, ⋯⟩ }
In the bottom-left specialization two elements define the same class iff they differ by
an element of H on the right: ⊥β₁H = ⊥β₂H ↔ β₁H = β₂H. This is the entry point through
which the double-coset quotient serves as the left-coset quotient.
The orbit of a left coset representative β under a double coset representative g:
the left cosets βσᵢgH over the decomposition HgH = ⊔ᵢ σᵢgH.
Equations
- HeckeCoset.smulOrbit H g β = Finset.image (fun (i : DoubleCoset.DecompQuotient H H ↑g) => HeckeCoset.mk ⊥ H ⟨↑β * ↑(Quotient.out i) * ↑g, ⋯⟩) Finset.univ
Instances For
The orbit as an explicit image: the defining equation, exported for consumers that count over the enumeration.
Membership in the orbit: the left cosets of the products β · σᵢ · g over the
decomposition representatives.
Membership in an orbit, tested at an arbitrary representative: the left coset ξH lies
in the orbit of g on wH iff w⁻¹ * ξ lies in the double coset HgH.
The orbit is invariant in the acting double-coset representative: representatives of the same double coset produce the same orbit.
The orbit enumeration is injective: distinct decomposition classes give distinct left cosets.
The orbit of a left coset under g has exactly as many elements as the decomposition
HgH = ⊔ᵢ σᵢgH: the map i ↦ βσᵢgH is injective.
Orbits of representatives of distinct double cosets on a common left coset are disjoint.
The left-coset module: the free R-module on the left cosets Δ/H (the bottom-left
Hecke cosets), the carrier of the natural representation of the Hecke ring. An abbrev
of the underlying Finsupp, so the full Finsupp API applies transparently at every
coefficient class — the stable named interface for the scalar operations below.
Equations
- LeftCosetModule Δ H R = (HeckeCoset Δ ⊥ H →₀ R)
Instances For
The scalar multiplication of the Hecke ring on the free module of left cosets: a double
coset scales a left coset by summing over its orbit, extended biadditively. Since HgH
sends βH to the cosets βσᵢgH by right multiplication, the scalars come from the
opposite ring (𝕋 Δ H R)ᵐᵒᵖ, per Mathlib convention. Shimura's compatibility
(f * g) • m = g • (f • m) — precisely mul_smul for the opposite ring, which upgrades
these scalar operations to an action — is proved with the degree homomorphism in the
follow-up development.
Equations
- One or more equations did not get rendered due to their size.
The defining formula of the scalar multiplication.
A basis element of the Hecke ring scales a basis element of the module into its orbit sum.
The scalar multiplication is additive in the (opposite) Hecke-ring argument.
The scalar operations distribute over the module's addition, packaged as the
DistribSMul typeclass (the strongest action class available before the compatibility
law with the convolution product); the generic smul_zero/smul_add supersede
ad-hoc laws.
Equations
- LeftCosetModule.distribSMul = { toSMul := LeftCosetModule.instSMulLeftCosetModule, smul_zero := ⋯, smul_add := ⋯ }
Zero acts as zero and acting on zero gives zero: the SMulWithZero typeclass.
Equations
- LeftCosetModule.smulWithZero = { toSMul := LeftCosetModule.instSMulLeftCosetModule, smul_zero := ⋯, zero_smul := ⋯ }
The scalar multiplication of the Hecke ring on the module of left cosets is faithful.
The scalar operations of the opposite Hecke ring on the left-coset module are faithful, as an instance.