Hecke Rings: Ring Instance and API #
The Ring (π P β€) instance and user-facing API lemmas for working with Hecke rings.
The Hecke ring is a non-unital semiring (associativity + distributivity).
Equations
- HeckeRing.instNonUnitalSemiring P = { toNonUnitalNonAssocSemiring := HeckeRing.instNonUnitalNonAssocSemiring P, mul_assoc := β― }
The multiplicative identity of the Hecke ring is TSingle (HeckeCoset.one P) 1.
Equations
- HeckeRing.instOneπ P Z = { one := HeckeRing.TSingle P Z (HeckeRing.HeckeCoset.one P) 1 }
The Hecke ring is a non-associative semiring (one is a two-sided identity).
Equations
- One or more equations did not get rendered due to their size.
The Hecke ring is a non-associative ring (semiring + additive inverses).
Equations
- One or more equations did not get rendered due to their size.
Algebra compatibility lemmas #
In mathlib v4.29, Finsupp gains pointwise multiplication instances that conflict with
the Hecke ring's custom convolution multiplication. The lemmas below use the Hecke Ring
instance explicitly so that rw can match the custom Mul.
A basis element with coefficient zero is zero.
The integer cast into the Hecke ring lands on the identity double coset.
When heckeMultiplicity is one on a single output and zero elsewhere, multiplication of
unit-coefficient basis elements produces a single basis element.
Evaluating the multiplication finsupp at a double coset gives heckeMultiplicity.
Right multiplication by HeckeCoset.one is the identity on m.
Left multiplication by HeckeCoset.one is the identity on m.
The support of the multiplication finsupp equals mulSupport.
The multiplicity heckeMultiplicity is nonneg since it is a natural number cast to β€.
Induction principle for Hecke ring elements (basis + accumulation).
Linear induction principle: reduce to zero, single basis elements, and sums.
The action of a basis Hecke element on a basis module element as a sum over orbits.