Lemma is_inverse_from_BinCoproduct_to_BinCoproduct {a b : C} (CC CC' : BinCoproduct a b) : is_inverse_in_precat (from_BinCoproduct_to_BinCoproduct CC CC') (from_BinCoproduct_to_BinCoproduct CC' CC). Proof. split; simpl. - apply pathsinv0. apply BinCoproduct_endo_is_identity. + rewrite assoc. unfold from_BinCoproduct_to_BinCoproduct. rewrite BinCoproductIn1Commutes. rewrite BinCoproductIn1Commutes. apply idpath. + rewrite assoc. unfold from_BinCoproduct_to_BinCoproduct. rewrite BinCoproductIn2Commutes. rewrite BinCoproductIn2Commutes. apply idpath. - apply pathsinv0. apply BinCoproduct_endo_is_identity. + rewrite assoc; unfold from_BinCoproduct_to_BinCoproduct. repeat rewrite BinCoproductIn1Commutes; apply idpath. + rewrite assoc; unfold from_BinCoproduct_to_BinCoproduct. repeat rewrite BinCoproductIn2Commutes; 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.