Preadditive monoidal categories #
A monoidal category is MonoidalPreadditive
if it is preadditive and tensor product of morphisms
is linear in both factors.
class
CategoryTheory.MonoidalPreadditive
(C : Type u_1)
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
:
A category is MonoidalPreadditive
if tensoring is additive in both factors.
Note we don't extend Preadditive C
here, as Abelian C
already extends it,
and we'll need to have both typeclasses sometimes.
Instances
theorem
CategoryTheory.MonoidalPreadditive.tensor_add
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{W X Y Z : C}
(f : W ⟶ X)
(g h : Y ⟶ Z)
:
theorem
CategoryTheory.MonoidalPreadditive.add_tensor
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{W X Y Z : C}
(f g : W ⟶ X)
(h : Y ⟶ Z)
:
instance
CategoryTheory.tensorLeft_additive
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
instance
CategoryTheory.tensorRight_additive
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
instance
CategoryTheory.tensoringLeft_additive
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
instance
CategoryTheory.tensoringRight_additive
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
theorem
CategoryTheory.monoidalPreadditive_of_faithful
{C : Type u_1}
[Category.{u_4, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{D : Type u_2}
[Category.{u_3, u_2} D]
[Preadditive D]
[MonoidalCategory D]
(F : Functor D C)
[F.Monoidal]
[F.Faithful]
[F.Additive]
:
A faithful additive monoidal functor to a monoidal preadditive category ensures that the domain is monoidal preadditive.
theorem
CategoryTheory.whiskerLeft_sum
{C : Type u_1}
[Category.{u_3, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(P : C)
{Q R : C}
{J : Type u_2}
(s : Finset J)
(g : J → (Q ⟶ R))
:
theorem
CategoryTheory.sum_whiskerRight
{C : Type u_1}
[Category.{u_3, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{Q R : C}
{J : Type u_2}
(s : Finset J)
(g : J → (Q ⟶ R))
(P : C)
:
theorem
CategoryTheory.tensor_sum
{C : Type u_1}
[Category.{u_3, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{P Q R S : C}
{J : Type u_2}
(s : Finset J)
(f : P ⟶ Q)
(g : J → (R ⟶ S))
:
theorem
CategoryTheory.sum_tensor
{C : Type u_1}
[Category.{u_3, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
{P Q R S : C}
{J : Type u_2}
(s : Finset J)
(f : P ⟶ Q)
(g : J → (R ⟶ S))
:
instance
CategoryTheory.instPreservesFiniteBiproductsTensorLeft
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
instance
CategoryTheory.instPreservesFiniteBiproductsTensorRight
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
(X : C)
:
def
CategoryTheory.leftDistributor
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
:
The isomorphism showing how tensor product on the left distributes over direct sums.
Equations
Instances For
theorem
CategoryTheory.leftDistributor_hom
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
:
theorem
CategoryTheory.leftDistributor_inv
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
:
@[simp]
theorem
CategoryTheory.leftDistributor_hom_comp_biproduct_π
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
:
@[simp]
theorem
CategoryTheory.leftDistributor_hom_comp_biproduct_π_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj X (f j) ⟶ Z)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_leftDistributor_hom
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_leftDistributor_hom_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
{Z : C}
(h : (⨁ fun (j : J) => MonoidalCategoryStruct.tensorObj X (f j)) ⟶ Z)
:
@[simp]
theorem
CategoryTheory.leftDistributor_inv_comp_biproduct_π
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
:
@[simp]
theorem
CategoryTheory.leftDistributor_inv_comp_biproduct_π_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj X (f j) ⟶ Z)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_leftDistributor_inv
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_leftDistributor_inv_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj X (⨁ f) ⟶ Z)
:
theorem
CategoryTheory.leftDistributor_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X Y : C)
(f : J → C)
:
(MonoidalCategory.tensorIso (asIso (CategoryStruct.id X)) (leftDistributor Y f) ≪≫ leftDistributor X fun (j : J) => MonoidalCategoryStruct.tensorObj Y (f j)) = (MonoidalCategoryStruct.associator X Y (⨁ f)).symm ≪≫ leftDistributor (MonoidalCategoryStruct.tensorObj X Y) f ≪≫ Limits.biproduct.mapIso fun (x : J) => MonoidalCategoryStruct.associator X Y (f x)
def
CategoryTheory.rightDistributor
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
:
The isomorphism showing how tensor product on the right distributes over direct sums.
Equations
Instances For
theorem
CategoryTheory.rightDistributor_hom
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
:
theorem
CategoryTheory.rightDistributor_inv
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
:
@[simp]
theorem
CategoryTheory.rightDistributor_hom_comp_biproduct_π
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
:
@[simp]
theorem
CategoryTheory.rightDistributor_hom_comp_biproduct_π_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj (f j) X ⟶ Z)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_rightDistributor_hom
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_rightDistributor_hom_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
{Z : C}
(h : (⨁ fun (j : J) => MonoidalCategoryStruct.tensorObj (f j) X) ⟶ Z)
:
@[simp]
theorem
CategoryTheory.rightDistributor_inv_comp_biproduct_π
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
:
@[simp]
theorem
CategoryTheory.rightDistributor_inv_comp_biproduct_π_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj (f j) X ⟶ Z)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_rightDistributor_inv
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
:
@[simp]
theorem
CategoryTheory.biproduct_ι_comp_rightDistributor_inv_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X : C)
(j : J)
{Z : C}
(h : MonoidalCategoryStruct.tensorObj (⨁ f) X ⟶ Z)
:
theorem
CategoryTheory.rightDistributor_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(f : J → C)
(X Y : C)
:
MonoidalCategory.tensorIso (rightDistributor f X) (asIso (CategoryStruct.id Y)) ≪≫ rightDistributor (fun (j : J) => MonoidalCategoryStruct.tensorObj (f j) X) Y = MonoidalCategoryStruct.associator (⨁ f) X Y ≪≫ rightDistributor f (MonoidalCategoryStruct.tensorObj X Y) ≪≫ Limits.biproduct.mapIso fun (x : J) => (MonoidalCategoryStruct.associator (f x) X Y).symm
theorem
CategoryTheory.leftDistributor_rightDistributor_assoc
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
(X : C)
(f : J → C)
(Y : C)
:
MonoidalCategory.tensorIso (leftDistributor X f) (asIso (CategoryStruct.id Y)) ≪≫ rightDistributor (fun (j : J) => MonoidalCategoryStruct.tensorObj X (f j)) Y = MonoidalCategoryStruct.associator X (⨁ f) Y ≪≫ MonoidalCategory.tensorIso (asIso (CategoryStruct.id X)) (rightDistributor f Y) ≪≫ (leftDistributor X fun (j : J) => MonoidalCategoryStruct.tensorObj (f j) Y) ≪≫ Limits.biproduct.mapIso fun (x : J) => (MonoidalCategoryStruct.associator X (f x) Y).symm
theorem
CategoryTheory.leftDistributor_ext_left
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{X Y : C}
{f : J → C}
{g h : MonoidalCategoryStruct.tensorObj X (⨁ f) ⟶ Y}
(w :
∀ (j : J),
CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft X (Limits.biproduct.ι f j)) g = CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft X (Limits.biproduct.ι f j)) h)
:
theorem
CategoryTheory.leftDistributor_ext_right
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{X Y : C}
{f : J → C}
{g h : X ⟶ MonoidalCategoryStruct.tensorObj Y (⨁ f)}
(w :
∀ (j : J),
CategoryStruct.comp g (MonoidalCategoryStruct.whiskerLeft Y (Limits.biproduct.π f j)) = CategoryStruct.comp h (MonoidalCategoryStruct.whiskerLeft Y (Limits.biproduct.π f j)))
:
theorem
CategoryTheory.leftDistributor_ext₂_left
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{X Y Z : C}
{f : J → C}
{g h : MonoidalCategoryStruct.tensorObj X (MonoidalCategoryStruct.tensorObj Y (⨁ f)) ⟶ Z}
(w :
∀ (j : J),
CategoryStruct.comp
(MonoidalCategoryStruct.whiskerLeft X (MonoidalCategoryStruct.whiskerLeft Y (Limits.biproduct.ι f j))) g = CategoryStruct.comp
(MonoidalCategoryStruct.whiskerLeft X (MonoidalCategoryStruct.whiskerLeft Y (Limits.biproduct.ι f j))) h)
:
theorem
CategoryTheory.leftDistributor_ext₂_right
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{X Y Z : C}
{f : J → C}
{g h : X ⟶ MonoidalCategoryStruct.tensorObj Y (MonoidalCategoryStruct.tensorObj Z (⨁ f))}
(w :
∀ (j : J),
CategoryStruct.comp g
(MonoidalCategoryStruct.whiskerLeft Y (MonoidalCategoryStruct.whiskerLeft Z (Limits.biproduct.π f j))) = CategoryStruct.comp h
(MonoidalCategoryStruct.whiskerLeft Y (MonoidalCategoryStruct.whiskerLeft Z (Limits.biproduct.π f j))))
:
theorem
CategoryTheory.rightDistributor_ext_left
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{f : J → C}
{X Y : C}
{g h : MonoidalCategoryStruct.tensorObj (⨁ f) X ⟶ Y}
(w :
∀ (j : J),
CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.ι f j) X) g = CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.ι f j) X) h)
:
theorem
CategoryTheory.rightDistributor_ext_right
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{f : J → C}
{X Y : C}
{g h : X ⟶ MonoidalCategoryStruct.tensorObj (⨁ f) Y}
(w :
∀ (j : J),
CategoryStruct.comp g (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.π f j) Y) = CategoryStruct.comp h (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.π f j) Y))
:
theorem
CategoryTheory.rightDistributor_ext₂_left
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{f : J → C}
{X Y Z : C}
{g h : MonoidalCategoryStruct.tensorObj (MonoidalCategoryStruct.tensorObj (⨁ f) X) Y ⟶ Z}
(w :
∀ (j : J),
CategoryStruct.comp
(MonoidalCategoryStruct.whiskerRight (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.ι f j) X) Y) g = CategoryStruct.comp
(MonoidalCategoryStruct.whiskerRight (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.ι f j) X) Y) h)
:
theorem
CategoryTheory.rightDistributor_ext₂_right
{C : Type u_1}
[Category.{u_2, u_1} C]
[Preadditive C]
[MonoidalCategory C]
[MonoidalPreadditive C]
[Limits.HasFiniteBiproducts C]
{J : Type}
[Fintype J]
{f : J → C}
{X Y Z : C}
{g h : X ⟶ MonoidalCategoryStruct.tensorObj (MonoidalCategoryStruct.tensorObj (⨁ f) Y) Z}
(w :
∀ (j : J),
CategoryStruct.comp g
(MonoidalCategoryStruct.whiskerRight (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.π f j) Y) Z) = CategoryStruct.comp h
(MonoidalCategoryStruct.whiskerRight (MonoidalCategoryStruct.whiskerRight (Limits.biproduct.π f j) Y) Z))
: