Lemma assoc_right_commutes_with_triple_pairing {C D : category} (F : functor C D) {TC : functor (C ⊠ C) C} {TD : functor (D ⊠ D) D} {FF : functor_tensor TC TD F} (FF_iso : is_nat_z_iso FF) : nat_z_iso (pair_functor (pair_functor F F) F ∙ assoc_right TD) (assoc_right TC ∙ F). Proof. use nat_z_iso_comp. 2: apply nat_z_iso_functor_comp_assoc. use nat_z_iso_comp. 2: { use post_whisker_nat_z_iso. 2: apply unassoc_commutes. } use nat_z_iso_comp. 2: apply (nat_z_iso_inv (nat_z_iso_functor_comp_assoc _ _ _)). use nat_z_iso_comp. 3: apply nat_z_iso_functor_comp_assoc. apply pre_whisker_nat_z_iso. use nat_z_iso_comp. 3: apply nat_z_iso_functor_comp_assoc. use nat_z_iso_comp. 3: { apply pre_whisker_nat_z_iso. apply (FF ,, FF_iso). } use nat_z_iso_comp. 3: apply (nat_z_iso_inv (nat_z_iso_functor_comp_assoc _ _ _)). use nat_z_iso_comp. 2: apply nat_z_iso_functor_comp_assoc. apply post_whisker_nat_z_iso. use product_of_commuting_squares. { apply (make_nat_z_iso _ _ _ (is_nat_z_iso_nat_trans_id F)). } apply (FF ,, FF_iso). Defined.
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.whiskering. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.DisplayedCats.Core. Require Import UniMath.CategoryTheory.DisplayedCats.Total. Require Import UniMath.CategoryTheory.DisplayedCats.Constructions. Require Import UniMath.CategoryTheory.DisplayedCats.Univalence. Require Import UniMath.CategoryTheory.Monoidal.AlternativeDefinitions.MonoidalCategoriesTensored.