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 #
SkewMonoidAlgebra k G: the skew monoid algebra ofGoverkis the type of finite formalk-linear combinations of terms ofG, endowed with a skewed convolution product.
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.
- ofFinsupp :: (
The natural map from
SkewMonoidAlgebra k GtoG →₀ k.- )
Instances For
Equations
Equations
- SkewMonoidAlgebra.instSMulZeroClass = { smul := fun (s : S) (f : SkewMonoidAlgebra k G) => SkewMonoidAlgebra.smul✝ s f, smul_zero := ⋯ }
Equations
- SkewMonoidAlgebra.instInhabited = { default := 0 }
Equations
For f : SkewMonoidAlgebra k G, f.support is the set of all a ∈ G such that
f.coeff a ≠ 0.
Instances For
Alias of SkewMonoidAlgebra.notMem_support_iff.
single a b is the finitely supported function with value b at a and zero otherwise.
Equations
- SkewMonoidAlgebra.single a b = { toFinsupp := Finsupp.single a b }
Instances For
Group isomorphism between SkewMonoidAlgebra k G and G →₀ k.
Equations
- SkewMonoidAlgebra.toFinsuppAddEquiv = { toFun := SkewMonoidAlgebra.toFinsupp, invFun := SkewMonoidAlgebra.ofFinsupp, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
The unit of the multiplication is single 1 1, i.e. the function that is 1 at 1 and
zero elsewhere.
Equations
- SkewMonoidAlgebra.instOne = { one := SkewMonoidAlgebra.single 1 1 }
Equations
- SkewMonoidAlgebra.instAddMonoidWithOne = { natCast := Nat.unaryCast, toAddMonoid := SkewMonoidAlgebra.instAddMonoid, toOne := SkewMonoidAlgebra.instOne, natCast_zero := ⋯, natCast_succ := ⋯ }
sum f g is the sum of g a (f.coeff a) over the support of f.
Instances For
Unfolded version of sum_def in terms of Finset.sum.
Variant where the image of g is a SkewMonoidAlgebra.
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.
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.
Analogue of Finsupp.sum_ite_eq' for SkewMonoidAlgebra.
Slightly less general but more convenient version of SkewMonoidAlgebra.induction_on.
If two additive homomorphisms from SkewMonoidAlgebra k G are equal on each single a b,
then they are equal.
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
- SkewMonoidAlgebra.mapDomain f = { toFun := fun (v : SkewMonoidAlgebra k G) => v.sum fun (a : G) => SkewMonoidAlgebra.single (f a), map_zero' := ⋯, map_add' := ⋯ }
Instances For
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
- SkewMonoidAlgebra.liftNC f g = (Finsupp.liftAddHom fun (x : G) => (AddMonoidHom.mulRight (g x)).comp f).comp SkewMonoidAlgebra.toFinsuppAddEquiv.toAddMonoidHom
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- SkewMonoidAlgebra.instAddCommGroup = { toAddGroup := SkewMonoidAlgebra.instAddGroup, add_comm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
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
- SkewMonoidAlgebra.instMul = { mul := fun (f g : SkewMonoidAlgebra k G) => f.sum fun (a₁ : G) (b₁ : k) => g.sum fun (a₂ : G) (b₂ : k) => SkewMonoidAlgebra.single (a₁ * a₂) (b₁ * a₁ • b₂) }
Equations
- One or more equations did not get rendered due to their size.
Semiring structure #
Equations
- SkewMonoidAlgebra.instNonUnitalSemiring = { toNonUnitalNonAssocSemiring := SkewMonoidAlgebra.instNonUnitalNonAssocSemiring, mul_assoc := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
liftNC as a RingHom, for when f x and g y commute
Equations
- SkewMonoidAlgebra.liftNCRingHom f g h_comm = { toFun := (↑(SkewMonoidAlgebra.liftNC ↑f ⇑g)).toFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Derived instances #
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- SkewMonoidAlgebra.instCommSemiring = { toSemiring := SkewMonoidAlgebra.instSemiring, mul_comm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- SkewMonoidAlgebra.instDistribSMul = Function.Injective.distribSMul { toFun := SkewMonoidAlgebra.toFinsupp, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
Equations
- SkewMonoidAlgebra.instDistribMulAction = Function.Injective.distribMulAction { toFun := SkewMonoidAlgebra.toFinsupp, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
Equations
- SkewMonoidAlgebra.instModule = Function.Injective.module S { toFun := SkewMonoidAlgebra.toFinsupp, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯
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
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
- SkewMonoidAlgebra.comapSMul = { smul := fun (g : G) => ⇑(SkewMonoidAlgebra.mapDomain fun (x : α) => g • x) }
Instances For
comapSMul is multiplicative
Equations
- SkewMonoidAlgebra.comapMulAction = { toSMul := SkewMonoidAlgebra.comapSMul, one_smul := ⋯, mul_smul := ⋯ }
Instances For
This is not an instance as it conflicts with SkewMonoidAlgebra.distribMulAction
when G = kˣ.
Equations
- SkewMonoidAlgebra.comapDistribMulActionSelf = { toMulAction := SkewMonoidAlgebra.comapMulAction, smul_zero := ⋯, smul_add := ⋯ }
Instances For
single as an AddMonoidHom.
See lsingle for the stronger version as a linear map.
Equations
- SkewMonoidAlgebra.singleAddHom a = { toFun := SkewMonoidAlgebra.single a, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- SkewMonoidAlgebra.singleOneRingHom = { toFun := (↑(SkewMonoidAlgebra.singleAddHom 1)).toFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
If two ring homomorphisms from SkewMonoidAlgebra k G are equal on all single a 1
and single 1 b, then they are equal.
If f : G → H is a multiplicative homomorphism between two monoids and
∀ (a : G) (x : k), a • x = (f a) • x, then mapDomain f is a ring homomorphism
between their skew monoid algebras.
Equations
- SkewMonoidAlgebra.mapDomainRingHom hf = { toFun := (↑(SkewMonoidAlgebra.mapDomain ⇑f)).toFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The embedding of a monoid into its skew monoid algebra.
Equations
- SkewMonoidAlgebra.of k G = { toFun := fun (a : G) => SkewMonoidAlgebra.single a 1, map_one' := ⋯, map_mul' := ⋯ }
Instances For
If two ring homomorphisms from SkewMonoidAlgebra k G are equal on all single a 1
and single 1 b, then they are equal.
See note [partially-applied ext lemmas].
Non-unital, non-associative algebra structure #
single as a DistribMulActionSemiHom.
See also lsingle for the version as a linear map.
Equations
- SkewMonoidAlgebra.DistribMulActionHom.single a = { toFun := (↑(SkewMonoidAlgebra.singleAddHom a)).toFun, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
See note [partially-applied ext lemmas].
Interpret single a as a linear map.
Equations
- SkewMonoidAlgebra.lsingle a = { toFun := (↑(SkewMonoidAlgebra.singleAddHom a)).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Two R-linear maps from SkewMonoidAlgebra M α which agree on each single x y
agree everywhere.
A non_unital k-algebra homomorphism from SkewMonoidAlgebra k G is uniquely defined by its
values on the functions single a 1.
See note [partially-applied ext lemmas].
The instance Algebra k (SkewMonoidAlgebra A G) whenever we have Algebra k A.
In particular this provides the instance Algebra k (SkewMonoidAlgebra k G).
Equations
- One or more equations did not get rendered due to their size.
A k-algebra homomorphism from SkewMonoidAlgebra k G is uniquely defined by its
values on the functions single a 1.