Documentation

Mathlib.Algebra.MonoidAlgebra.Module

Module structure on monoid algebras #

Main results #

Implementation notes #

We do not state the equivalent of DistribMulAction G (MonoidAlgebra k G) for AddMonoidAlgebra because mathlib does not have the notion of distributive actions of additive groups.

Multiplicative monoids #

instance MonoidAlgebra.distribMulAction {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Monoid R] [Semiring k] [DistribMulAction R k] :
Equations
    instance AddMonoidAlgebra.distribMulAction {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Monoid R] [Semiring k] [DistribMulAction R k] :
    Equations
      instance MonoidAlgebra.module {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring R] [Semiring k] [Module R k] :
      Equations
        instance AddMonoidAlgebra.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] :
          def MonoidAlgebra.basis (R : Type u_6) (k : Type u_7) [Semiring k] :

          The standard basis for a monoid algebra.

          Equations
            Instances For
              def AddMonoidAlgebra.basis (R : Type u_6) (k : Type u_7) [Semiring k] :

              The standard basis for an additive monoid algebra.

              Equations
                Instances For
                  @[simp]
                  theorem MonoidAlgebra.basis_apply {R : Type u_2} (k : Type u_6) [Semiring k] (r : R) :
                  (basis R k) r = single r 1
                  @[simp]
                  theorem AddMonoidAlgebra.basis_apply {R : Type u_2} (k : Type u_6) [Semiring k] (r : R) :
                  (basis R k) r = single r 1

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

                  TODO: Change the type to DistribMulAction Gแตˆแตแตƒ k[G] and then it can be an instance. TODO: Generalise to a group acting on another, instead of just the left multiplication action.

                  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.

                      def MonoidAlgebra.singleDistribMulActionHom {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] [Monoid R] [DistribMulAction R k] (a : G) :

                      MonoidAlgebra.single as a DistribMulActionHom.

                      Equations
                        Instances For
                          theorem MonoidAlgebra.distribMulActionHom_ext' {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] {N : Type u_5} [Monoid R] [AddMonoid N] [DistribMulAction R N] [DistribMulAction R k] {f g : MonoidAlgebra k G โ†’+[R] N} (h : โˆ€ (a : G), f.comp (singleDistribMulActionHom a) = g.comp (singleDistribMulActionHom a)) :
                          f = g

                          A copy of Finsupp.distribMulActionHom_ext' for MonoidAlgebra.

                          theorem AddMonoidAlgebra.distribMulActionHom_ext' {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] {N : Type u_5} [Monoid R] [AddMonoid N] [DistribMulAction R N] [DistribMulAction R k] {f g : AddMonoidAlgebra k G โ†’+[R] N} (h : โˆ€ (a : G), f.comp (singleDistribMulActionHom a) = g.comp (singleDistribMulActionHom a)) :
                          f = g

                          A copy of Finsupp.distribMulActionHom_ext' for AddMonoidAlgebra.

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

                          A copy of Finsupp.lsingle for MonoidAlgebra.

                          Equations
                            Instances For
                              @[reducible, inline]
                              abbrev AddMonoidAlgebra.lsingle {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] [Semiring R] [Module R k] (a : G) :

                              A copy of Finsupp.lsingle for AddMonoidAlgebra.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem MonoidAlgebra.lsingle_apply {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] [Semiring R] [Module R k] (a : G) (b : k) :
                                  (lsingle a) b = single a b
                                  @[simp]
                                  theorem AddMonoidAlgebra.lsingle_apply {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] [Semiring R] [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} [Semiring k] {N : Type u_5} [Semiring R] [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 AddMonoidAlgebra.lhom_ext' {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] {N : Type u_5} [Semiring R] [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
                                  theorem AddMonoidAlgebra.lhom_ext'_iff {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] {N : Type u_5} [Semiring R] [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 MonoidAlgebra.lhom_ext'_iff {k : Type uโ‚} {G : Type uโ‚‚} {R : Type u_2} [Semiring k] {N : Type u_5} [Semiring R] [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_of {R : Type u_2} {M : Type u_4} [Semiring R] [MulOneClass M] (m : M) (r : R) :
                                  r โ€ข (of R M) m = single m r
                                  theorem MonoidAlgebra.of_mem_span_of_iff {R : Type u_2} {M : Type u_4} [Semiring R] [MulOneClass M] {s : Set M} {m : M} [Nontrivial R] :
                                  (of R M) m โˆˆ Submodule.span R (โ‡‘(of R M) '' s) โ†” m โˆˆ s

                                  The image of an element m : M in R[M] belongs the submodule generated by s : Set M if and only if m โˆˆ s.

                                  theorem MonoidAlgebra.mem_closure_of_mem_span_closure {R : Type u_2} {M : Type u_4} [Semiring R] [MulOneClass M] {s : Set M} {m : M} [Nontrivial R] (h : (of R M) m โˆˆ Submodule.span R โ†‘(Submonoid.closure (โ‡‘(of R M) '' s))) :

                                  If the image of an element m : M in R[M] belongs the submodule generated by the closure of some s : Set M then m โˆˆ closure s.

                                  theorem MonoidAlgebra.liftNC_smul {R : Type u_2} {S : Type u_3} {M : Type u_4} [Semiring R] [Semiring S] [MulOneClass M] (f : S โ†’+* R) (g : M โ†’* R) (c : S) (ฯ† : MonoidAlgebra S M) :
                                  (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), โˆ€ v โˆˆ W, (of k G) g โ€ข v โˆˆ W) :

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

                                  Equations
                                    Instances For

                                      Additive monoids #

                                      theorem AddMonoidAlgebra.of'_mem_span {R : Type u_2} {M : Type u_4} [Semiring R] [Nontrivial R] {m : M} {s : Set M} :

                                      The image of an element m : M in R[M] belongs the submodule generated by s : Set M if and only if m โˆˆ s.

                                      theorem AddMonoidAlgebra.mem_closure_of_mem_span_closure {R : Type u_2} {M : Type u_4} [Semiring R] [AddMonoid M] [Nontrivial R] {m : M} {s : Set M} (h : of' R M m โˆˆ Submodule.span R โ†‘(Submonoid.closure (of' R M '' s))) :

                                      If the image of an element m : M in R[M] belongs the submodule generated by the closure of some s : Set M then m โˆˆ closure s.

                                      theorem AddMonoidAlgebra.liftNC_smul {R : Type u_2} {S : Type u_3} {M : Type u_4} [Semiring R] [Semiring S] [AddZeroClass M] (f : S โ†’+* R) (g : Multiplicative M โ†’* R) (c : S) (ฯ† : AddMonoidAlgebra S M) :
                                      (liftNC โ†‘f โ‡‘g) (c โ€ข ฯ†) = f c * (liftNC โ†‘f โ‡‘g) ฯ†