The natural monoidal structure on any category with finite (co)products. #
A category with a monoidal structure provided in this way is sometimes called a (co)cartesian category, although this is also sometimes used to mean a finitely complete category. (See https://ncatlab.org/nlab/show/cartesian+category.)
As this works with either products or coproducts, and sometimes we want to think of a different monoidal structure entirely, we don't set up either construct as an instance.
Implementation #
We had previously chosen to rely on has_terminal
and has_binary_products
instead of
has_finite_products
, because we were later relying on the definitional form of the tensor product.
Now that has_limit
has been refactored to be a Prop
,
this issue is irrelevant and we could simplify the construction here.
See category_theory.monoidal.of_chosen_finite_products
for a variant of this construction
which allows specifying a particular choice of terminal object and binary products.
A category with a terminal object and binary products has a natural monoidal structure.
Equations
- category_theory.monoidal_of_has_finite_products C = {tensor_obj := λ (X Y : C), X ⨯ Y, tensor_hom := λ (_x _x_1 _x_2 _x_3 : C) (f : _x ⟶ _x_1) (g : _x_2 ⟶ _x_3), category_theory.limits.prod.map f g, tensor_id' := _, tensor_comp' := _, tensor_unit := ⊤_ C, associator := category_theory.limits.prod.associator _inst_3, associator_naturality' := _, left_unitor := λ (P : C), category_theory.limits.prod.left_unitor P, left_unitor_naturality' := _, right_unitor := λ (P : C), category_theory.limits.prod.right_unitor P, right_unitor_naturality' := _, pentagon' := _, triangle' := _}
The monoidal structure coming from finite products is symmetric.
Equations
- category_theory.symmetric_of_has_finite_products C = {to_braided_category := {braiding := λ (X Y : C), category_theory.limits.prod.braiding X Y, braiding_naturality' := _, hexagon_forward' := _, hexagon_reverse' := _}, symmetry' := _}
A category with an initial object and binary coproducts has a natural monoidal structure.
Equations
- category_theory.monoidal_of_has_finite_coproducts C = {tensor_obj := λ (X Y : C), X ⨿ Y, tensor_hom := λ (_x _x_1 _x_2 _x_3 : C) (f : _x ⟶ _x_1) (g : _x_2 ⟶ _x_3), category_theory.limits.coprod.map f g, tensor_id' := _, tensor_comp' := _, tensor_unit := ⊥_ C, associator := category_theory.limits.coprod.associator _inst_3, associator_naturality' := _, left_unitor := category_theory.limits.coprod.left_unitor _inst_2, left_unitor_naturality' := _, right_unitor := category_theory.limits.coprod.right_unitor _inst_2, right_unitor_naturality' := _, pentagon' := _, triangle' := _}
The monoidal structure coming from finite coproducts is symmetric.
Equations
- category_theory.symmetric_of_has_finite_coproducts C = {to_braided_category := {braiding := category_theory.limits.coprod.braiding _inst_3, braiding_naturality' := _, hexagon_forward' := _, hexagon_reverse' := _}, symmetry' := _}