Definition make_isCokernel {x y z : C} (f : x --> y) (g : y --> z) (H1 : f · g = ZeroArrow Z x z) (H2 : ∏ (w : C) (h : y --> w) (H' : f · h = ZeroArrow Z x w), ∃! ψ : z --> w, g · ψ = h) : isCokernel f g H1. Proof. unfold isCokernel. intros w h H'. use unique_exists. - exact (pr1 (iscontrpr1 (H2 w h H'))). - exact (pr2 (iscontrpr1 (H2 w h H'))). - intros y0. apply hs. - intros y0 X. exact (base_paths _ _ ((pr2 (H2 w h H')) (tpair _ y0 X))). Defined.
Require Import UniMath.Foundations.PartD. Require Import UniMath.Foundations.Propositions. Require Import UniMath.Foundations.Sets. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Epis. Require Import UniMath.CategoryTheory.Limits.Coequalizers. Require Import UniMath.CategoryTheory.Limits.Zero. - exact (ZeroArrowFrom w). - intros y X. cbn in X. use ArrowsFromZero.