Definition is_z_iso_bifunctor_z_iso (F : bifunctor) {a1 a2 : A} {b1 b2 : B} (f : A⟦a1,a2⟧) (g : B⟦b1,b2⟧) (f_is_z_iso : is_z_isomorphism f) (g_is_z_iso : is_z_isomorphism g) : is_z_isomorphism (f ⊗^{ F } g). Proof. use tpair. - exact (is_z_isomorphism_mor f_is_z_iso ⊗^{ F } is_z_isomorphism_mor g_is_z_iso). - split. + etrans. { apply pathsinv0, bifunctor_distributes_over_comp. - apply bifunctor_leftcomp. - apply bifunctor_rightcomp. - apply bifunctor_equalwhiskers. } unfold is_z_isomorphism_mor. rewrite (pr12 f_is_z_iso). rewrite (pr12 g_is_z_iso). apply bifunctor_distributes_over_id. * apply bifunctor_leftid. * apply bifunctor_rightid. + etrans. { apply pathsinv0, bifunctor_distributes_over_comp. - apply bifunctor_leftcomp. - apply bifunctor_rightcomp. - apply bifunctor_equalwhiskers. } unfold is_z_isomorphism_mor. rewrite (pr22 f_is_z_iso). rewrite (pr22 g_is_z_iso). apply bifunctor_distributes_over_id. * apply bifunctor_leftid. * apply bifunctor_rightid. 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.Isos. Require Import  UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.Coproducts. Require Import UniMath.CategoryTheory.ProductCategory. Import BifunctorNotations. Import BifunctorNotations. Section FunctorsFromProductCategory. Import BifunctorNotations. End FunctorsFromProductCategory. Import BifunctorNotations. Import BifunctorNotations. Import BifunctorNotations.