Documentation

Mathlib.Algebra.SkewMonoidAlgebra.Basic

Skew Monoid Algebras #

Given a monoid G acting on a ring k, the skew monoid algebra of G over k is the set of finitely supported functions f : G → k for which addition is defined pointwise and multiplication of two elements f and g is given by the finitely supported function whose value at a is the sum of f x * (x • g y) over all pairs x, y such that x * y = a, where denotes the action of G on k. When this action is trivial, this product is the usual convolution product.

In fact the construction of the skew monoid algebra makes sense when G is not even a monoid, but merely a magma, i.e., when G carries a multiplication which is not required to satisfy any conditions at all, and k is a not-necessarily-associative semiring. In this case the construction yields a not-necessarily-unital, not-necessarily-associative algebra.

Main Definitions #

TODO #

structure SkewMonoidAlgebra (k : Type u_1) (G : Type u_2) [Zero k] :
Type (max u_1 u_2)

The skew monoid algebra of G over k is the type of finite formal k-linear combinations of terms of G, endowed with a skewed convolution product.

Instances For
    @[simp]
    theorem SkewMonoidAlgebra.eta {k : Type u_1} {G : Type u_2} [AddMonoid k] (f : SkewMonoidAlgebra k G) :
    { toFinsupp := f.toFinsupp } = f
    instance SkewMonoidAlgebra.instZero {k : Type u_1} {G : Type u_2} [AddMonoid k] :
    Equations
      instance SkewMonoidAlgebra.instAdd {k : Type u_1} {G : Type u_2} [AddMonoid k] :
      Equations
        Equations
          @[simp]
          theorem SkewMonoidAlgebra.ofFinsupp_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] :
          { toFinsupp := 0 } = 0
          @[simp]
          theorem SkewMonoidAlgebra.ofFinsupp_add {k : Type u_1} {G : Type u_2} [AddMonoid k] {a b : G →₀ k} :
          { toFinsupp := a + b } = { toFinsupp := a } + { toFinsupp := b }
          @[simp]
          theorem SkewMonoidAlgebra.ofFinsupp_smul {k : Type u_1} {G : Type u_2} [AddMonoid k] {S : Type u_3} [SMulZeroClass S k] (a : S) (b : G →₀ k) :
          { toFinsupp := a b } = a { toFinsupp := b }
          @[simp]
          theorem SkewMonoidAlgebra.toFinsupp_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] :
          @[simp]
          theorem SkewMonoidAlgebra.toFinsupp_add {k : Type u_1} {G : Type u_2} [AddMonoid k] (a b : SkewMonoidAlgebra k G) :
          @[simp]
          theorem SkewMonoidAlgebra.toFinsupp_smul {k : Type u_1} {G : Type u_2} [AddMonoid k] {S : Type u_3} [SMulZeroClass S k] (a : S) (b : SkewMonoidAlgebra k G) :
          theorem IsSMulRegular.skewMonoidAlgebra {k : Type u_1} {G : Type u_2} [AddMonoid k] {S : Type u_3} [Monoid S] [DistribMulAction S k] {a : S} (ha : IsSMulRegular k a) :
          @[simp]
          theorem SkewMonoidAlgebra.toFinsupp_inj {k : Type u_1} {G : Type u_2} [AddMonoid k] {a b : SkewMonoidAlgebra k G} :
          theorem SkewMonoidAlgebra.ofFinsupp_inj {k : Type u_1} {G : Type u_2} [AddMonoid k] {a b : G →₀ k} :
          { toFinsupp := a } = { toFinsupp := b } a = b

          A variant of SkewMonoidAlgebra.ofFinsupp_injective in terms of Iff.

          @[simp]
          theorem SkewMonoidAlgebra.toFinsupp_eq_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] {a : SkewMonoidAlgebra k G} :
          a.toFinsupp = 0 a = 0
          @[simp]
          theorem SkewMonoidAlgebra.ofFinsupp_eq_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] {a : G →₀ k} :
          { toFinsupp := a } = 0 a = 0
          Equations
            Equations
              def SkewMonoidAlgebra.support {k : Type u_1} {G : Type u_2} [AddMonoid k] :

              For f : SkewMonoidAlgebra k G, f.support is the set of all a ∈ G such that f a ≠ 0.

              Equations
                Instances For
                  @[simp]
                  theorem SkewMonoidAlgebra.support_ofFinsupp {k : Type u_1} {G : Type u_2} [AddMonoid k] (p : G →₀ k) :
                  { toFinsupp := p }.support = p.support
                  @[simp]
                  theorem SkewMonoidAlgebra.support_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] :
                  @[simp]
                  theorem SkewMonoidAlgebra.support_eq_empty {k : Type u_1} {G : Type u_2} [AddMonoid k] {p : SkewMonoidAlgebra k G} :
                  p.support = p = 0
                  def SkewMonoidAlgebra.coeff {k : Type u_1} {G : Type u_2} [AddMonoid k] :
                  SkewMonoidAlgebra k GGk

                  coeff f a (often denoted f.coeff a) is the coefficient of a in f.

                  Equations
                    Instances For
                      @[simp]
                      theorem SkewMonoidAlgebra.coeff_ofFinsupp {k : Type u_1} {G : Type u_2} [AddMonoid k] (p : G →₀ k) :
                      { toFinsupp := p }.coeff = p
                      @[simp]
                      theorem SkewMonoidAlgebra.coeff_inj {k : Type u_1} {G : Type u_2} [AddMonoid k] (p q : SkewMonoidAlgebra k G) :
                      p.coeff = q.coeff p = q
                      @[simp]
                      theorem SkewMonoidAlgebra.toFinsupp_apply {k : Type u_1} {G : Type u_2} [AddMonoid k] (f : SkewMonoidAlgebra k G) (g : G) :
                      f.toFinsupp g = f.coeff g
                      @[simp]
                      theorem SkewMonoidAlgebra.coeff_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] (g : G) :
                      coeff 0 g = 0
                      @[simp]
                      theorem SkewMonoidAlgebra.mem_support_iff {k : Type u_1} {G : Type u_2} [AddMonoid k] {f : SkewMonoidAlgebra k G} {a : G} :
                      a f.support f.coeff a 0
                      theorem SkewMonoidAlgebra.notMem_support_iff {k : Type u_1} {G : Type u_2} [AddMonoid k] {f : SkewMonoidAlgebra k G} {a : G} :
                      af.support f.coeff a = 0
                      @[deprecated SkewMonoidAlgebra.notMem_support_iff (since := "2025-05-23")]
                      theorem SkewMonoidAlgebra.not_mem_support_iff {k : Type u_1} {G : Type u_2} [AddMonoid k] {f : SkewMonoidAlgebra k G} {a : G} :
                      af.support f.coeff a = 0

                      Alias of SkewMonoidAlgebra.notMem_support_iff.

                      theorem SkewMonoidAlgebra.ext_iff {k : Type u_1} {G : Type u_2} [AddMonoid k] {p q : SkewMonoidAlgebra k G} :
                      p = q ∀ (n : G), p.coeff n = q.coeff n
                      theorem SkewMonoidAlgebra.ext {k : Type u_1} {G : Type u_2} [AddMonoid k] {p q : SkewMonoidAlgebra k G} :
                      (∀ (a : G), p.coeff a = q.coeff a)p = q
                      @[simp]
                      theorem SkewMonoidAlgebra.coeff_add {k : Type u_1} {G : Type u_2} [AddMonoid k] (p q : SkewMonoidAlgebra k G) (a : G) :
                      (p + q).coeff a = p.coeff a + q.coeff a
                      @[simp]
                      theorem SkewMonoidAlgebra.coeff_smul {k : Type u_1} {G : Type u_2} [AddMonoid k] {S : Type u_3} [SMulZeroClass S k] (r : S) (p : SkewMonoidAlgebra k G) (a : G) :
                      (r p).coeff a = r p.coeff a
                      def SkewMonoidAlgebra.single {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) (b : k) :

                      single a b is the finitely supported function with value b at a and zero otherwise.

                      Equations
                        Instances For
                          @[simp]
                          theorem SkewMonoidAlgebra.toFinsupp_single {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) (b : k) :
                          @[simp]
                          theorem SkewMonoidAlgebra.ofFinsupp_single {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) (b : k) :
                          { toFinsupp := Finsupp.single a b } = single a b
                          theorem SkewMonoidAlgebra.coeff_single {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) (b : k) [DecidableEq G] :
                          theorem SkewMonoidAlgebra.coeff_single_apply {k : Type u_1} {G : Type u_2} [AddMonoid k] {a a' : G} {b : k} [Decidable (a = a')] :
                          (single a b).coeff a' = if a = a' then b else 0
                          theorem SkewMonoidAlgebra.single_zero_right {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) :
                          single a 0 = 0
                          @[simp]
                          theorem SkewMonoidAlgebra.single_add {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) (b₁ b₂ : k) :
                          single a (b₁ + b₂) = single a b₁ + single a b₂
                          @[simp]
                          theorem SkewMonoidAlgebra.single_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] (a : G) :
                          single a 0 = 0
                          theorem SkewMonoidAlgebra.single_eq_zero {k : Type u_1} {G : Type u_2} [AddMonoid k] {a : G} {b : k} :
                          single a b = 0 b = 0

                          Group isomorphism between SkewMonoidAlgebra k G and G →₀ k.

                          Equations
                            Instances For
                              @[simp]
                              theorem SkewMonoidAlgebra.toFinsuppAddEquiv_symm_apply {k : Type u_1} {G : Type u_2} [AddMonoid k] (toFinsupp : G →₀ k) :
                              toFinsuppAddEquiv.symm toFinsupp = { toFinsupp := toFinsupp }
                              theorem SkewMonoidAlgebra.smul_single {k : Type u_1} {G : Type u_2} [AddMonoid k] {S : Type u_3} [SMulZeroClass S k] (s : S) (a : G) (b : k) :
                              s single a b = single a (s b)
                              instance SkewMonoidAlgebra.instOne {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] :

                              The unit of the multiplication is single 1 1, i.e. the function that is 1 at 1 and zero elsewhere.

                              Equations
                                theorem SkewMonoidAlgebra.ofFinsupp_one {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] :
                                { toFinsupp := Finsupp.single 1 1 } = 1
                                @[simp]
                                theorem SkewMonoidAlgebra.ofFinsupp_eq_one {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] {a : G →₀ k} :
                                { toFinsupp := a } = 1 a = Finsupp.single 1 1
                                @[simp]
                                theorem SkewMonoidAlgebra.single_one_one {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] :
                                single 1 1 = 1
                                theorem SkewMonoidAlgebra.one_def {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] :
                                1 = single 1 1
                                @[simp]
                                theorem SkewMonoidAlgebra.coeff_one_one {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] :
                                coeff 1 1 = 1
                                theorem SkewMonoidAlgebra.coeff_one {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] {a : G} [Decidable (a = 1)] :
                                coeff 1 a = if a = 1 then 1 else 0
                                theorem SkewMonoidAlgebra.natCast_def {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] (n : ) :
                                n = single 1 n
                                @[simp]
                                theorem SkewMonoidAlgebra.single_nat {k : Type u_1} {G : Type u_2} [One G] [AddMonoidWithOne k] (n : ) :
                                single 1 n = n
                                def SkewMonoidAlgebra.sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] (f : SkewMonoidAlgebra k G) (g : GkN) :
                                N

                                sum f g is the sum of g a (f.coeff a) over the support of f.

                                Equations
                                  Instances For
                                    theorem SkewMonoidAlgebra.sum_def {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] (f : SkewMonoidAlgebra k G) (g : GkN) :
                                    f.sum g = f.toFinsupp.sum g
                                    theorem SkewMonoidAlgebra.sum_def' {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] (f : SkewMonoidAlgebra k G) (g : GkN) :
                                    f.sum g = af.support, g a (f.coeff a)

                                    Unfolded version of sum_def in terms of Finset.sum.

                                    @[simp]
                                    theorem SkewMonoidAlgebra.sum_single_index {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] {a : G} {b : k} {h : GkN} (h_zero : h a 0 = 0) :
                                    (single a b).sum h = h a b
                                    theorem SkewMonoidAlgebra.map_sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} {P : Type u_4} [AddCommMonoid N] [AddCommMonoid P] {H : Type u_5} [FunLike H N P] [AddMonoidHomClass H N P] (h : H) (f : SkewMonoidAlgebra k G) (g : GkN) :
                                    h (f.sum g) = f.sum fun (a : G) (b : k) => h (g a b)
                                    theorem SkewMonoidAlgebra.toFinsupp_sum' {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {k' : Type u_3} {G' : Type u_4} [AddCommMonoid k'] (f : SkewMonoidAlgebra k G) (g : GkSkewMonoidAlgebra k' G') :
                                    (f.sum g).toFinsupp = f.toFinsupp.sum fun (x1 : G) (x2 : k) => (g x1 x2).toFinsupp

                                    Variant where the image of g is a SkewMonoidAlgebra.

                                    theorem SkewMonoidAlgebra.ofFinsupp_sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {k' : Type u_3} {G' : Type u_4} [AddCommMonoid k'] (f : G →₀ k) (g : GkG' →₀ k') :
                                    { toFinsupp := f.sum g } = { toFinsupp := f }.sum fun (x1 : G) (x2 : k) => { toFinsupp := g x1 x2 }
                                    theorem SkewMonoidAlgebra.sum_add_index' {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [AddCommMonoid S] {f g : SkewMonoidAlgebra k G} {h : GkS} (hf : ∀ (i : G), h i 0 = 0) (h_add : ∀ (a : G) (b₁ b₂ : k), h a (b₁ + b₂) = h a b₁ + h a b₂) :
                                    (f + g).sum h = f.sum h + g.sum h

                                    Taking the sum under h is an additive homomorphism, if h is an additive homomorphism. This is a more specific version of SkewMonoidAlgebra.sum_add_index with simpler hypotheses.

                                    theorem SkewMonoidAlgebra.sum_add_index {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [DecidableEq G] [AddCommMonoid S] {f g : SkewMonoidAlgebra k G} {h : GkS} (h_zero : af.support g.support, h a 0 = 0) (h_add : af.support g.support, ∀ (b₁ b₂ : k), h a (b₁ + b₂) = h a b₁ + h a b₂) :
                                    (f + g).sum h = f.sum h + g.sum h

                                    Taking the sum under h is an additive homomorphism, if h is an additive homomorphism. This is a more general version of SkewMonoidAlgebra.sum_add_index'; the latter has simpler hypotheses.

                                    @[simp]
                                    theorem SkewMonoidAlgebra.sum_add {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [AddCommMonoid S] (p : SkewMonoidAlgebra k G) (f g : GkS) :
                                    (p.sum fun (n : G) (x : k) => f n x + g n x) = p.sum f + p.sum g
                                    @[simp]
                                    theorem SkewMonoidAlgebra.sum_zero_index {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [AddCommMonoid S] {f : GkS} :
                                    sum 0 f = 0
                                    @[simp]
                                    theorem SkewMonoidAlgebra.sum_zero {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] {f : SkewMonoidAlgebra k G} :
                                    (f.sum fun (x : G) (x : k) => 0) = 0
                                    theorem SkewMonoidAlgebra.sum_sum_index {α : Type u_3} {β : Type u_4} {M : Type u_5} {N : Type u_6} {P : Type u_7} [AddCommMonoid M] [AddCommMonoid N] [AddCommMonoid P] {f : SkewMonoidAlgebra M α} {g : αMSkewMonoidAlgebra N β} {h : βNP} (h_zero : ∀ (a : β), h a 0 = 0) (h_add : ∀ (a : β) (b₁ b₂ : N), h a (b₁ + b₂) = h a b₁ + h a b₂) :
                                    (f.sum g).sum h = f.sum fun (a : α) (b : M) => (g a b).sum h
                                    @[simp]
                                    theorem SkewMonoidAlgebra.coeff_sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {k' : Type u_3} {G' : Type u_4} [AddCommMonoid k'] {f : SkewMonoidAlgebra k G} {g : GkSkewMonoidAlgebra k' G'} {a₂ : G'} :
                                    (f.sum g).coeff a₂ = f.sum fun (a₁ : G) (b : k) => (g a₁ b).coeff a₂
                                    theorem SkewMonoidAlgebra.sum_mul {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [NonUnitalNonAssocSemiring S] (b : S) (s : SkewMonoidAlgebra k G) {f : GkS} :
                                    s.sum f * b = s.sum fun (a : G) (c : k) => f a c * b
                                    theorem SkewMonoidAlgebra.mul_sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {S : Type u_3} [NonUnitalNonAssocSemiring S] (b : S) (s : SkewMonoidAlgebra k G) {f : GkS} :
                                    b * s.sum f = s.sum fun (a : G) (c : k) => b * f a c
                                    @[simp]
                                    theorem SkewMonoidAlgebra.sum_ite_eq' {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {N : Type u_3} [AddCommMonoid N] [DecidableEq G] (f : SkewMonoidAlgebra k G) (a : G) (b : GkN) :
                                    (f.sum fun (x : G) (v : k) => if x = a then b x v else 0) = if a f.support then b a (f.coeff a) else 0

                                    Analogue of Finsupp.sum_ite_eq' for SkewMonoidAlgebra.

                                    theorem SkewMonoidAlgebra.smul_sum {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {M : Type u_3} {R : Type u_4} [AddCommMonoid M] [DistribSMul R M] {v : SkewMonoidAlgebra k G} {c : R} {h : GkM} :
                                    c v.sum h = v.sum fun (a : G) (b : k) => c h a b
                                    theorem SkewMonoidAlgebra.sum_congr {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {f : SkewMonoidAlgebra k G} {M : Type u_3} [AddCommMonoid M] {g₁ g₂ : GkM} (h : xf.support, g₁ x (f.coeff x) = g₂ x (f.coeff x)) :
                                    f.sum g₁ = f.sum g₂
                                    theorem SkewMonoidAlgebra.induction_on {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {p : SkewMonoidAlgebra k GProp} (f : SkewMonoidAlgebra k G) (zero : p 0) (single : ∀ (g : G) (a : k), p (single g a)) (add : ∀ (f g : SkewMonoidAlgebra k G), p fp gp (f + g)) :
                                    p f
                                    theorem SkewMonoidAlgebra.induction_on' {k : Type u_1} {G : Type u_2} [AddCommMonoid k] [instNonempty : Nonempty G] {p : SkewMonoidAlgebra k GProp} (f : SkewMonoidAlgebra k G) (single : ∀ (g : G) (a : k), p (single g a)) (add : ∀ (f g : SkewMonoidAlgebra k G), p fp gp (f + g)) :
                                    p f

                                    Slightly less general but more convenient version of SkewMonoidAlgebra.induction_on.

                                    theorem SkewMonoidAlgebra.addHom_ext {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {M : Type u_3} [AddZeroClass M] {f g : SkewMonoidAlgebra k G →+ M} (h : ∀ (a : G) (b : k), f (single a b) = g (single a b)) :
                                    f = g

                                    If two additive homomorphisms from SkewMonoidAlgebra k G are equal on each single a b, then they are equal.

                                    theorem SkewMonoidAlgebra.addHom_ext_iff {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {M : Type u_3} [AddZeroClass M] {f g : SkewMonoidAlgebra k G →+ M} :
                                    f = g ∀ (a : G) (b : k), f (single a b) = g (single a b)
                                    def SkewMonoidAlgebra.mapDomain {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} (f : GG') :

                                    Given f : G → G' and v : SkewMonoidAlgebra k G, mapDomain f v : SkewMonoidAlgebra k G' is the finitely supported additive homomorphism whose value at a : G' is the sum of v x over all x such that f x = a. Note that SkewMonoidAlgebra.mapDomain is defined as an AddHom, while MonoidAlgebra.mapDomain is defined as a function.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem SkewMonoidAlgebra.mapDomain_apply {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} (f : GG') (v : SkewMonoidAlgebra k G) :
                                        (mapDomain f) v = v.sum fun (a : G) => single (f a)
                                        theorem SkewMonoidAlgebra.toFinsupp_mapDomain {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} (f : GG') (v : SkewMonoidAlgebra k G) :
                                        theorem SkewMonoidAlgebra.mapDomain_comp {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} {G'' : Type u_4} {f : GG'} {g : G'G''} {v : SkewMonoidAlgebra k G} :
                                        (mapDomain (g f)) v = (mapDomain g) ((mapDomain f) v)
                                        theorem SkewMonoidAlgebra.sum_mapDomain_index {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} {f : GG'} {v : SkewMonoidAlgebra k G} {k' : Type u_5} [AddCommMonoid k'] {h : G'kk'} (h_zero : ∀ (b : G'), h b 0 = 0) (h_add : ∀ (b : G') (m₁ m₂ : k), h b (m₁ + m₂) = h b m₁ + h b m₂) :
                                        ((mapDomain f) v).sum h = v.sum fun (a : G) (m : k) => h (f a) m
                                        theorem SkewMonoidAlgebra.mapDomain_single {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} {f : GG'} {a : G} {b : k} :
                                        (mapDomain f) (single a b) = single (f a) b
                                        theorem SkewMonoidAlgebra.mapDomain_smul {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {G' : Type u_3} {f : GG'} {v : SkewMonoidAlgebra k G} {R : Type u_5} [Monoid R] [DistribMulAction R k] {b : R} :
                                        (mapDomain f) (b v) = b (mapDomain f) v
                                        def SkewMonoidAlgebra.liftNC {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {R : Type u_5} [NonUnitalNonAssocSemiring R] (f : k →+ R) (g : GR) :

                                        A non-commutative version of SkewMonoidAlgebra.lift: given an additive homomorphism f : k →+ R and a homomorphism g : G → R, returns the additive homomorphism from SkewMonoidAlgebra k G such that liftNC f g (single a b) = f b * g a.

                                        If k is a semiring and f is a ring homomorphism and for all x : R, y : G the equality (f (y • x)) * g y = (g y) * (f x)) holds, then the result is a ring homomorphism (see SkewMonoidAlgebra.liftNCRingHom).

                                        If R is a k-algebra and f = algebraMap k R, then the result is an algebra homomorphism called SkewMonoidAlgebra.lift.

                                        Equations
                                          Instances For
                                            @[simp]
                                            theorem SkewMonoidAlgebra.liftNC_single {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {R : Type u_5} [NonUnitalNonAssocSemiring R] (f : k →+ R) (g : GR) (a : G) (b : k) :
                                            (liftNC f g) (single a b) = f b * g a
                                            theorem SkewMonoidAlgebra.eq_liftNC {k : Type u_1} {G : Type u_2} [AddCommMonoid k] {R : Type u_5} [NonUnitalNonAssocSemiring R] (f : k →+ R) (g : GR) (l : SkewMonoidAlgebra k G →+ R) (h : ∀ (a : G) (b : k), l (single a b) = f b * g a) :
                                            l = liftNC f g
                                            instance SkewMonoidAlgebra.instNeg {k : Type u_1} {G : Type u_2} [AddGroup k] :
                                            Equations
                                              @[simp]
                                              theorem SkewMonoidAlgebra.ofFinsupp_neg {k : Type u_1} {G : Type u_2} [AddGroup k] {a : G →₀ k} :
                                              { toFinsupp := -a } = -{ toFinsupp := a }
                                              Equations
                                                @[simp]
                                                @[simp]
                                                theorem SkewMonoidAlgebra.ofFinsupp_sub {k : Type u_1} {G : Type u_2} [AddGroup k] {a b : G →₀ k} :
                                                { toFinsupp := a - b } = { toFinsupp := a } - { toFinsupp := b }
                                                @[simp]
                                                theorem SkewMonoidAlgebra.toFinsupp_sub {k : Type u_1} {G : Type u_2} [AddGroup k] (a b : SkewMonoidAlgebra k G) :
                                                @[simp]
                                                theorem SkewMonoidAlgebra.single_neg {k : Type u_1} {G : Type u_2} [AddGroup k] (a : G) (b : k) :
                                                single a (-b) = -single a b
                                                theorem SkewMonoidAlgebra.intCast_def {k : Type u_1} {G : Type u_2} [AddGroupWithOne k] [One G] (z : ) :
                                                z = single 1 z
                                                theorem SkewMonoidAlgebra.sum_smul_index {k : Type u_1} {G : Type u_2} {N : Type u_3} [AddCommMonoid N] [NonUnitalNonAssocSemiring k] {g : SkewMonoidAlgebra k G} {b : k} {h : GkN} (h0 : ∀ (i : G), h i 0 = 0) :
                                                (b g).sum h = g.sum fun (x1 : G) (x2 : k) => h x1 (b * x2)
                                                theorem SkewMonoidAlgebra.sum_smul_index' {k : Type u_1} {G : Type u_2} {N : Type u_3} {R : Type u_4} [AddCommMonoid k] [DistribSMul R k] [AddCommMonoid N] {g : SkewMonoidAlgebra k G} {b : R} {h : GkN} (h0 : ∀ (i : G), h i 0 = 0) :
                                                (b g).sum h = g.sum fun (x1 : G) (x2 : k) => h x1 (b x2)
                                                @[simp]
                                                theorem SkewMonoidAlgebra.liftNC_one {k : Type u_1} {G : Type u_2} {g_hom : Type u_3} {R : Type u_4} [NonAssocSemiring k] [One G] [Semiring R] [FunLike g_hom G R] [OneHomClass g_hom G R] (f : k →+* R) (g : g_hom) :
                                                (liftNC f g) 1 = 1
                                                instance SkewMonoidAlgebra.instMul {k : Type u_1} {G : Type u_2} [Mul G] [SMul G k] [NonUnitalNonAssocSemiring k] :

                                                The product of f g : SkewMonoidAlgebra k G is the finitely supported function whose value at a is the sum of f x * (x • g y) over all pairs x, y such that x * y = a. (Think of a skew group ring.)

                                                Equations
                                                  theorem SkewMonoidAlgebra.mul_def {k : Type u_1} {G : Type u_2} [Mul G] [SMul G k] [NonUnitalNonAssocSemiring k] {f g : SkewMonoidAlgebra k G} :
                                                  f * g = f.sum fun (a₁ : G) (b₁ : k) => g.sum fun (a₂ : G) (b₂ : k) => single (a₁ * a₂) (b₁ * a₁ b₂)
                                                  theorem SkewMonoidAlgebra.liftNC_mul {k : Type u_1} {G : Type u_2} [Mul G] {R : Type u_3} [Semiring R] [NonAssocSemiring k] [SMul G k] {g_hom : Type u_4} [FunLike g_hom G R] [MulHomClass g_hom G R] (f : k →+* R) (g : g_hom) (a b : SkewMonoidAlgebra k G) (h_comm : ∀ {x y : G}, y a.supportf (y b.coeff x) * g y = g y * f (b.coeff x)) :
                                                  (liftNC f g) (a * b) = (liftNC f g) a * (liftNC f g) b

                                                  Semiring structure #

                                                  def SkewMonoidAlgebra.liftNCRingHom {k : Type u_1} {G : Type u_2} [Semiring k] [Monoid G] [MulSemiringAction G k] {R : Type u_3} [Semiring R] (f : k →+* R) (g : G →* R) (h_comm : ∀ {x : k} {y : G}, f (y x) * g y = g y * f x) :

                                                  liftNC as a RingHom, for when f x and g y commute

                                                  Equations
                                                    Instances For

                                                      Derived instances #

                                                      instance SkewMonoidAlgebra.instRing {k : Type u_1} {G : Type u_2} [Ring k] [Monoid G] [MulSemiringAction G k] :
                                                      Equations
                                                        instance SkewMonoidAlgebra.instDistribSMul {k : Type u_1} {G : Type u_2} {S : Type u_3} [AddMonoid k] [DistribSMul S k] :
                                                        Equations
                                                          instance SkewMonoidAlgebra.instModule {k : Type u_1} {G : Type u_2} {S : Type u_3} [Semiring S] [AddCommMonoid k] [Module S k] :
                                                          Equations
                                                            instance SkewMonoidAlgebra.instIsScalarTower {k : Type u_1} {G : Type u_2} {S₁ : Type u_4} {S₂ : Type u_5} [AddMonoid k] [SMul S₁ S₂] [SMulZeroClass S₁ k] [SMulZeroClass S₂ k] [IsScalarTower S₁ S₂ k] :
                                                            instance SkewMonoidAlgebra.instSMulCommClass {k : Type u_1} {G : Type u_2} {S₁ : Type u_4} {S₂ : Type u_5} [AddMonoid k] [SMulZeroClass S₁ k] [SMulZeroClass S₂ k] [SMulCommClass S₁ S₂ k] :

                                                            Linear equivalence between SkewMonoidAlgebra k G and G →₀ k.

                                                            Equations
                                                              Instances For

                                                                The basis on SkewMonoidAlgebra k G with basis vectors fun i ↦ single i 1

                                                                Equations
                                                                  Instances For
                                                                    def SkewMonoidAlgebra.comapSMul {G : Type u_2} {M : Type u_6} {α : Type u_7} [Monoid G] [MulAction G α] [AddCommMonoid M] :

                                                                    Scalar multiplication acting on the domain.

                                                                    This is not an instance as it would conflict with the action on the range. See the file test/instance_diamonds.lean for examples of such conflicts.

                                                                    Equations
                                                                      Instances For
                                                                        theorem SkewMonoidAlgebra.comapSMul_def {G : Type u_2} {M : Type u_6} {α : Type u_7} [Monoid G] [AddCommMonoid M] [MulAction G α] (g : G) (f : SkewMonoidAlgebra M α) :
                                                                        g f = (mapDomain fun (x : α) => g x) f
                                                                        @[simp]
                                                                        theorem SkewMonoidAlgebra.comapSMul_single {G : Type u_2} {M : Type u_6} {α : Type u_7} [Monoid G] [AddCommMonoid M] [MulAction G α] (g : G) (a : α) (b : M) :
                                                                        g single a b = single (g a) b
                                                                        def SkewMonoidAlgebra.comapMulAction {G : Type u_2} {M : Type u_6} {α : Type u_7} [Monoid G] [AddCommMonoid M] [MulAction G α] :

                                                                        comapSMul is multiplicative

                                                                        Equations
                                                                          Instances For

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

                                                                            Equations
                                                                              Instances For