Lemma bincoproduct_of_z_iso_inv : is_inverse_in_precat fg fg_inv. Proof. split; use BinCoproductArrowsEq; unfold fg, fg_inv. - rewrite !assoc. rewrite BinCoproductOfArrowsIn1. rewrite !assoc'. rewrite BinCoproductOfArrowsIn1. rewrite !assoc. rewrite z_iso_inv_after_z_iso. rewrite id_left, id_right. apply idpath. - rewrite !assoc. rewrite BinCoproductOfArrowsIn2. rewrite !assoc'. rewrite BinCoproductOfArrowsIn2. rewrite !assoc. rewrite z_iso_inv_after_z_iso. rewrite id_left, id_right. apply idpath. - rewrite !assoc. rewrite BinCoproductOfArrowsIn1. rewrite !assoc'. rewrite BinCoproductOfArrowsIn1. rewrite !assoc. rewrite z_iso_after_z_iso_inv. rewrite id_left, id_right. apply idpath. - rewrite !assoc. rewrite BinCoproductOfArrowsIn2. rewrite !assoc'. rewrite BinCoproductOfArrowsIn2. rewrite !assoc. rewrite z_iso_after_z_iso_inv. rewrite id_left, id_right. apply idpath. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.PrecategoryBinProduct. Require Import UniMath.CategoryTheory.Limits.Zero. Require Import UniMath.CategoryTheory.Limits.Terminal. Require Import UniMath.CategoryTheory.Limits.Graphs.Colimits. Require Import UniMath.CategoryTheory.Limits.Coproducts. Require Import UniMath.CategoryTheory.FunctorCategory. Require Import UniMath.CategoryTheory.whiskering. Require Import UniMath.CategoryTheory.ProductCategory.