Lemma assoc_left_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_left TD) (assoc_left TC ∙ F). Proof. unfold assoc_left. 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 pair_functor_composite. } use nat_z_iso_comp. 2: { use post_whisker_nat_z_iso. 2: { use pair_nat_z_iso. 3: { exists FF. apply FF_iso. } 2: { exists (nat_trans_id _). apply is_nat_z_iso_nat_trans_id. } } } unfold functor_tensor_map_codom. use nat_z_iso_comp. 2: { use post_whisker_nat_z_iso. 2: { use pair_nat_z_iso. 3: { exists (nat_trans_id _). apply is_nat_z_iso_nat_trans_id. } 2: apply functor_commutes_with_id. } } use nat_z_iso_comp. 2: { use post_whisker_nat_z_iso. 2: apply (nat_z_iso_inv (pair_functor_composite _ _ _ _)). } use nat_z_iso_comp. 2: apply (nat_z_iso_inv (nat_z_iso_functor_comp_assoc _ _ _)). use nat_z_iso_comp. 2: { use pre_whisker_nat_z_iso. 2: { exists FF. apply FF_iso. } } apply nat_z_iso_functor_comp_assoc. 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.