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 ofG
overk
is the type of finite formalk
-linear combinations of terms ofG
, endowed with a skewed convolution product.
TODO #
- some rewrite statements for single, coeff and others (see #10541)
- the algebra instance (see #10541)
- lifting lemmas (see #10541)
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 G
toG →₀ 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 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
- 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 := ⋯ }