Documentation

LeanPool.LeanModularForms.HeckeRIngs.AbstractHeckeRing.Ring

Hecke Rings: Ring Instance and API #

The Ring (𝕋 P β„€) instance and user-facing API lemmas for working with Hecke rings.

theorem HeckeRing.mul_assoc_𝕋 {G : Type u_1} [Group G] (P : HeckePair G) (f g h : 𝕋 P β„€) :
f * g * h = f * (g * h)

Associativity of multiplication in the Hecke ring, deduced from IsScalarTower and faithfulness of the module action.

@[implicit_reducible]
noncomputable instance HeckeRing.instNonUnitalSemiring {G : Type u_1} [Group G] (P : HeckePair G) :

The Hecke ring is a non-unital semiring (associativity + distributivity).

Equations
@[implicit_reducible]
noncomputable instance HeckeRing.instOne𝕋 {G : Type u_1} [Group G] (P : HeckePair G) (Z : Type u_2) [CommRing Z] :

The multiplicative identity of the Hecke ring is TSingle (HeckeCoset.one P) 1.

Equations
theorem HeckeRing.one_def {G : Type u_1} [Group G] (P : HeckePair G) (Z : Type u_2) [CommRing Z] :

The one element of the Hecke ring unfolds to TSingle (HeckeCoset.one P) 1.

@[implicit_reducible]
noncomputable instance HeckeRing.instNonAssocSemiring {G : Type u_1} [Group G] (P : HeckePair G) :

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.
@[implicit_reducible]
noncomputable instance HeckeRing.instSemiring {G : Type u_1} [Group G] (P : HeckePair G) :

The Hecke ring is a semiring.

Equations
  • One or more equations did not get rendered due to their size.
@[implicit_reducible]
noncomputable instance HeckeRing.instNonAssocRing {G : Type u_1} [Group G] (P : HeckePair G) :

The Hecke ring is a non-associative ring (semiring + additive inverses).

Equations
  • One or more equations did not get rendered due to their size.
@[implicit_reducible]
noncomputable instance HeckeRing.instRing {G : Type u_1} [Group G] (P : HeckePair G) :

The Hecke ring 𝕋 P β„€ is a ring.

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.

theorem HeckeRing.mul_sub {G : Type u_1} [Group G] (P : HeckePair G) (a b c : 𝕋 P β„€) :
a * (b - c) = a * b - a * c
theorem HeckeRing.sub_mul {G : Type u_1} [Group G] (P : HeckePair G) (a b c : 𝕋 P β„€) :
(a - b) * c = a * c - b * c
theorem HeckeRing.mul_assoc {G : Type u_1} [Group G] (P : HeckePair G) (a b c : 𝕋 P β„€) :
a * b * c = a * (b * c)
theorem HeckeRing.mul_add {G : Type u_1} [Group G] (P : HeckePair G) (a b c : 𝕋 P β„€) :
a * (b + c) = a * b + a * c
theorem HeckeRing.add_mul {G : Type u_1} [Group G] (P : HeckePair G) (a b c : 𝕋 P β„€) :
(a + b) * c = a * c + b * c
theorem HeckeRing.pow_succ {G : Type u_1} [Group G] (P : HeckePair G) (a : 𝕋 P β„€) (n : β„•) :
a ^ (n + 1) = a ^ n * a
theorem HeckeRing.pow_succ' {G : Type u_1} [Group G] (P : HeckePair G) (a : 𝕋 P β„€) (n : β„•) :
a ^ (n + 1) = a * a ^ n
theorem HeckeRing.T_single_zero {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) :
TSingle P β„€ D 0 = 0

A basis element with coefficient zero is zero.

theorem HeckeRing.T_single_add {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (a b : β„€) :
TSingle P β„€ D a + TSingle P β„€ D b = TSingle P β„€ D (a + b)

Addition of two basis elements with the same double coset.

theorem HeckeRing.T_single_neg {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (a : β„€) :

Negation of a basis element.

theorem HeckeRing.T_single_sub {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (a b : β„€) :
TSingle P β„€ D a - TSingle P β„€ D b = TSingle P β„€ D (a - b)

Subtraction of two basis elements with the same double coset.

theorem HeckeRing.T_single_smul {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (n a : β„€) :

Scalar multiplication on a basis element.

@[simp]
theorem HeckeRing.intCast_eq {G : Type u_1} [Group G] (P : HeckePair G) (n : β„€) :

The integer cast into the Hecke ring lands on the identity double coset.

theorem HeckeRing.T_single_mul_T_single {G : Type u_1} [Group G] (P : HeckePair G) (D₁ Dβ‚‚ : HeckeCoset P) (a b : β„€) :
TSingle P β„€ D₁ a * TSingle P β„€ Dβ‚‚ b = a β€’ b β€’ m P D₁.rep Dβ‚‚.rep

The product of two basis elements equals the scaled multiplication finsupp.

@[simp]
theorem HeckeRing.T_single_one_mul_T_single_one {G : Type u_1} [Group G] (P : HeckePair G) (D₁ Dβ‚‚ : HeckeCoset P) :
TSingle P β„€ D₁ 1 * TSingle P β„€ Dβ‚‚ 1 = m P D₁.rep Dβ‚‚.rep

The product of two unit-coefficient basis elements is the multiplication finsupp.

theorem HeckeRing.T_single_mul_one {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (a : β„€) :

Right multiplication by 1 is the identity.

theorem HeckeRing.one_mul_T_single {G : Type u_1} [Group G] (P : HeckePair G) (D : HeckeCoset P) (a : β„€) :

Left multiplication by 1 is the identity.

theorem HeckeRing.T_single_one_mul_eq_single {G : Type u_1} [Group G] (P : HeckePair G) (D₁ Dβ‚‚ D_out : HeckeCoset P) (h_one : heckeMultiplicity P D₁.rep Dβ‚‚.rep D_out.rep = 1) (h_zero : βˆ€ (A : HeckeCoset P), A β‰  D_out β†’ heckeMultiplicity P D₁.rep Dβ‚‚.rep A.rep = 0) :
TSingle P β„€ D₁ 1 * TSingle P β„€ Dβ‚‚ 1 = TSingle P β„€ D_out 1

When heckeMultiplicity is one on a single output and zero elsewhere, multiplication of unit-coefficient basis elements produces a single basis element.

@[simp]
theorem HeckeRing.m_apply {G : Type u_1} [Group G] (P : HeckePair G) (g₁ gβ‚‚ : β†₯P.Ξ”) (D : HeckeCoset P) :
(m P g₁ gβ‚‚) D = heckeMultiplicity P g₁ gβ‚‚ D.rep

Evaluating the multiplication finsupp at a double coset gives heckeMultiplicity.

@[simp]

Right multiplication by HeckeCoset.one is the identity on m.

@[simp]

Left multiplication by HeckeCoset.one is the identity on m.

theorem HeckeRing.m_support {G : Type u_1} [Group G] (P : HeckePair G) (g₁ gβ‚‚ : β†₯P.Ξ”) :
(m P g₁ gβ‚‚).support = mulSupport P g₁ gβ‚‚

The support of the multiplication finsupp equals mulSupport.

theorem HeckeRing.heckeMultiplicity_nonneg {G : Type u_1} [Group G] (P : HeckePair G) (g₁ gβ‚‚ d : β†₯P.Ξ”) :
0 ≀ heckeMultiplicity P g₁ gβ‚‚ d

The multiplicity heckeMultiplicity is nonneg since it is a natural number cast to β„€.

theorem HeckeRing.ext_𝕋 {G : Type u_1} [Group G] (P : HeckePair G) {f g : 𝕋 P β„€} (h : βˆ€ (D : HeckeCoset P), f.toFun D = g.toFun D) :
f = g

Extensionality for Hecke ring elements.

theorem HeckeRing.ext_𝕋_iff {G : Type u_1} [Group G] {P : HeckePair G} {f g : 𝕋 P β„€} :
f = g ↔ βˆ€ (D : HeckeCoset P), f.toFun D = g.toFun D
theorem HeckeRing.induction_on_𝕋 {G : Type u_1} [Group G] (P : HeckePair G) {C : 𝕋 P β„€ β†’ Prop} (f : 𝕋 P β„€) (h_zero : C 0) (h_add : βˆ€ (D : HeckeCoset P) (a : β„€) (g : 𝕋 P β„€), D βˆ‰ g.support β†’ a β‰  0 β†’ C g β†’ C (TSingle P β„€ D a + g)) :
C f

Induction principle for Hecke ring elements (basis + accumulation).

theorem HeckeRing.induction_linear_𝕋 {G : Type u_1} [Group G] (P : HeckePair G) {C : 𝕋 P β„€ β†’ Prop} (f : 𝕋 P β„€) (h_zero : C 0) (h_single : βˆ€ (D : HeckeCoset P) (a : β„€), C (TSingle P β„€ D a)) (h_add : βˆ€ (f g : 𝕋 P β„€), C f β†’ C g β†’ C (f + g)) :
C f

Linear induction principle: reduce to zero, single basis elements, and sums.

theorem HeckeRing.sum_single_𝕋 {G : Type u_1} [Group G] (P : HeckePair G) (f : 𝕋 P β„€) :
f = βˆ‘ D ∈ f.support, TSingle P β„€ D (f.toFun D)

Every Hecke ring element is a finite sum of basis elements.

theorem HeckeRing.T_single_smul_HeckeLeftCoset_single {G : Type u_1} [Group G] (P : HeckePair G) (Z : Type u_2) [CommRing Z] (D : HeckeCoset P) (mβ‚€ : HeckeLeftCoset P) (a b : Z) :
TSingle P Z D a β€’ HeckeLeftCosetSingle P Z mβ‚€ b = βˆ‘ i ∈ smulOrbit P D.rep mβ‚€.rep, HeckeLeftCosetSingle P Z i (a * b)

The action of a basis Hecke element on a basis module element as a sum over orbits.