Lemma PushoutEndo_is_identity {a b c : C} {f : a --> b} {g : a --> c} (Pb : Pushout f g) (k : Pb --> Pb) (kH1 : PushoutIn1 Pb · k = PushoutIn1 Pb) (kH2 : PushoutIn2 Pb · k = PushoutIn2 Pb) : identity Pb = k. Proof. set (H1 := tpair ((fun hk : Pb --> Pb => dirprod (_ · hk = _)(_ · hk = _))) k (make_dirprod kH1 kH2)). assert (H2 : identity_is_Pushout_input Pb = H1). - apply proofirrelevancecontr. apply (isPushout_Pushout Pb). apply PushoutSqrCommutes. - apply (base_paths _ _ H2). Qed.
Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.MoreFoundations.Tactics. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Core.NaturalTransformations. Require Import UniMath.CategoryTheory.Core.TransportMorphisms. Require Import UniMath.CategoryTheory.Core.Univalence. Require Import UniMath.CategoryTheory.Limits.Initial. Require Import UniMath.CategoryTheory.Limits.BinCoproducts. Require Import UniMath.CategoryTheory.Limits.Coequalizers. Require Import UniMath.CategoryTheory.Epis. Require Import UniMath.CategoryTheory.Core.Functors.