Skip to content

Commit 4bfb4cd

Browse files
mathlib-splicebot[bot]chrisflav
authored andcommitted
chore(Mathlib/CategoryTheory/Limits): add iff_of_natIso versions of variants of preservesLimits_of_natIso (leanprover-community#39667)
... as well as `preservesLimit_iff_isLimit_mapCone`: a functor preserves a limit if and only if it preserves some limit cone This PR was automatically created from PR leanprover-community#39572 by @chrisflav via a [review comment](leanprover-community#39572 (comment)) by @dagurtomas. Co-authored-by: chrisflav <136261474+chrisflav@users.noreply.github.com>
1 parent 3aa2d0c commit 4bfb4cd

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

Mathlib/CategoryTheory/Limits/Preserves/Basic.lean

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ lemma preservesLimit_of_preserves_limit_cone {F : C ⥤ D} {t : Cone K} (h : IsL
218218
(hF : IsLimit (F.mapCone t)) : PreservesLimit K F where
219219
preserves h' := ⟨IsLimit.ofIsoLimit hF (Functor.mapIso _ (IsLimit.uniqueUpToIso h h'))⟩
220220

221+
lemma preservesLimit_iff_isLimit_mapCone {F : C ⥤ D} {t : Cone K} (h : IsLimit t) :
222+
PreservesLimit K F ↔ Nonempty (IsLimit (F.mapCone t)) :=
223+
fun _ ↦ ⟨isLimitOfPreserves _ h⟩, fun h' ↦ preservesLimit_of_preserves_limit_cone h h'.some⟩
224+
221225
/-- Transfer preservation of limits along a natural isomorphism in the diagram. -/
222226
lemma preservesLimit_of_iso_diagram {K₁ K₂ : J ⥤ C} (F : C ⥤ D) (h : K₁ ≅ K₂)
223227
[PreservesLimit K₁ F] : PreservesLimit K₂ F where
@@ -232,16 +236,28 @@ lemma preservesLimit_of_natIso (K : J ⥤ C) {F G : C ⥤ D} (h : F ≅ G) [Pres
232236
PreservesLimit K G where
233237
preserves t := ⟨IsLimit.mapConeEquiv h (isLimitOfPreserves F t)⟩
234238

239+
lemma preservesLimit_iff_of_natIso (K : J ⥤ C) {F G : C ⥤ D} (h : F ≅ G) :
240+
PreservesLimit K F ↔ PreservesLimit K G :=
241+
fun _ ↦ preservesLimit_of_natIso _ h, fun _ ↦ preservesLimit_of_natIso _ h.symm⟩
242+
235243
/-- Transfer preservation of limits of shape along a natural isomorphism in the functor. -/
236244
lemma preservesLimitsOfShape_of_natIso {F G : C ⥤ D} (h : F ≅ G) [PreservesLimitsOfShape J F] :
237245
PreservesLimitsOfShape J G where
238246
preservesLimit {K} := preservesLimit_of_natIso K h
239247

248+
lemma preservesLimitsOfShape_iff_of_natIso {F G : C ⥤ D} (h : F ≅ G) :
249+
PreservesLimitsOfShape J F ↔ PreservesLimitsOfShape J G :=
250+
fun _ ↦ preservesLimitsOfShape_of_natIso h, fun _ ↦ preservesLimitsOfShape_of_natIso h.symm⟩
251+
240252
/-- Transfer preservation of limits along a natural isomorphism in the functor. -/
241253
lemma preservesLimits_of_natIso {F G : C ⥤ D} (h : F ≅ G) [PreservesLimitsOfSize.{w, w'} F] :
242254
PreservesLimitsOfSize.{w, w'} G where
243255
preservesLimitsOfShape := preservesLimitsOfShape_of_natIso h
244256

257+
lemma preservesLimitsOfSize_iff_of_natIso {F G : C ⥤ D} (h : F ≅ G) :
258+
PreservesLimitsOfSize.{w, w'} F ↔ PreservesLimitsOfSize.{w, w'} G :=
259+
fun _ ↦ preservesLimits_of_natIso h, fun _ ↦ preservesLimits_of_natIso h.symm⟩
260+
245261
/-- Transfer preservation of limits along an equivalence in the shape. -/
246262
lemma preservesLimitsOfShape_of_equiv {J' : Type w₂} [Category.{w₂'} J'] (e : J ≌ J') (F : C ⥤ D)
247263
[PreservesLimitsOfShape J F] : PreservesLimitsOfShape J' F where
@@ -276,6 +292,11 @@ lemma preservesColimit_of_preserves_colimit_cocone {F : C ⥤ D} {t : Cocone K}
276292
(hF : IsColimit (F.mapCocone t)) : PreservesColimit K F :=
277293
fun h' => ⟨IsColimit.ofIsoColimit hF (Functor.mapIso _ (IsColimit.uniqueUpToIso h h'))⟩⟩
278294

295+
lemma preservesColimit_iff_isColimit_mapCocone {F : C ⥤ D} {t : Cocone K} (h : IsColimit t) :
296+
PreservesColimit K F ↔ Nonempty (IsColimit (F.mapCocone t)) :=
297+
fun _ ↦ ⟨isColimitOfPreserves _ h⟩,
298+
fun h' ↦ preservesColimit_of_preserves_colimit_cocone h h'.some⟩
299+
279300
/-- Transfer preservation of colimits along a natural isomorphism in the shape. -/
280301
lemma preservesColimit_of_iso_diagram {K₁ K₂ : J ⥤ C} (F : C ⥤ D) (h : K₁ ≅ K₂)
281302
[PreservesColimit K₁ F] :
@@ -291,16 +312,28 @@ lemma preservesColimit_of_natIso (K : J ⥤ C) {F G : C ⥤ D} (h : F ≅ G) [Pr
291312
PreservesColimit K G where
292313
preserves t := ⟨IsColimit.mapCoconeEquiv h (isColimitOfPreserves F t)⟩
293314

315+
lemma preservesColimit_iff_of_natIso (K : J ⥤ C) {F G : C ⥤ D} (h : F ≅ G) :
316+
PreservesColimit K F ↔ PreservesColimit K G :=
317+
fun _ ↦ preservesColimit_of_natIso _ h, fun _ ↦ preservesColimit_of_natIso _ h.symm⟩
318+
294319
/-- Transfer preservation of colimits of shape along a natural isomorphism in the functor. -/
295320
lemma preservesColimitsOfShape_of_natIso {F G : C ⥤ D} (h : F ≅ G) [PreservesColimitsOfShape J F] :
296321
PreservesColimitsOfShape J G where
297322
preservesColimit {K} := preservesColimit_of_natIso K h
298323

324+
lemma preservesColimitsOfShape_iff_of_natIso {F G : C ⥤ D} (h : F ≅ G) :
325+
PreservesColimitsOfShape J F ↔ PreservesColimitsOfShape J G :=
326+
fun _ ↦ preservesColimitsOfShape_of_natIso h, fun _ ↦ preservesColimitsOfShape_of_natIso h.symm⟩
327+
299328
/-- Transfer preservation of colimits along a natural isomorphism in the functor. -/
300329
lemma preservesColimits_of_natIso {F G : C ⥤ D} (h : F ≅ G) [PreservesColimitsOfSize.{w, w'} F] :
301330
PreservesColimitsOfSize.{w, w'} G where
302331
preservesColimitsOfShape {_J} _𝒥₁ := preservesColimitsOfShape_of_natIso h
303332

333+
lemma preservesColimitsOfSize_iff_of_natIso {F G : C ⥤ D} (h : F ≅ G) :
334+
PreservesColimitsOfSize.{w, w'} F ↔ PreservesColimitsOfSize.{w, w'} G :=
335+
fun _ ↦ preservesColimits_of_natIso h, fun _ ↦ preservesColimits_of_natIso h.symm⟩
336+
304337
/-- Transfer preservation of colimits along an equivalence in the shape. -/
305338
lemma preservesColimitsOfShape_of_equiv {J' : Type w₂} [Category.{w₂'} J'] (e : J ≌ J') (F : C ⥤ D)
306339
[PreservesColimitsOfShape J F] : PreservesColimitsOfShape J' F where

0 commit comments

Comments
 (0)