Skip to content

Commit e38a3c0

Browse files
committed
feat: functor creates limit if it lifts a single limit cone (#11482)
1 parent 7ba92d5 commit e38a3c0

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

Mathlib/CategoryTheory/Limits/Creates.lean

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,16 @@ def createsLimitOfReflectsIso {K : J ⥤ C} {F : C ⥤ D} [ReflectsIsomorphisms
278278
exact IsLimit.ofIsoLimit hd' (asIso f).symm }
279279
#align category_theory.creates_limit_of_reflects_iso CategoryTheory.createsLimitOfReflectsIso
280280

281+
/-- If `F` reflects isomorphisms and we can lift a single limit cone to a limit cone, then `F`
282+
creates limits. Note that unlike `createsLimitOfReflectsIso`, to apply this result it is
283+
necessary to know that `K ⋙ F` actually has a limit. -/
284+
def createsLimitOfReflectsIso' {K : J ⥤ C} {F : C ⥤ D} [ReflectsIsomorphisms F]
285+
{c : Cone (K ⋙ F)} (hc : IsLimit c) (h : LiftsToLimit K F c hc) : CreatesLimit K F :=
286+
createsLimitOfReflectsIso fun _ t =>
287+
{ liftedCone := h.liftedCone
288+
validLift := h.validLift ≪≫ IsLimit.uniqueUpToIso hc t
289+
makesLimit := h.makesLimit }
290+
281291
-- Notice however that even if the isomorphism is `Iso.refl _`,
282292
-- this construction will insert additional identity morphisms in the cone maps,
283293
-- so the constructed limits may not be ideal, definitionally.
@@ -390,6 +400,16 @@ def createsColimitOfReflectsIso {K : J ⥤ C} {F : C ⥤ D} [ReflectsIsomorphism
390400
exact IsColimit.ofIsoColimit hd' (asIso f) }
391401
#align category_theory.creates_colimit_of_reflects_iso CategoryTheory.createsColimitOfReflectsIso
392402

403+
/-- If `F` reflects isomorphisms and we can lift a single colimit cocone to a colimit cocone, then
404+
`F` creates limits. Note that unlike `createsColimitOfReflectsIso`, to apply this result it is
405+
necessary to know that `K ⋙ F` actually has a colimit. -/
406+
def createsColimitOfReflectsIso' {K : J ⥤ C} {F : C ⥤ D} [ReflectsIsomorphisms F]
407+
{c : Cocone (K ⋙ F)} (hc : IsColimit c) (h : LiftsToColimit K F c hc) : CreatesColimit K F :=
408+
createsColimitOfReflectsIso fun _ t =>
409+
{ liftedCocone := h.liftedCocone
410+
validLift := h.validLift ≪≫ IsColimit.uniqueUpToIso hc t
411+
makesColimit := h.makesColimit }
412+
393413
-- Notice however that even if the isomorphism is `Iso.refl _`,
394414
-- this construction will insert additional identity morphisms in the cocone maps,
395415
-- so the constructed colimits may not be ideal, definitionally.

0 commit comments

Comments
 (0)