Lemma nat_z_iso_pair {C1 C2 D1 D2 E1 E2 : category} (F1 : functor C1 D1) (F2 : functor D1 E1) (G1 : functor C2 D2) (G2 : functor D2 E2) : nat_z_iso (pair_functor (F1 ∙ F2) (G1 ∙ G2)) (pair_functor F1 G1 ∙ pair_functor F2 G2). Proof. use make_nat_z_iso. - use make_nat_trans. + intro ; apply catbinprodmor ; apply identity. + abstract (intro ; intros ; use total2_paths_f ; [ exact (id_right _ @ ! id_left _) | rewrite transportf_const ; exact (id_right _ @ ! id_left _) ]). - intro. use make_is_z_isomorphism. + apply catbinprodmor ; apply identity. + abstract (split ; (use total2_paths_f ; [ apply id_right | rewrite transportf_const ; apply id_right ])). 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.Core.Univalence. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.FullyFaithful. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.precomp_ess_surj. Require Import UniMath.CategoryTheory.precomp_fully_faithful. Require Import UniMath.CategoryTheory.PrecategoryBinProduct.