Lemma cartesian_monoidal_has_unique_comonoids : ∏ x : V, iscontr (disp_cat_of_comonoids V x). Proof. intro x. exists (comonoid_to_struct V (cartesian_monoidal_has_enough_comonoids x)). intro m. use subtypePath. { intro ; apply isaprop_comonoid_laws. } apply dirprodeq. - use (BinProductArrowUnique _ _ _ (is_cartesian_BinProduct Ccart x x)). + refine (_ @ comonoid_to_law_unit_right _ (_,,m)). cbn. unfold semi_cart_tensor_pr1. rewrite ! assoc. apply maponpaths_2. apply maponpaths. unfold monoidal_cat_tensor_mor. rewrite (when_bifunctor_becomes_leftwhiskering M). apply maponpaths. apply (semi_cart_to_unit_eq Ccart). + refine (_ @ comonoid_to_law_unit_left _ (_,,m)). cbn. unfold semi_cart_tensor_pr2. rewrite ! assoc. apply maponpaths_2. apply maponpaths. unfold monoidal_cat_tensor_mor. rewrite (when_bifunctor_becomes_rightwhiskering M). apply maponpaths. apply (semi_cart_to_unit_eq Ccart). - apply (semi_cart_to_unit_eq Ccart). Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.catiso. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.DisplayedCats.Core. Require Import UniMath.CategoryTheory.DisplayedCats.Total. Require Import UniMath.CategoryTheory.DisplayedCats.Projection. Require Import UniMath.CategoryTheory.DisplayedCats.CatIsoDisplayed. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.Monoidal.WhiskeredBifunctors. Require Import UniMath.CategoryTheory.Monoidal.Categories. Import BifunctorNotations. Require Import UniMath.CategoryTheory.Monoidal.Functors. Require Import UniMath.CategoryTheory.Monoidal.Displayed.Monoidal. Require Import UniMath.CategoryTheory.Monoidal.Displayed.TotalMonoidal. Require Import UniMath.CategoryTheory.Monoidal.Structure.Cartesian. Require Import UniMath.CategoryTheory.Monoidal.Structure.Symmetric. Require Import UniMath.CategoryTheory.Monoidal.Structure.SymmetricDiagonal. Require Import UniMath.CategoryTheory.Monoidal.Comonoids.Category. Require Import UniMath.CategoryTheory.Monoidal.Comonoids.Tensor. Require Import UniMath.CategoryTheory.Monoidal.Comonoids.Monoidal. Require Import UniMath.CategoryTheory.Monoidal.Comonoids.Symmetric. Import MonoidalNotations. Import ComonoidNotations. End CartesianFromComonoidsToCartesian. *)