Affine Monoidal Categories #
An affine monoidal category has a natural "discard" morphism del X : X ⟶ 𝟙_ C
for every object, satisfying naturality (f ≫ del Y = del X). This is the dual
notion to having a "copy" morphism; in a cocartesian setting it means every
computation can be discarded.
Main definitions #
AffineMonoidalCategory— abstract class withdelmorphismKlSPCompinstance — discard by mapping toSDistr.fail
Duality #
- Every
SemiCartesianMonoidalCategoryis affine (viatoUnit) - Every
SemiCocartesianMonoidalCategoryhas a dual "co-affine" structure (fromUnit)
class
CategoryTheory.AffineMonoidalCategory
(C : Type u)
[Category.{v, u} C]
[MonoidalCategory C]
:
Type (max u v)
An affine monoidal category has a natural discard morphism del X : X ⟶ 𝟙_ C
for every object. Naturality means f ≫ del Y = del X.
The discard morphism.
- del_unit : del (MonoidalCategoryStruct.tensorUnit C) = CategoryStruct.id (MonoidalCategoryStruct.tensorUnit C)
Discarding the unit is the identity.
Discard is natural: composing with any morphism then discarding equals discarding directly.
Instances
@[simp]
theorem
CategoryTheory.AffineMonoidalCategory.del_comp
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
[AffineMonoidalCategory C]
{X Y : C}
(f : X ⟶ Y)
:
@[simp]
theorem
CategoryTheory.AffineMonoidalCategory.del_comp_assoc
{C : Type u}
[Category.{v, u} C]
[MonoidalCategory C]
[AffineMonoidalCategory C]
{X Y : C}
(f : X ⟶ Y)
{Z : C}
(h : MonoidalCategoryStruct.tensorUnit C ⟶ Z)
:
@[simp]
Duality: SemiCartesian → Affine #
@[implicit_reducible]
noncomputable instance
CategoryTheory.AffineMonoidalCategory.ofSemiCartesian
(C : Type u)
[Category.{v, u} C]
[SemiCartesianMonoidalCategory C]
:
Every semicartesian monoidal category is affine (del = toUnit).
Equations
- CategoryTheory.AffineMonoidalCategory.ofSemiCartesian C = { del := CategoryTheory.SemiCartesianMonoidalCategory.toUnit, del_unit := ⋯, del_naturality := ⋯ }
Concrete instance: KlSPComp is affine #
Discard morphism: maps any value to the failing computation on Empty.
Equations
Instances For
@[implicit_reducible]
Equations
- CatCrypt.Core.KlSPComp.instAffineMonoidalCategory = { del := CatCrypt.Core.KlSPComp.klDel, del_unit := CatCrypt.Core.KlSPComp.klDel_unit✝, del_naturality := ⋯ }