Lean4
/-- The second leg of a pushout cocone is a normal epimorphism if the right component is too.
See also `pushout.sndOfEpi` for the basic epimorphism version, and
`normalOfIsPushoutFstOfNormal` for the flipped version.
-/
def normalOfIsPushoutSndOfNormal {P Q R S : C} {f : P ⟶ Q} {g : P ⟶ R} {h : Q ⟶ S} {k : R ⟶ S} [gn : NormalEpi g]
(comm : f ≫ h = g ≫ k) (t : IsColimit (PushoutCocone.mk _ _ comm)) : NormalEpi h
where
W := gn.W
g := gn.g ≫ f
w := by
have reassoc' {W : C} (h' : R ⟶ W) : gn.g ≫ g ≫ h' = 0 ≫ h' := by rw [← Category.assoc, eq_whisker gn.w]
rw [Category.assoc, comm, reassoc', zero_comp]
isColimit := by
letI hn := regularOfIsPushoutSndOfRegular comm t
have q := (@zero_comp _ _ _ gn.W _ _ f).symm
convert hn.isColimit