proposition: Lemma isPushout_up_to_z_iso {a a' b c d : C} (f : a --> b) (g : a --> c) (in1 : b --> d) (in2 : c --> d) (H : f · in1 = g · in2) (i : z_iso a' a) (iPo : isPushout (i · f) (i · g) in1 in2 (isPushout_up_to_z_iso_eq f g in1 in2 H i)) : isPushout f g in1 in2 H.
proof: Proof. set (Po := make_Pushout _ _ _ _ _ _ iPo). use make_isPushout. intros e h k Hk. use unique_exists. - use (PushoutArrow Po). + exact h. + exact k. + use isPushout_up_to_z_iso_eq. exact Hk. - cbn. split. + exact (PushoutArrow_PushoutIn1 Po e h k (isPushout_up_to_z_iso_eq f g h k Hk i)). + exact (PushoutArrow_PushoutIn2 Po e h k (isPushout_up_to_z_iso_eq f g h k Hk i)). - intros y. apply isapropdirprod. + apply C. + apply C. - intros y X. cbn in X. use PushoutArrowUnique. + exact (dirprod_pr1 X). + exact (dirprod_pr2 X). Qed.
imports: UniMath.Foundations.PartD UniMath.Foundations.Propositions UniMath.Foundations.Sets UniMath.MoreFoundations.Tactics UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Core.NaturalTransformations UniMath.CategoryTheory.Core.TransportMorphisms UniMath.CategoryTheory.Core.Univalence UniMath.CategoryTheory.Limits.Initial UniMath.CategoryTheory.Limits.BinCoproducts UniMath.CategoryTheory.Limits.Coequalizers UniMath.CategoryTheory.Epis UniMath.CategoryTheory.Core.Functors