Lemma diagonal_commutes_with_assoc (x : V) : diag x · diag x ⊗^{M}_{r} x · mon_lassociator x x x = diag x · x ⊗^{M}_{l} diag x. Proof. rewrite cartesian_associator. etrans. { apply cancel_postcomposition. etrans. { apply maponpaths. apply pathsinv0, (when_bifunctor_becomes_rightwhiskering M). } apply BinProductArrow_as_diag. } etrans. 2: { etrans. 2: { apply maponpaths. apply (when_bifunctor_becomes_leftwhiskering M). } apply pathsinv0, BinProductArrow_as_diag. } etrans. { apply (precompWithBinProductArrow _ (is_cartesian_BinProduct Ccart x (x ⊗ x))). } apply maponpaths_12. - rewrite assoc. etrans. { apply cancel_postcomposition. apply (BinProductPr1Commutes _ _ _ (is_cartesian_BinProduct Ccart _ _)). } apply (BinProductPr1Commutes _ _ _ (is_cartesian_BinProduct Ccart x x)). - etrans. { apply maponpaths. etrans. { apply pathsinv0, (when_bifunctor_becomes_rightwhiskering M). } apply (cartesian_tensor_mor Ccart). } etrans. { apply (postcompWithBinProductArrow _ (is_cartesian_BinProduct Ccart x x) (is_cartesian_BinProduct Ccart (is_cartesian_BinProduct Ccart x x) x)). } unfold diag at 2; unfold diagonalMap'; apply maponpaths_12. + apply (BinProductPr2Commutes _ _ _ (is_cartesian_BinProduct Ccart _ _)). + apply id_left. 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. *)