{A B C D : Type} {F : A -> B} {G : C -> D} {H : A -> C} {K : B -> D} `{IsSurjInj A C H} `{IsSurjInj B D K} `{!Is0Functor F} `{!Is0Functor G} (p : K o F $=> G o H) : IsSurjInj F <-> IsSurjInj G. Proof. split; intros ?. - srapply (cancelR_issurjinj G H); try exact _. apply (issurjinj_transf (fun a => (p a)^$)). - srapply (cancelL_issurjinj K F); try exact _. apply (issurjinj_transf p). Defined.
Require Import Basics.Overture Basics.Tactics Basics.Iff. Require Import WildCat.Core. Require Import WildCat.NatTrans. Require Import WildCat.Sigma.