Definition preserves_bincoproduct_nat_z_iso_f (HF : preserves_bincoproduct F) : preserves_bincoproduct G. Proof. intros x y p π₁ π₂ H. pose (coprod := make_BinCoproduct _ _ _ _ _ _ (HF _ _ _ _ _ H)). use (isBinCoproduct_z_iso (isBinCoproduct_BinCoproduct _ (BinCoproduct_z_iso_lr coprod _ _))). - exact (nat_z_iso_pointwise_z_iso τ x). - exact (nat_z_iso_pointwise_z_iso τ y). - exact (nat_z_iso_pointwise_z_iso τ p). - abstract (cbn ; rewrite !assoc' ; rewrite nat_trans_ax ; refine (!(id_left _) @ !_) ; rewrite !assoc ; apply maponpaths_2 ; apply z_iso_after_z_iso_inv). - abstract (cbn ; rewrite !assoc' ; rewrite nat_trans_ax ; refine (!(id_left _) @ !_) ; rewrite !assoc ; apply maponpaths_2 ; apply z_iso_after_z_iso_inv). 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.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.Limits.Equalizers. Require Import UniMath.CategoryTheory.Limits.Pullbacks. Require Import UniMath.CategoryTheory.Limits.Initial. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.PullbackConstructions. Require Import UniMath.CategoryTheory.Limits.Preservation. Require Import UniMath.CategoryTheory.Limits.EquivalencePreservation. Require Import UniMath.CategoryTheory.Limits.LimitIso. Require Import UniMath.CategoryTheory.Adjunctions.Core. Require Import UniMath.CategoryTheory.Equivalences.Core. Require Import UniMath.CategoryTheory.Equivalences.CompositesAndInverses. Require Import UniMath.CategoryTheory.whiskering. Let prodC : BinProducts C := BinProductsFromPullbacks PBC TC.