Skip to content

Commit ef5ccac

Browse files
Amelia Livingstoneric-wieser101damnations
committed
feat: tensor products of coalgebras (#11975)
Given two `R`-coalgebras `M, N`, we can define a natural comultiplication map `Δ : M ⊗[R] N → (M ⊗[R] N) ⊗[R] (M ⊗[R] N)` and counit map `ε : M ⊗[R] N → R` induced by the comultiplication and counit maps of `M` and `N`. These `Δ, ε` are declared as linear maps in `TensorProduct.instCoalgebraStruct` in `Mathlib.RingTheory.Coalgebra.Basic`. In this PR we show that `Δ, ε` satisfy the axioms of a coalgebra, and also define other data in the monoidal structure on `R`-coalgebras, like the tensor product of two coalgebra morphisms as a coalgebra morphism. Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Amelia Livingston <al3717@ic.ac.uk>
1 parent 7953b15 commit ef5ccac

File tree

6 files changed

+289
-15
lines changed

6 files changed

+289
-15
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3786,6 +3786,7 @@ import Mathlib.RingTheory.ClassGroup
37863786
import Mathlib.RingTheory.Coalgebra.Basic
37873787
import Mathlib.RingTheory.Coalgebra.Equiv
37883788
import Mathlib.RingTheory.Coalgebra.Hom
3789+
import Mathlib.RingTheory.Coalgebra.TensorProduct
37893790
import Mathlib.RingTheory.Complex
37903791
import Mathlib.RingTheory.Congruence.Basic
37913792
import Mathlib.RingTheory.Congruence.BigOperators

Mathlib/Algebra/Category/CoalgebraCat/ComonEquivalence.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Given a commutative ring `R`, this file defines the equivalence of categories be
1515
`R`-coalgebras and comonoid objects in the category of `R`-modules.
1616
1717
We then use this to set up boilerplate for the `Coalgebra` instance on a tensor product of
18-
coalgebras defined in `Mathlib.RingTheory.Coalgebra.TensorProduct` in #11975.
18+
coalgebras defined in `Mathlib.RingTheory.Coalgebra.TensorProduct`.
1919
2020
## Implementation notes
2121

Mathlib/RingTheory/Coalgebra/Basic.lean

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ def Coalgebra.Repr.arbitrary (R : Type u) {A : Type v}
6262
index := TensorProduct.exists_finset (R := R) (CoalgebraStruct.comul a) |>.choose
6363
eq := TensorProduct.exists_finset (R := R) (CoalgebraStruct.comul a) |>.choose_spec.symm
6464

65+
@[inherit_doc Coalgebra.Repr.arbitrary]
66+
scoped[Coalgebra] notation "ℛ" => Coalgebra.Repr.arbitrary
67+
6568
namespace Coalgebra
6669
export CoalgebraStruct (comul counit)
6770
end Coalgebra
@@ -115,6 +118,44 @@ lemma sum_tmul_counit_eq {a : A} (repr : Coalgebra.Repr R a) :
115118
∑ i ∈ repr.index, (repr.left i) ⊗ₜ counit (R := R) (repr.right i) = a ⊗ₜ[R] 1 := by
116119
simpa [← repr.eq, map_sum] using congr($(lTensor_counit_comp_comul (R := R) (A := A)) a)
117120

121+
@[simp]
122+
lemma sum_tmul_tmul_eq {a : A} (repr : Repr R a)
123+
(a₁ : (i : repr.ι) → Repr R (repr.left i)) (a₂ : (i : repr.ι) → Repr R (repr.right i)) :
124+
∑ i in repr.index, ∑ j in (a₁ i).index,
125+
(a₁ i).left j ⊗ₜ[R] (a₁ i).right j ⊗ₜ[R] repr.right i
126+
= ∑ i in repr.index, ∑ j in (a₂ i).index,
127+
repr.left i ⊗ₜ[R] (a₂ i).left j ⊗ₜ[R] (a₂ i).right j := by
128+
simpa [(a₂ _).eq, ← (a₁ _).eq, ← TensorProduct.tmul_sum,
129+
TensorProduct.sum_tmul, ← repr.eq] using congr($(coassoc (R := R)) a)
130+
131+
@[simp]
132+
theorem sum_counit_tmul_map_eq {B : Type*} [AddCommMonoid B] [Module R B]
133+
{F : Type*} [FunLike F A B] [LinearMapClass F R A B] (f : F) (a : A) {repr : Repr R a} :
134+
∑ i in repr.index, counit (R := R) (repr.left i) ⊗ₜ f (repr.right i) = 1 ⊗ₜ[R] f a := by
135+
have := sum_counit_tmul_eq repr
136+
apply_fun LinearMap.lTensor R (f : A →ₗ[R] B) at this
137+
simp_all only [map_sum, LinearMap.lTensor_tmul, LinearMap.coe_coe]
138+
139+
@[simp]
140+
theorem sum_map_tmul_counit_eq {B : Type*} [AddCommMonoid B] [Module R B]
141+
{F : Type*} [FunLike F A B] [LinearMapClass F R A B] (f : F) (a : A) {repr : Repr R a} :
142+
∑ i in repr.index, f (repr.left i) ⊗ₜ counit (R := R) (repr.right i) = f a ⊗ₜ[R] 1 := by
143+
have := sum_tmul_counit_eq repr
144+
apply_fun LinearMap.rTensor R (f : A →ₗ[R] B) at this
145+
simp_all only [map_sum, LinearMap.rTensor_tmul, LinearMap.coe_coe]
146+
147+
@[simp]
148+
theorem sum_map_tmul_tmul_eq {B : Type*} [AddCommMonoid B] [Module R B]
149+
{F : Type*} [FunLike F A B] [LinearMapClass F R A B] (f g h : F) (a : A) {repr : Repr R a}
150+
{a₁ : (i : repr.ι) → Repr R (repr.left i)} {a₂ : (i : repr.ι) → Repr R (repr.right i)} :
151+
∑ i in repr.index, ∑ j in (a₂ i).index,
152+
f (repr.left i) ⊗ₜ (g ((a₂ i).left j) ⊗ₜ h ((a₂ i).right j)) =
153+
∑ i in repr.index, ∑ j in (a₁ i).index,
154+
f ((a₁ i).left j) ⊗ₜ[R] (g ((a₁ i).right j) ⊗ₜ[R] h (repr.right i)) := by
155+
have := sum_tmul_tmul_eq repr a₁ a₂
156+
apply_fun TensorProduct.map (f : A →ₗ[R] B)
157+
(TensorProduct.map (g : A →ₗ[R] B) (h : A →ₗ[R] B)) at this
158+
simp_all only [map_sum, TensorProduct.map_tmul, LinearMap.coe_coe]
118159

119160
end Coalgebra
120161

@@ -284,8 +325,7 @@ open Coalgebra
284325
variable {R A B : Type*} [CommSemiring R] [AddCommMonoid A] [AddCommMonoid B]
285326
[Module R A] [Module R B] [CoalgebraStruct R A] [CoalgebraStruct R B]
286327

287-
/-- The coalgebra instance will be defined in #11975, in
288-
`Mathlib.RingTheory.Coalgebra.TensorProduct`. -/
328+
/-- See `Mathlib.RingTheory.Coalgebra.TensorProduct` for the `Coalgebra` instance. -/
289329
@[simps] instance instCoalgebraStruct :
290330
CoalgebraStruct R (A ⊗[R] B) where
291331
comul := TensorProduct.tensorTensorTensorComm R A A B B ∘ₗ TensorProduct.map comul comul

Mathlib/RingTheory/Coalgebra/Equiv.lean

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,23 @@ def symm (e : A ≃ₗc[R] B) : B ≃ₗc[R] A :=
200200
theorem symm_toLinearEquiv (e : A ≃ₗc[R] B) :
201201
e.symm = (e : A ≃ₗ[R] B).symm := rfl
202202

203+
theorem coe_symm_toLinearEquiv (e : A ≃ₗc[R] B) :
204+
⇑(e : A ≃ₗ[R] B).symm = e.symm := rfl
205+
203206
@[simp]
204207
theorem symm_toCoalgHom (e : A ≃ₗc[R] B) :
205208
((e.symm : B →ₗc[R] A) : B →ₗ[R] A) = (e : A ≃ₗ[R] B).symm := rfl
206209

210+
@[simp]
211+
theorem symm_apply_apply (e : A ≃ₗc[R] B) (x) :
212+
e.symm (e x) = x :=
213+
LinearEquiv.symm_apply_apply (e : A ≃ₗ[R] B) x
214+
215+
@[simp]
216+
theorem apply_symm_apply (e : A ≃ₗc[R] B) (x) :
217+
e (e.symm x) = x :=
218+
LinearEquiv.apply_symm_apply (e : A ≃ₗ[R] B) x
219+
207220
/-- See Note [custom simps projection] -/
208221
def Simps.symm_apply {R : Type*} [CommSemiring R]
209222
{A : Type*} {B : Type*} [AddCommMonoid A] [AddCommMonoid B] [Module R A] [Module R B]
@@ -240,4 +253,35 @@ theorem coe_toEquiv_trans : (e₁₂ : A ≃ B).trans e₂₃ = (e₁₂.trans e
240253
rfl
241254

242255
end
256+
variable [CommSemiring R] [AddCommMonoid A] [Module R A] [Coalgebra R A]
257+
[AddCommMonoid B] [Module R B] [CoalgebraStruct R B]
258+
259+
/-- Let `A` be an `R`-coalgebra and let `B` be an `R`-module with a `CoalgebraStruct`.
260+
A linear equivalence `A ≃ₗ[R] B` that respects the `CoalgebraStruct`s defines an `R`-coalgebra
261+
structure on `B`. -/
262+
@[reducible] def toCoalgebra (f : A ≃ₗc[R] B) :
263+
Coalgebra R B where
264+
coassoc := by
265+
simp only [← ((f : A ≃ₗ[R] B).comp_toLinearMap_symm_eq _ _).2 f.map_comp_comul,
266+
← LinearMap.comp_assoc]
267+
congr 1
268+
ext x
269+
simpa only [toCoalgHom_eq_coe, CoalgHom.toLinearMap_eq_coe, LinearMap.coe_comp,
270+
LinearEquiv.coe_coe, Function.comp_apply, ← (ℛ R _).eq, map_sum, TensorProduct.map_tmul,
271+
LinearMap.coe_coe, CoalgHom.coe_coe, LinearMap.rTensor_tmul, coe_symm_toLinearEquiv,
272+
symm_apply_apply, LinearMap.lTensor_comp_map, TensorProduct.sum_tmul,
273+
TensorProduct.assoc_tmul, TensorProduct.tmul_sum] using (sum_map_tmul_tmul_eq f f f x).symm
274+
rTensor_counit_comp_comul := by
275+
simp_rw [(f.toLinearEquiv.eq_comp_toLinearMap_symm _ _).2 f.counit_comp,
276+
← (f.toLinearEquiv.comp_toLinearMap_symm_eq _ _).2 f.map_comp_comul, ← LinearMap.comp_assoc,
277+
f.toLinearEquiv.comp_toLinearMap_symm_eq]
278+
ext x
279+
simp [← (ℛ R _).eq, coe_symm_toLinearEquiv]
280+
lTensor_counit_comp_comul := by
281+
simp_rw [(f.toLinearEquiv.eq_comp_toLinearMap_symm _ _).2 f.counit_comp,
282+
← (f.toLinearEquiv.comp_toLinearMap_symm_eq _ _).2 f.map_comp_comul, ← LinearMap.comp_assoc,
283+
f.toLinearEquiv.comp_toLinearMap_symm_eq]
284+
ext x
285+
simp [← (ℛ R _).eq, coe_symm_toLinearEquiv]
286+
243287
end CoalgEquiv

Mathlib/RingTheory/Coalgebra/Hom.lean

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -308,16 +308,4 @@ def Repr.induced {a : A} (repr : Repr R a)
308308
eq := (congr($((CoalgHomClass.map_comp_comul φ).symm) a).trans <|
309309
by rw [LinearMap.comp_apply, ← repr.eq, map_sum]; rfl).symm
310310

311-
@[simp]
312-
lemma sum_tmul_counit_apply_eq
313-
{F : Type*} [FunLike F A B] [CoalgHomClass F R A B] (φ : F) {a : A} (repr : Repr R a) :
314-
∑ i ∈ repr.index, counit (R := R) (repr.left i) ⊗ₜ φ (repr.right i) = 1 ⊗ₜ[R] φ a := by
315-
simp [← sum_counit_tmul_eq (repr.induced φ)]
316-
317-
@[simp]
318-
lemma sum_tmul_apply_counit_eq
319-
{F : Type*} [FunLike F A B] [CoalgHomClass F R A B] (φ : F) {a : A} (repr : Repr R a) :
320-
∑ i ∈ repr.index, φ (repr.left i) ⊗ₜ counit (R := R) (repr.right i) = φ a ⊗ₜ[R] 1 := by
321-
simp [← sum_tmul_counit_eq (repr.induced φ)]
322-
323311
end Coalgebra
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
/-
2+
Copyright (c) 2024 Amelia Livingston. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Amelia Livingston
5+
-/
6+
import Mathlib.Algebra.Category.CoalgebraCat.ComonEquivalence
7+
8+
/-!
9+
# Tensor products of coalgebras
10+
11+
Given two `R`-coalgebras `M, N`, we can define a natural comultiplication map
12+
`Δ : M ⊗[R] N → (M ⊗[R] N) ⊗[R] (M ⊗[R] N)` and counit map `ε : M ⊗[R] N → R` induced by
13+
the comultiplication and counit maps of `M` and `N`. These `Δ, ε` are declared as linear maps
14+
in `TensorProduct.instCoalgebraStruct` in `Mathlib.RingTheory.Coalgebra.Basic`.
15+
16+
In this file we show that `Δ, ε` satisfy the axioms of a coalgebra, and also define other data
17+
in the monoidal structure on `R`-coalgebras, like the tensor product of two coalgebra morphisms
18+
as a coalgebra morphism.
19+
20+
## Implementation notes
21+
22+
We keep the linear maps underlying `Δ, ε` and other definitions in this file syntactically equal
23+
to the corresponding definitions for tensor products of modules in the hope that this makes
24+
life easier. However, to fill in prop fields, we use the API in
25+
`Mathlib.Algebra.Category.CoalgebraCat.ComonEquivalence`. That file defines the monoidal category
26+
structure on coalgebras induced by an equivalence with comonoid objects in the category of modules,
27+
`CoalgebraCat.instMonoidalCategoryAux`, but we do not declare this as an instance - we just use it
28+
to prove things. Then, we use the definitions in this file to make a monoidal category instance on
29+
`CoalgebraCat R` in `Mathlib.Algebra.Category.CoalgebraCat.Monoidal` that has simpler data.
30+
31+
However, this approach forces our coalgebras to be in the same universe as the base ring `R`,
32+
since it relies on the monoidal category structure on `ModuleCat R`, which is currently
33+
universe monomorphic. Any contribution that achieves universe polymorphism would be welcome. For
34+
instance, the tensor product of coalgebras in the
35+
[FLT repo](https://github.com/ImperialCollegeLondon/FLT/blob/eef74b4538c8852363936dfaad23e6ffba72eca5/FLT/mathlibExperiments/Coalgebra/TensorProduct.lean)
36+
is already universe polymorphic since it does not go via category theory.
37+
38+
-/
39+
40+
universe v u
41+
42+
open CategoryTheory
43+
open scoped TensorProduct
44+
45+
section
46+
47+
variable {R M N P Q : Type u} [CommRing R]
48+
[AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] [Coalgebra R M] [Coalgebra R N]
49+
50+
open MonoidalCategory in
51+
noncomputable instance TensorProduct.instCoalgebra : Coalgebra R (M ⊗[R] N) :=
52+
let I := Monoidal.transport ((CoalgebraCat.comonEquivalence R).symm)
53+
CoalgEquiv.toCoalgebra
54+
(A := (CoalgebraCat.of R M ⊗ CoalgebraCat.of R N : CoalgebraCat R))
55+
{ LinearEquiv.refl R _ with
56+
counit_comp := rfl
57+
map_comp_comul := by
58+
rw [CoalgebraCat.ofComonObjCoalgebraStruct_comul]
59+
simp [-Mon_.monMonoidalStruct_tensorObj_X,
60+
ModuleCat.MonoidalCategory.instMonoidalCategoryStruct_tensorHom,
61+
ModuleCat.comp_def, ModuleCat.of, ModuleCat.ofHom,
62+
ModuleCat.MonoidalCategory.tensor_μ_eq_tensorTensorTensorComm] }
63+
64+
end
65+
66+
namespace Coalgebra
67+
namespace TensorProduct
68+
69+
open CoalgebraCat.MonoidalCategoryAux MonoidalCategory
70+
71+
variable {R M N P Q : Type u} [CommRing R]
72+
[AddCommGroup M] [AddCommGroup N] [AddCommGroup P] [AddCommGroup Q] [Module R M] [Module R N]
73+
[Module R P] [Module R Q] [Coalgebra R M] [Coalgebra R N] [Coalgebra R P] [Coalgebra R Q]
74+
75+
attribute [local instance] CoalgebraCat.instMonoidalCategoryAux in
76+
section
77+
78+
/-- The tensor product of two coalgebra morphisms as a coalgebra morphism. -/
79+
noncomputable def map (f : M →ₗc[R] N) (g : P →ₗc[R] Q) :
80+
M ⊗[R] P →ₗc[R] N ⊗[R] Q where
81+
toLinearMap := _root_.TensorProduct.map f.toLinearMap g.toLinearMap
82+
counit_comp := by
83+
simp_rw [← tensorHom_toLinearMap]
84+
apply (CoalgebraCat.ofHom f ⊗ CoalgebraCat.ofHom g).1.counit_comp
85+
map_comp_comul := by
86+
simp_rw [← tensorHom_toLinearMap, ← comul_tensorObj]
87+
apply (CoalgebraCat.ofHom f ⊗ CoalgebraCat.ofHom g).1.map_comp_comul
88+
89+
@[simp]
90+
theorem map_tmul (f : M →ₗc[R] N) (g : P →ₗc[R] Q) (x : M) (y : P) :
91+
map f g (x ⊗ₜ y) = f x ⊗ₜ g y :=
92+
rfl
93+
94+
@[simp]
95+
theorem map_toLinearMap (f : M →ₗc[R] N) (g : P →ₗc[R] Q) :
96+
map f g = _root_.TensorProduct.map (f : M →ₗ[R] N) (g : P →ₗ[R] Q) := rfl
97+
98+
variable (R M N P)
99+
100+
/-- The associator for tensor products of R-coalgebras, as a coalgebra equivalence. -/
101+
protected noncomputable def assoc :
102+
(M ⊗[R] N) ⊗[R] P ≃ₗc[R] M ⊗[R] (N ⊗[R] P) :=
103+
{ _root_.TensorProduct.assoc R M N P with
104+
counit_comp := by
105+
simp_rw [← associator_hom_toLinearMap, ← counit_tensorObj_tensorObj_right,
106+
← counit_tensorObj_tensorObj_left]
107+
apply CoalgHom.counit_comp (α_ (CoalgebraCat.of R M) (CoalgebraCat.of R N)
108+
(CoalgebraCat.of R P)).hom.1
109+
map_comp_comul := by
110+
simp_rw [← associator_hom_toLinearMap, ← comul_tensorObj_tensorObj_left,
111+
← comul_tensorObj_tensorObj_right]
112+
exact CoalgHom.map_comp_comul (α_ (CoalgebraCat.of R M)
113+
(CoalgebraCat.of R N) (CoalgebraCat.of R P)).hom.1 }
114+
115+
variable {R M N P}
116+
117+
@[simp]
118+
theorem assoc_tmul (x : M) (y : N) (z : P) :
119+
Coalgebra.TensorProduct.assoc R M N P ((x ⊗ₜ y) ⊗ₜ z) = x ⊗ₜ (y ⊗ₜ z) :=
120+
rfl
121+
122+
@[simp]
123+
theorem assoc_symm_tmul (x : M) (y : N) (z : P) :
124+
(Coalgebra.TensorProduct.assoc R M N P).symm (x ⊗ₜ (y ⊗ₜ z)) = (x ⊗ₜ y) ⊗ₜ z :=
125+
rfl
126+
127+
@[simp]
128+
theorem assoc_toLinearEquiv :
129+
Coalgebra.TensorProduct.assoc R M N P = _root_.TensorProduct.assoc R M N P := rfl
130+
131+
variable (R M)
132+
133+
/-- The base ring is a left identity for the tensor product of coalgebras, up to
134+
coalgebra equivalence. -/
135+
protected noncomputable def lid : R ⊗[R] M ≃ₗc[R] M :=
136+
{ _root_.TensorProduct.lid R M with
137+
counit_comp := by
138+
simp only [← leftUnitor_hom_toLinearMap]
139+
apply CoalgHom.counit_comp (λ_ (CoalgebraCat.of R M)).hom.1
140+
map_comp_comul := by
141+
simp_rw [← leftUnitor_hom_toLinearMap, ← comul_tensorObj]
142+
apply CoalgHom.map_comp_comul (λ_ (CoalgebraCat.of R M)).hom.1 }
143+
144+
variable {R M}
145+
146+
@[simp]
147+
theorem lid_toLinearEquiv :
148+
(Coalgebra.TensorProduct.lid R M) = _root_.TensorProduct.lid R M := rfl
149+
150+
@[simp]
151+
theorem lid_tmul (r : R) (a : M) : Coalgebra.TensorProduct.lid R M (r ⊗ₜ a) = r • a := rfl
152+
153+
@[simp]
154+
theorem lid_symm_apply (a : M) : (Coalgebra.TensorProduct.lid R M).symm a = 1 ⊗ₜ a := rfl
155+
156+
variable (R M)
157+
158+
/-- The base ring is a right identity for the tensor product of coalgebras, up to
159+
coalgebra equivalence. -/
160+
protected noncomputable def rid : M ⊗[R] R ≃ₗc[R] M :=
161+
{ _root_.TensorProduct.rid R M with
162+
counit_comp := by
163+
simp only [← rightUnitor_hom_toLinearMap]
164+
apply CoalgHom.counit_comp (ρ_ (CoalgebraCat.of R M)).hom.1
165+
map_comp_comul := by
166+
simp_rw [← rightUnitor_hom_toLinearMap, ← comul_tensorObj]
167+
apply CoalgHom.map_comp_comul (ρ_ (CoalgebraCat.of R M)).hom.1 }
168+
169+
variable {R M}
170+
171+
@[simp]
172+
theorem rid_toLinearEquiv :
173+
(Coalgebra.TensorProduct.rid R M) = _root_.TensorProduct.rid R M := rfl
174+
175+
@[simp]
176+
theorem rid_tmul (r : R) (a : M) : Coalgebra.TensorProduct.rid R M (a ⊗ₜ r) = r • a := rfl
177+
178+
@[simp]
179+
theorem rid_symm_apply (a : M) : (Coalgebra.TensorProduct.rid R M).symm a = a ⊗ₜ 1 := rfl
180+
181+
end
182+
183+
end TensorProduct
184+
end Coalgebra
185+
namespace CoalgHom
186+
187+
variable {R M N P : Type u} [CommRing R]
188+
[AddCommGroup M] [AddCommGroup N] [AddCommGroup P] [Module R M] [Module R N]
189+
[Module R P] [Coalgebra R M] [Coalgebra R N] [Coalgebra R P]
190+
191+
variable (M)
192+
193+
/-- `lTensor M f : M ⊗ N →ₗc M ⊗ P` is the natural coalgebra morphism induced by `f : N →ₗc P`. -/
194+
noncomputable abbrev lTensor (f : N →ₗc[R] P) : M ⊗[R] N →ₗc[R] M ⊗[R] P :=
195+
Coalgebra.TensorProduct.map (CoalgHom.id R M) f
196+
197+
/-- `rTensor M f : N ⊗ M →ₗc P ⊗ M` is the natural coalgebra morphism induced by `f : N →ₗc P`. -/
198+
noncomputable abbrev rTensor (f : N →ₗc[R] P) : N ⊗[R] M →ₗc[R] P ⊗[R] M :=
199+
Coalgebra.TensorProduct.map f (CoalgHom.id R M)
200+
201+
end CoalgHom

0 commit comments

Comments
 (0)