@@ -237,35 +237,80 @@ lemma isCardinalPresentable_iff_of_isEquivalence
237237 · intro
238238 infer_instance
239239
240+ section
241+
242+ variable {J : Type *} [Category* J] {D : J ⥤ C}
243+
244+ lemma Limits.exists_hom_of_preservesColimit_coyoneda {c : Cocone D} (hc : IsColimit c) {X : C}
245+ [PreservesColimit D (coyoneda.obj (.op X))] (f : X ⟶ c.pt) :
246+ ∃ (j : J) (p : X ⟶ D.obj j), p ≫ c.ι.app j = f :=
247+ Types.jointly_surjective_of_isColimit (isColimitOfPreserves (coyoneda.obj (.op X)) hc) f
248+
249+ lemma Limits.exists_eq_of_preservesColimit_coyoneda [IsFiltered J] {c : Cocone D}
250+ (hc : IsColimit c) {X : C} [PreservesColimit D (coyoneda.obj (.op X))]
251+ {i j : J} (f : X ⟶ D.obj i) (g : X ⟶ D.obj j) (h : f ≫ c.ι.app i = g ≫ c.ι.app j) :
252+ ∃ (k : J) (u : i ⟶ k) (v : j ⟶ k), f ≫ D.map u = g ≫ D.map v :=
253+ (Types.FilteredColimit.isColimit_eq_iff _ (isColimitOfPreserves (coyoneda.obj (.op X)) hc)).mp h
254+
255+ lemma Limits.exists_eq_of_preservesColimit_coyoneda_self [IsFiltered J] {c : Cocone D}
256+ (hc : IsColimit c) {X : C} [PreservesColimit D (coyoneda.obj (.op X))]
257+ {i : J} (f g : X ⟶ D.obj i) (h : f ≫ c.ι.app i = g ≫ c.ι.app i) :
258+ ∃ (j : J) (a : i ⟶ j), f ≫ D.map a = g ≫ D.map a :=
259+ (Types.FilteredColimit.isColimit_eq_iff'
260+ (isColimitOfPreserves (coyoneda.obj (.op X)) hc) f g).mp h
261+
262+ lemma Limits.exists_hom_of_preservesColimit_yoneda {c : Cone D} (hc : IsLimit c) {X : C}
263+ [PreservesColimit D.op (yoneda.obj X)] (f : c.pt ⟶ X) :
264+ ∃ (j : J) (p : D.obj j ⟶ X), c.π.app j ≫ p = f := by
265+ obtain ⟨j, p, hp⟩ := Types.jointly_surjective_of_isColimit
266+ (isColimitOfPreserves (yoneda.obj X) hc.op) f
267+ exact ⟨j.unop, p, hp⟩
268+
269+ lemma Limits.exists_eq_of_preservesColimit_yoneda [IsCofiltered J] {c : Cone D} (hc : IsLimit c)
270+ {X : C} [PreservesColimit D.op (yoneda.obj X)]
271+ {i j : J} (f : D.obj i ⟶ X) (g : D.obj j ⟶ X) (h : c.π.app i ≫ f = c.π.app j ≫ g) :
272+ ∃ (k : J) (u : k ⟶ i) (v : k ⟶ j), D.map u ≫ f = D.map v ≫ g := by
273+ obtain ⟨k, u, v, huv⟩ :=
274+ (Types.FilteredColimit.isColimit_eq_iff _ (isColimitOfPreserves (yoneda.obj X) hc.op)).mp h
275+ exact ⟨k.unop, u.unop, v.unop, huv⟩
276+
277+ lemma Limits.exists_eq_of_preservesColimit_yoneda_self [IsCofiltered J] {c : Cone D}
278+ (hc : IsLimit c) {X : C} [PreservesColimit D.op (yoneda.obj X)]
279+ {i : J} (f g : D.obj i ⟶ X) (h : c.π.app i ≫ f = c.π.app i ≫ g) :
280+ ∃ (j : J) (a : j ⟶ i), D.map a ≫ f = D.map a ≫ g := by
281+ obtain ⟨j, a, ha⟩ := (Types.FilteredColimit.isColimit_eq_iff'
282+ (isColimitOfPreserves (yoneda.obj X) hc.op) f g).mp h
283+ exact ⟨j.unop, a.unop, ha⟩
284+
240285variable {X} in
241286lemma IsCardinalPresentable.exists_hom_of_isColimit [IsCardinalPresentable X κ]
242- {J : Type u₂} [Category.{v₂} J] [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
287+ [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
243288 {F : J ⥤ C} {c : Cocone F} (hc : IsColimit c) (f : X ⟶ c.pt) :
244289 ∃ (j : J) (f' : X ⟶ F.obj j), f' ≫ c.ι.app j = f := by
245290 have := preservesColimitsOfShape_of_isCardinalPresentable_of_essentiallySmall X κ J
246- exact Types.jointly_surjective_of_isColimit (isColimitOfPreserves (coyoneda.obj (op X)) hc) f
291+ exact exists_hom_of_preservesColimit_coyoneda hc f
247292
248293variable {X} in
249294lemma IsCardinalPresentable.exists_eq_of_isColimit [IsCardinalPresentable X κ]
250- {J : Type u₂} [Category.{v₂} J] [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
295+ [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
251296 {F : J ⥤ C} {c : Cocone F} (hc : IsColimit c) {i₁ i₂ : J} (f₁ : X ⟶ F.obj i₁)
252297 (f₂ : X ⟶ F.obj i₂) (hf : f₁ ≫ c.ι.app i₁ = f₂ ≫ c.ι.app i₂) :
253298 ∃ (j : J) (u : i₁ ⟶ j) (v : i₂ ⟶ j), f₁ ≫ F.map u = f₂ ≫ F.map v := by
254299 have := preservesColimitsOfShape_of_isCardinalPresentable_of_essentiallySmall X κ J
255300 have := isFiltered_of_isCardinalFiltered J κ
256- exact (Types.FilteredColimit.isColimit_eq_iff _
257- (isColimitOfPreserves (coyoneda.obj (op X)) hc)).1 hf
301+ exact exists_eq_of_preservesColimit_coyoneda hc f₁ f₂ hf
258302
259303variable {X} in
260304lemma IsCardinalPresentable.exists_eq_of_isColimit' [IsCardinalPresentable X κ]
261- {J : Type u₂} [Category.{v₂} J] [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
305+ [EssentiallySmall.{w} J] [IsCardinalFiltered J κ]
262306 {F : J ⥤ C} {c : Cocone F} (hc : IsColimit c) {i : J} (f₁ f₂ : X ⟶ F.obj i)
263307 (hf : f₁ ≫ c.ι.app i = f₂ ≫ c.ι.app i) :
264308 ∃ (j : J) (u : i ⟶ j), f₁ ≫ F.map u = f₂ ≫ F.map u := by
265309 have := preservesColimitsOfShape_of_isCardinalPresentable_of_essentiallySmall X κ J
266310 have := isFiltered_of_isCardinalFiltered J κ
267- exact (Types.FilteredColimit.isColimit_eq_iff'
268- (isColimitOfPreserves (coyoneda.obj (op X)) hc) f₁ f₂).1 hf
311+ exact exists_eq_of_preservesColimit_coyoneda_self hc f₁ f₂ hf
312+
313+ end
269314
270315lemma isCardinalPresentable_iff_isCardinalAccessible_uliftCoyoneda_obj :
271316 IsCardinalPresentable X κ ↔ (uliftCoyoneda.{t}.obj (op X)).IsCardinalAccessible κ := by
0 commit comments