Cocartesian Monoidal Categories #
This file defines cocartesian monoidal categories (dual of cartesian monoidal) and proves
that KlSPComp is cocartesian with Sum as coproduct and Empty as initial object.
Main definitions #
SemiCocartesianMonoidalCategory— monoidal category with initial tensor unitCocartesianMonoidalCategory— tensor is the categorical coproductKlSPCompinstance ofCocartesianMonoidalCategory
A monoidal category is semicocartesian if the unit for the tensor product is
an initial object. Dual of SemiCartesianMonoidalCategory.
- tensorObj : C → C → C
- tensorUnit : C
- tensorHom_def {X₁ Y₁ X₂ Y₂ : C} (f : X₁ ⟶ Y₁) (g : X₂ ⟶ Y₂) : tensorHom f g = CategoryStruct.comp (whiskerRight f X₂) (whiskerLeft Y₁ g)
- id_tensorHom_id (X₁ X₂ : C) : tensorHom (CategoryStruct.id X₁) (CategoryStruct.id X₂) = CategoryStruct.id (tensorObj X₁ X₂)
- tensorHom_comp_tensorHom {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : C} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁) (g₂ : Y₂ ⟶ Z₂) : CategoryStruct.comp (tensorHom f₁ f₂) (tensorHom g₁ g₂) = tensorHom (CategoryStruct.comp f₁ g₁) (CategoryStruct.comp f₂ g₂)
- id_whiskerRight (X Y : C) : whiskerRight (CategoryStruct.id X) Y = CategoryStruct.id (tensorObj X Y)
- associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (f₃ : X₃ ⟶ Y₃) : CategoryStruct.comp (tensorHom (tensorHom f₁ f₂) f₃) (associator Y₁ Y₂ Y₃).hom = CategoryStruct.comp (associator X₁ X₂ X₃).hom (tensorHom f₁ (tensorHom f₂ f₃))
- leftUnitor_naturality {X Y : C} (f : X ⟶ Y) : CategoryStruct.comp (whiskerLeft (tensorUnit C) f) (leftUnitor Y).hom = CategoryStruct.comp (leftUnitor X).hom f
- rightUnitor_naturality {X Y : C} (f : X ⟶ Y) : CategoryStruct.comp (whiskerRight f (tensorUnit C)) (rightUnitor Y).hom = CategoryStruct.comp (rightUnitor X).hom f
- pentagon (W X Y Z : C) : CategoryStruct.comp (whiskerRight (associator W X Y).hom Z) (CategoryStruct.comp (associator W (tensorObj X Y) Z).hom (whiskerLeft W (associator X Y Z).hom)) = CategoryStruct.comp (associator (tensorObj W X) Y Z).hom (associator W X (tensorObj Y Z)).hom
- triangle (X Y : C) : CategoryStruct.comp (associator X (tensorUnit C) Y).hom (whiskerLeft X (leftUnitor Y).hom) = whiskerRight (rightUnitor X).hom Y
- isInitialTensorUnit : Limits.IsInitial (MonoidalCategoryStruct.tensorUnit C)
The tensor unit is an initial object.
The first coprojection into the coproduct.
The second coprojection into the coproduct.
- inl_def (X Y : C) : inl X Y = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor X).inv (MonoidalCategoryStruct.whiskerLeft X (isInitialTensorUnit.to Y))
- inr_def (X Y : C) : inr X Y = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor Y).inv (MonoidalCategoryStruct.whiskerRight (isInitialTensorUnit.to X) Y)
Instances
The unique morphism from the initial tensor unit to any object.
Equations
Instances For
Bridge lemma: isInitialTensorUnit.to X is the same as fromUnit X.
A monoidal category is cocartesian if the tensor product is the categorical coproduct
and the unit is initial. Dual of CartesianMonoidalCategory.
- tensorObj : C → C → C
- tensorUnit : C
- tensorHom_def {X₁ Y₁ X₂ Y₂ : C} (f : X₁ ⟶ Y₁) (g : X₂ ⟶ Y₂) : tensorHom f g = CategoryStruct.comp (whiskerRight f X₂) (whiskerLeft Y₁ g)
- id_tensorHom_id (X₁ X₂ : C) : tensorHom (CategoryStruct.id X₁) (CategoryStruct.id X₂) = CategoryStruct.id (tensorObj X₁ X₂)
- tensorHom_comp_tensorHom {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : C} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁) (g₂ : Y₂ ⟶ Z₂) : CategoryStruct.comp (tensorHom f₁ f₂) (tensorHom g₁ g₂) = tensorHom (CategoryStruct.comp f₁ g₁) (CategoryStruct.comp f₂ g₂)
- id_whiskerRight (X Y : C) : whiskerRight (CategoryStruct.id X) Y = CategoryStruct.id (tensorObj X Y)
- associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (f₃ : X₃ ⟶ Y₃) : CategoryStruct.comp (tensorHom (tensorHom f₁ f₂) f₃) (associator Y₁ Y₂ Y₃).hom = CategoryStruct.comp (associator X₁ X₂ X₃).hom (tensorHom f₁ (tensorHom f₂ f₃))
- leftUnitor_naturality {X Y : C} (f : X ⟶ Y) : CategoryStruct.comp (whiskerLeft (tensorUnit C) f) (leftUnitor Y).hom = CategoryStruct.comp (leftUnitor X).hom f
- rightUnitor_naturality {X Y : C} (f : X ⟶ Y) : CategoryStruct.comp (whiskerRight f (tensorUnit C)) (rightUnitor Y).hom = CategoryStruct.comp (rightUnitor X).hom f
- pentagon (W X Y Z : C) : CategoryStruct.comp (whiskerRight (associator W X Y).hom Z) (CategoryStruct.comp (associator W (tensorObj X Y) Z).hom (whiskerLeft W (associator X Y Z).hom)) = CategoryStruct.comp (associator (tensorObj W X) Y Z).hom (associator W X (tensorObj Y Z)).hom
- triangle (X Y : C) : CategoryStruct.comp (associator X (tensorUnit C) Y).hom (whiskerLeft X (leftUnitor Y).hom) = whiskerRight (rightUnitor X).hom Y
- inl_def (X Y : C) : inl X Y = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor X).inv (MonoidalCategoryStruct.whiskerLeft X (isInitialTensorUnit.to Y))
- inr_def (X Y : C) : inr X Y = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor Y).inv (MonoidalCategoryStruct.whiskerRight (isInitialTensorUnit.to X) Y)
- tensorCoproductIsBinaryCoproduct (X Y : C) : Limits.IsColimit (Limits.BinaryCofan.mk (SemiCocartesianMonoidalCategory.inl X Y) (SemiCocartesianMonoidalCategory.inr X Y))
The monoidal product is the categorical coproduct.
Instances
The copairing (universal map from coproduct).
Equations
Instances For
Simp library for CocartesianMonoidalCategory #
Dual of Mathlib's CartesianMonoidalCategory simp library.
Core desc identities #
Coprojections and whiskering #
desc + tensor #
Unitor projections #
Concrete instance: KlSPComp is cocartesian #
IsInitial for Empty #
Empty is initial in KlSPComp: there is a unique morphism from Empty to any type.
Equations
- CatCrypt.Core.KlSPComp.emptyIsInitial = CategoryTheory.Limits.IsInitial.ofUnique (have this := Empty; this)
Instances For
Coprojections #
Left coprojection: embed into the left summand via pure.
Equations
- α.klInl β a = CatCrypt.Core.SPComp.pure (Sum.inl a)
Instances For
Right coprojection: embed into the right summand via pure.
Equations
- α.klInr β b = CatCrypt.Core.SPComp.pure (Sum.inr b)
Instances For
Copairing #
Copairing: given morphisms from each summand, produce a morphism from the coproduct.
Equations
- CatCrypt.Core.KlSPComp.klDesc f g (Sum.inl a) = f a
- CatCrypt.Core.KlSPComp.klDesc f g (Sum.inr b) = g b
Instances For
Coproduct is colimit #
Equations
- α.binaryCoproductIsColimit β = CategoryTheory.Limits.BinaryCofan.isColimitMk (fun (s : CategoryTheory.Limits.BinaryCofan α β) => CatCrypt.Core.KlSPComp.klDesc s.inl s.inr) ⋯ ⋯ ⋯
Instances For
inl_def / inr_def compatibility #
CocartesianMonoidalCategory instance #
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.