Documentation

Mathlib.Algebra.MonoidAlgebra.Module

Module structure on monoid algebras #

Main results #

Multiplicative monoids #

instance MonoidAlgebra.module {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] :
Equations
instance MonoidAlgebra.faithfulSMul {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring k] [SMulZeroClass R k] [FaithfulSMul R k] [Nonempty G] :

This is not an instance as it conflicts with MonoidAlgebra.distribMulAction when G = kˣ.

Equations
Instances For

    Copies of ext lemmas and bundled singles from Finsupp #

    As MonoidAlgebra is a type synonym, ext will not unfold it to find ext lemmas. We need bundled version of Finsupp.single with the right types to state these lemmas. It is good practice to have those, regardless of the ext issue.

    @[reducible, inline]
    abbrev MonoidAlgebra.lsingle {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] (a : G) :

    A copy of Finsupp.lsingle for MonoidAlgebra.

    Equations
    Instances For
      @[simp]
      theorem MonoidAlgebra.lsingle_apply {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] (a : G) (b : k) :
      (lsingle a) b = single a b
      theorem MonoidAlgebra.lhom_ext' {k : Type u₁} {G : Type u₂} {R : Type u_2} {N : Type u_5} [Semiring R] [Semiring k] [AddCommMonoid N] [Module R N] [Module R k] f g : MonoidAlgebra k G →ₗ[R] N (H : ∀ (x : G), f ∘ₗ lsingle x = g ∘ₗ lsingle x) :
      f = g

      A copy of Finsupp.lhom_ext' for MonoidAlgebra.

      theorem MonoidAlgebra.lhom_ext'_iff {k : Type u₁} {G : Type u₂} {R : Type u_2} {N : Type u_5} [Semiring R] [Semiring k] [AddCommMonoid N] [Module R N] [Module R k] {f g : MonoidAlgebra k G →ₗ[R] N} :
      f = g ∀ (x : G), f ∘ₗ lsingle x = g ∘ₗ lsingle x
      theorem MonoidAlgebra.smul_single' {k : Type u₁} {G : Type u₂} [Semiring k] (c : k) (a : G) (b : k) :
      c single a b = single a (c * b)

      Copy of Finsupp.smul_single' that avoids the MonoidAlgebra = Finsupp defeq abuse.

      theorem MonoidAlgebra.smul_of {k : Type u₁} {G : Type u₂} [Semiring k] [MulOneClass G] (g : G) (r : k) :
      r (of k G) g = single g r
      theorem MonoidAlgebra.liftNC_smul {k : Type u₁} {G : Type u₂} [Semiring k] [MulOneClass G] {R : Type u_5} [Semiring R] (f : k →+* R) (g : G →* R) (c : k) (φ : MonoidAlgebra k G) :
      (liftNC f g) (c φ) = f c * (liftNC f g) φ

      Non-unital, non-associative algebra structure #

      instance MonoidAlgebra.isScalarTower_self (k : Type u₁) {G : Type u₂} {R : Type u_2} [Semiring k] [DistribSMul R k] [Mul G] [IsScalarTower R k k] :
      instance MonoidAlgebra.smulCommClass_self (k : Type u₁) {G : Type u₂} {R : Type u_2} [Semiring k] [DistribSMul R k] [Mul G] [SMulCommClass R k k] :

      Note that if k is a CommSemiring then we have SMulCommClass k k k and so we can take R = k in the below. In other words, if the coefficients are commutative amongst themselves, they also commute with the algebra multiplication.

      instance MonoidAlgebra.smulCommClass_symm_self (k : Type u₁) {G : Type u₂} {R : Type u_2} [Semiring k] [DistribSMul R k] [Mul G] [SMulCommClass k R k] :
      def MonoidAlgebra.submoduleOfSMulMem {k : Type u₁} {G : Type u₂} [CommSemiring k] [Monoid G] {V : Type u_5} [AddCommMonoid V] [Module k V] [Module (MonoidAlgebra k G) V] [IsScalarTower k (MonoidAlgebra k G) V] (W : Submodule k V) (h : ∀ (g : G), vW, (of k G) g v W) :

      A submodule over k which is stable under scalar multiplication by elements of G is a submodule over MonoidAlgebra k G

      Equations
      Instances For

        Additive monoids #

        instance AddMonoidAlgebra.faithfulSMul {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring k] [SMulZeroClass R k] [FaithfulSMul R k] [Nonempty G] :
        instance AddMonoidAlgebra.module {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] :
        Equations
        instance AddMonoidAlgebra.smulCommClass {k : Type u₁} {G : Type u₂} {R : Type u_2} {S : Type u_5} [Semiring k] [SMulZeroClass R k] [SMulZeroClass S k] [SMulCommClass R S k] :

        It is hard to state the equivalent of DistribMulAction G k[G] because we've never discussed actions of additive groups.

        Semiring structure #

        Copies of ext lemmas and bundled singles from Finsupp #

        As AddMonoidAlgebra is a type synonym, ext will not unfold it to find ext lemmas. We need bundled version of Finsupp.single with the right types to state these lemmas. It is good practice to have those, regardless of the ext issue.

        @[reducible, inline]
        abbrev AddMonoidAlgebra.lsingle {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] (a : G) :

        A copy of Finsupp.lsingle for AddMonoidAlgebra.

        Equations
        Instances For
          @[simp]
          theorem AddMonoidAlgebra.lsingle_apply {k : Type u₁} {G : Type u₂} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] (a : G) (b : k) :
          (lsingle a) b = single a b
          theorem AddMonoidAlgebra.lhom_ext' {k : Type u₁} {G : Type u₂} {R : Type u_2} {N : Type u_5} [Semiring R] [Semiring k] [AddCommMonoid N] [Module R N] [Module R k] f g : AddMonoidAlgebra k G →ₗ[R] N (H : ∀ (x : G), f ∘ₗ lsingle x = g ∘ₗ lsingle x) :
          f = g

          A copy of Finsupp.lhom_ext' for AddMonoidAlgebra.

          theorem AddMonoidAlgebra.lhom_ext'_iff {k : Type u₁} {G : Type u₂} {R : Type u_2} {N : Type u_5} [Semiring R] [Semiring k] [AddCommMonoid N] [Module R N] [Module R k] {f g : AddMonoidAlgebra k G →ₗ[R] N} :
          f = g ∀ (x : G), f ∘ₗ lsingle x = g ∘ₗ lsingle x
          theorem AddMonoidAlgebra.liftNC_smul {k : Type u₁} {G : Type u₂} [Semiring k] {R : Type u_5} [AddZeroClass G] [Semiring R] (f : k →+* R) (g : Multiplicative G →* R) (c : k) (φ : MonoidAlgebra k G) :
          (liftNC f g) (c φ) = f c * (liftNC f g) φ

          Non-unital, non-associative algebra structure #

          instance AddMonoidAlgebra.smulCommClass_self (k : Type u₁) {G : Type u₂} {R : Type u_2} [Semiring k] [DistribSMul R k] [Add G] [SMulCommClass R k k] :

          Note that if k is a CommSemiring then we have SMulCommClass k k k and so we can take R = k in the below. In other words, if the coefficients are commutative amongst themselves, they also commute with the algebra multiplication.