The monoidal structure on a category with chosen finite products. #
This is a variant of the development in CategoryTheory.Monoidal.OfHasFiniteProducts
,
which uses specified choices of the terminal object and binary product,
enabling the construction of a cartesian category with specific definitions of the tensor unit
and tensor product.
(Because the construction in CategoryTheory.Monoidal.OfHasFiniteProducts
uses HasLimit
classes, the actual definitions there are opaque behind Classical.choice
.)
We use this in CategoryTheory.Monoidal.TypeCat
to construct the monoidal category of types
so that the tensor product is the usual cartesian product of types.
For now we only do the construction from products, and not from coproducts, which seems less often useful.
Swap the two sides of a BinaryFan
.
Equations
- t.swap = CategoryTheory.Limits.BinaryFan.mk t.snd t.fst
Instances For
If a binary fan t
over P Q
is a limit cone, then t.swap
is a limit cone over Q P
.
Equations
- I.swapBinaryFan = { lift := fun (s : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair Q P)) => I.lift (CategoryTheory.Limits.BinaryFan.swap s), fac := ⋯, uniq := ⋯ }
Instances For
Construct HasBinaryProduct Q P
from HasBinaryProduct P Q
.
This can't be an instance, as it would cause a loop in typeclass search.
Given a limit cone over X
and Y
, and another limit cone over Y
and X
, we can construct
an isomorphism between the cone points. Relative to some fixed choice of limits cones for every
pair, these isomorphisms constitute a braiding.
Equations
- CategoryTheory.Limits.BinaryFan.braiding P Q = P.conePointUniqueUpToIso Q.swapBinaryFan
Instances For
Given binary fans sXY
over X Y
, and sYZ
over Y Z
, and s
over sXY.X Z
,
if sYZ
is a limit cone we can construct a binary fan over X sYZ.X
.
This is an ingredient of building the associator for a cartesian category.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given binary fans sXY
over X Y
, and sYZ
over Y Z
, and s
over X sYZ.X
,
if sYZ
is a limit cone we can construct a binary fan over sXY.X Z
.
This is an ingredient of building the associator for a cartesian category.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If all the binary fans involved a limit cones, BinaryFan.assoc
produces another limit cone.
Equations
- P.assoc Q R = { lift := fun (t : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair X sYZ.pt)) => R.lift (CategoryTheory.Limits.BinaryFan.assocInv P t), fac := ⋯, uniq := ⋯ }
Instances For
Given two pairs of limit cones corresponding to the parenthesisations of X × Y × Z
,
we obtain an isomorphism between the cone points.
Equations
- CategoryTheory.Limits.BinaryFan.associator P Q R S = (P.assoc Q R).conePointUniqueUpToIso S
Instances For
Given a fixed family of limit data for every pair X Y
, we obtain an associator.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a left unitor from specified limit cones.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a right unitor from specified limit cones.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Implementation of the tensor product for MonoidalOfChosenFiniteProducts
.
Equations
- CategoryTheory.MonoidalOfChosenFiniteProducts.tensorObj ℬ X Y = (ℬ X Y).cone.pt
Instances For
Implementation of the tensor product of morphisms for MonoidalOfChosenFiniteProducts
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A category with a terminal object and binary products has a natural monoidal structure.
Equations
- CategoryTheory.monoidalOfChosenFiniteProducts 𝒯 ℬ = CategoryTheory.MonoidalCategory.ofTensorHom ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A type synonym for C
carrying a monoidal category structure corresponding to
a fixed choice of limit data for the empty functor, and for pair X Y
for every X Y : C
.
This is an implementation detail for SymmetricOfChosenFiniteProducts
.