Skip to content

Commit b580ec5

Browse files
committed
feat(RingTheory/Coalgebra/Convolution): Algebra instance on convolution semiring (#39629)
This PR completes the algebraic structure on the convolution object.
1 parent 7a40523 commit b580ec5

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

Mathlib/RingTheory/Coalgebra/Convolution.lean

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ public import Mathlib.Tactic.SuppressCompilation
1616
/-!
1717
# Convolution product on linear maps from a coalgebra to an algebra
1818
19-
This file constructs the ring structure on linear maps `C → A` where `C` is a coalgebra and `A` an
20-
algebra, where multiplication is given by `(f * g)(x) = ∑ f x₍₁₎ * g x₍₂₎` in Sweedler notation or
19+
This file constructs the ring and algebra structure on linear maps `C → A` where `C` is a
20+
coalgebra and `A` an algebra, where multiplication is given by
21+
`(f * g)(x) = ∑ f x₍₁₎ * g x₍₂₎` in Sweedler notation or
2122
```
2223
|
2324
μ
@@ -43,7 +44,7 @@ suppress_compilation
4344
open Coalgebra TensorProduct WithConv
4445
open scoped RingTheory.LinearMap
4546

46-
variable {R A B C ι : Type*} [CommSemiring R]
47+
variable {R S A B C ι : Type*} [CommSemiring R]
4748

4849
namespace LinearMap
4950
section NonUnitalNonAssocSemiring
@@ -74,6 +75,14 @@ instance convNonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (WithConv (C
7475
zero_mul f := by ext; simp
7576
mul_zero f := by ext; simp
7677

78+
instance [Monoid S] [DistribMulAction S A] [SMulCommClass R S A] [IsScalarTower S A A] :
79+
IsScalarTower S (WithConv (C →ₗ[R] A)) (WithConv (C →ₗ[R] A)) where
80+
smul_assoc s f g := by ext c; simp [(ℛ R c).convMul_apply, Finset.smul_sum, smul_mul_assoc]
81+
82+
instance [Monoid S] [DistribMulAction S A] [SMulCommClass R S A] [SMulCommClass S A A] :
83+
SMulCommClass S (WithConv (C →ₗ[R] A)) (WithConv (C →ₗ[R] A)) where
84+
smul_comm s f g := by ext c; simp [(ℛ R c).convMul_apply, Finset.smul_sum, mul_smul_comm]
85+
7786
@[simp] lemma toSpanSingleton_convMul_toSpanSingleton (x y : A) :
7887
toConv (toSpanSingleton R A x) * toConv (toSpanSingleton R A y) =
7988
toConv (toSpanSingleton R A (x * y)) := by ext; simp
@@ -174,6 +183,15 @@ instance convSemiring : Semiring (WithConv (C →ₗ[R] A)) where
174183
one_mul f := by ext; simp [convOne_def, ← map_comp_rTensor]
175184
mul_one f := by ext; simp [convOne_def, ← map_comp_lTensor]
176185

186+
/-- Convolution algebra structure on linear maps from a coalgebra to an algebra. -/
187+
instance convAlgebra [CommSemiring S] [Algebra S A] [SMulCommClass R S A] :
188+
Algebra S (WithConv (C →ₗ[R] A)) :=
189+
.ofModule smul_mul_assoc mul_smul_comm
190+
191+
@[simp]
192+
lemma convAlgebraMap_apply [CommSemiring S] [Algebra S A] [SMulCommClass R S A] (s : S) (c : C) :
193+
algebraMap S (WithConv (C →ₗ[R] A)) s c = s • algebraMap R A (counit c) := rfl
194+
177195
end Semiring
178196

179197
section CommSemiring

0 commit comments

Comments
 (0)