@@ -527,15 +527,21 @@ theorem isSeparator_coprod_of_isSeparator_right (G H : C) [HasBinaryCoproduct G
527527 (hH : IsSeparator H) : IsSeparator (G ⨿ H) :=
528528 (isSeparator_coprod _ _).2 <| IsSeparating.mono hH <| by simp
529529
530+ lemma isSeparator_of_isColimit_cofan {β : Type w} {f : β → C}
531+ (hf : IsSeparating (Set.range f)) {c : Cofan f} (hc : IsColimit c) : IsSeparator c.pt := by
532+ refine (isSeparator_def _).2 fun X Y u v huv => hf _ _ fun Z hZ g => ?_
533+ obtain ⟨b, rfl⟩ := Set.mem_range.1 hZ
534+ classical simpa using c.ι.app ⟨b⟩ ≫= huv (hc.desc (Cofan.mk _ (Pi.single b g)))
535+
530536theorem isSeparator_sigma {β : Type w} (f : β → C) [HasCoproduct f] :
531537 IsSeparator (∐ f) ↔ IsSeparating (Set.range f) := by
532- refine
533- ⟨ fun h X Y u v huv => ?_, fun h =>
534- (isSeparator_def _). 2 fun X Y u v huv => h _ _ fun Z hZ g => ?_⟩
535- · refine h.def _ _ fun g => colimit.hom_ext fun b => ?_
536- simpa using huv (f b.as) ( by simp) (colimit.ι (Discrete.functor f) _ ≫ g)
537- · obtain ⟨b, rfl⟩ := Set.mem_range. 1 hZ
538- classical simpa using Sigma.ι f b ≫= huv (Sigma.desc (Pi.single b g))
538+ refine ⟨ fun h X Y u v huv => ?_, fun h => isSeparator_of_isColimit_cofan h (colimit.isColimit _)⟩
539+ refine h.def _ _ fun g => colimit.hom_ext fun b => ?_
540+ simpa using huv (f b.as) ( by simp) (colimit.ι (Discrete.functor f) _ ≫ g)
541+
542+ theorem IsSeparating.isSeparator_coproduct {β : Type w} {f : β → C} [HasCoproduct f]
543+ (hS : IsSeparating ( Set.range f)) : IsSeparator (∐ f) :=
544+ (isSeparator_sigma _). 2 hS
539545
540546theorem isSeparator_sigma_of_isSeparator {β : Type w} (f : β → C) [HasCoproduct f] (b : β)
541547 (hb : IsSeparator (f b)) : IsSeparator (∐ f) :=
0 commit comments