proposition: Lemma make_ShortShortExact_isCokernel_isKernel (SSED : ShortShortExactData A (to_Zero A)) (H : isCokernel (to_Zero A) (Mor1 SSED) (Mor2 SSED) (ShortShortExactData_Eq (to_Zero A) SSED)) : isKernel (to_Zero A) (KernelArrow (Image SSED)) (Mor2 SSED) (Image_Eq SSED).
proof: Proof. use ShortShortExact_from_isCokernel_isKernel. set (CK := make_Cokernel _ _ _ _ H). set (e1 := factorization2 (Mor2 SSED)). cbn in e1. unfold CoImage. assert (e : is_z_isomorphism (CoIm_to_Im (Mor2 SSED) · KernelArrow (Abelian.Image (Mor2 SSED)))). { use monic_epi_is_iso. - exact (factorization2_is_monic (Mor2 SSED)). - use isEpi_precomp. + exact (Ob2 SSED). + exact (CokernelArrow (Abelian.CoImage (Mor2 SSED))). + rewrite <- e1. use (CokernelArrowisEpi (to_Zero A) CK). } use Cokernel_up_to_iso_isCokernel. + exact CK. + exact (z_iso_inv (make_z_iso _ _ e)). + apply (maponpaths (λ g : _, g · (inv_from_z_iso (make_z_iso _ _ e)))) in e1. use (pathscomp0 _ (! e1)). clear e1. rewrite <- assoc. cbn. rewrite (is_inverse_in_precat1 e). rewrite id_right. apply idpath. Qed.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.Tactics UniMath.CategoryTheory.Limits.Zero UniMath.CategoryTheory.Limits.Equalizers UniMath.CategoryTheory.Limits.Coequalizers UniMath.CategoryTheory.Limits.Opp UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.opp_precat UniMath.CategoryTheory.Monics UniMath.CategoryTheory.Epis UniMath.CategoryTheory.Morphisms UniMath.CategoryTheory.CategoriesWithBinOps UniMath.CategoryTheory.PrecategoriesWithAbgrops UniMath.CategoryTheory.PreAdditive UniMath.CategoryTheory.Additive UniMath.CategoryTheory.Abelian UniMath.CategoryTheory.AbelianToAdditive UniMath.CategoryTheory.Limits.Kernels UniMath.CategoryTheory.Limits.Cokernels UniMath.CategoryTheory.Limits.BinDirectSums