@@ -24,10 +24,43 @@ namespace CategoryTheory
2424
2525open Limits
2626
27- variable {J C : Type *} (K K' : Type *) [Category K] [Category K'] [Category J] [Category C]
27+ variable {J J' C D : Type *} (K K' : Type *)
28+ [Category K] [Category K'] [Category J] [Category J'] [Category C] [Category D]
2829
2930namespace ObjectProperty
3031
32+ variable {K} in
33+ /-- The property of objects in the functor category `J ⥤ C`
34+ which preserves the limit of a functor `F : K ⥤ J`. -/
35+ abbrev preservesLimit (F : K ⥤ J) : ObjectProperty (J ⥤ C) := PreservesLimit F
36+
37+ @[simp]
38+ lemma preservesLimit_iff (F : K ⥤ J) (G : J ⥤ C) :
39+ preservesLimit F G ↔ PreservesLimit F G := Iff.rfl
40+
41+ lemma congr_preservesLimit {F F' : K ⥤ J} (e : F ≅ F') :
42+ preservesLimit (C := C) F = preservesLimit (C := C) F' := by
43+ ext G
44+ simp_rw [preservesLimit_iff]
45+ exact ⟨fun h ↦ preservesLimit_of_iso_diagram _ e,
46+ fun h ↦ preservesLimit_of_iso_diagram _ e.symm⟩
47+
48+ variable {K} in
49+ /-- The property of objects in the functor category `J ⥤ C`
50+ which preserves the colimit of a functor `F : K ⥤ J`. -/
51+ abbrev preservesColimit (F : K ⥤ J) : ObjectProperty (J ⥤ C) := PreservesColimit F
52+
53+ @[simp]
54+ lemma preservesColimit_iff (F : K ⥤ J) (G : J ⥤ C) :
55+ preservesColimit F G ↔ PreservesColimit F G := Iff.rfl
56+
57+ lemma congr_preservesColimit {F F' : K ⥤ J} (e : F ≅ F') :
58+ preservesColimit (C := C) F = preservesColimit (C := C) F' := by
59+ ext G
60+ simp_rw [preservesColimit_iff]
61+ exact ⟨fun h ↦ preservesColimit_of_iso_diagram _ e,
62+ fun h ↦ preservesColimit_of_iso_diagram _ e.symm⟩
63+
3164/-- The property of objects in the functor category `J ⥤ C`
3265which preserves limits of shape `K`. -/
3366abbrev preservesLimitsOfShape : ObjectProperty (J ⥤ C) := PreservesLimitsOfShape K
@@ -36,6 +69,44 @@ abbrev preservesLimitsOfShape : ObjectProperty (J ⥤ C) := PreservesLimitsOfSha
3669lemma preservesLimitsOfShape_iff (F : J ⥤ C) :
3770 preservesLimitsOfShape K F ↔ PreservesLimitsOfShape K F := Iff.rfl
3871
72+ lemma preservesLimitsOfShape_eq_iSup :
73+ preservesLimitsOfShape (J := J) (C := C) K =
74+ ⨅ (F : K ⥤ J), preservesLimit F := by
75+ ext G
76+ simp only [preservesLimitsOfShape_iff, iInf_apply, preservesLimit_iff, iInf_Prop_eq]
77+ exact ⟨fun _ ↦ inferInstance, fun _ ↦ ⟨inferInstance⟩⟩
78+
79+ variable (J C) {K K'} in
80+ lemma congr_preservesLimitsOfShape (e : K ≌ K') :
81+ preservesLimitsOfShape (J := J) (C := C) K = preservesLimitsOfShape K' := by
82+ ext G
83+ simp only [preservesLimitsOfShape_iff]
84+ exact ⟨fun _ ↦ preservesLimitsOfShape_of_equiv e _,
85+ fun _ ↦ preservesLimitsOfShape_of_equiv e.symm _⟩
86+
87+ /-- The property of objects in the functor category `J ⥤ C`
88+ which preserves colimits of shape `K`. -/
89+ abbrev preservesColimitsOfShape : ObjectProperty (J ⥤ C) := PreservesColimitsOfShape K
90+
91+ @[simp]
92+ lemma preservesColimitsOfShape_iff (F : J ⥤ C) :
93+ preservesColimitsOfShape K F ↔ PreservesColimitsOfShape K F := Iff.rfl
94+
95+ lemma preservesColimitsOfShape_eq_iSup :
96+ preservesColimitsOfShape (J := J) (C := C) K =
97+ ⨅ (F : K ⥤ J), preservesColimit F := by
98+ ext G
99+ simp only [preservesColimitsOfShape_iff, iInf_apply, preservesColimit_iff, iInf_Prop_eq]
100+ exact ⟨fun _ ↦ inferInstance, fun _ ↦ ⟨inferInstance⟩⟩
101+
102+ variable (J C) {K K'} in
103+ lemma congr_preservesColimitsOfShape (e : K ≌ K') :
104+ preservesColimitsOfShape (J := J) (C := C) K = preservesColimitsOfShape K' := by
105+ ext G
106+ simp only [preservesColimitsOfShape_iff]
107+ exact ⟨fun _ ↦ preservesColimitsOfShape_of_equiv e _,
108+ fun _ ↦ preservesColimitsOfShape_of_equiv e.symm _⟩
109+
39110/-- The property of objects in the functor category `J ⥤ C`
40111which preserves finite limits. -/
41112abbrev preservesFiniteLimits : ObjectProperty (J ⥤ C) := PreservesFiniteLimits
@@ -44,6 +115,14 @@ abbrev preservesFiniteLimits : ObjectProperty (J ⥤ C) := PreservesFiniteLimits
44115lemma preservesFiniteLimits_iff (F : J ⥤ C) :
45116 preservesFiniteLimits F ↔ PreservesFiniteLimits F := Iff.rfl
46117
118+ /-- The property of objects in the functor category `J ⥤ C`
119+ which preserves finite colimits. -/
120+ abbrev preservesFiniteColimits : ObjectProperty (J ⥤ C) := PreservesFiniteColimits
121+
122+ @[simp]
123+ lemma preservesFiniteColimits_iff (F : J ⥤ C) :
124+ preservesFiniteColimits F ↔ PreservesFiniteColimits F := Iff.rfl
125+
47126instance [HasColimitsOfShape K' C]
48127 [PreservesLimitsOfShape K (colim (J := K') (C := C))] :
49128 (preservesLimitsOfShape K : ObjectProperty (J ⥤ C)).IsClosedUnderColimitsOfShape K' where
0 commit comments