@@ -10,6 +10,8 @@ public import Mathlib.CategoryTheory.Comma.Over.Basic
1010public import Mathlib.CategoryTheory.Limits.Constructions.EpiMono
1111public import Mathlib.CategoryTheory.Limits.Creates
1212public import Mathlib.CategoryTheory.Limits.Unit
13+ public import Mathlib.CategoryTheory.Limits.Preserves.Finite
14+ public import Mathlib.CategoryTheory.Limits.Preserves.Creates.Finite
1315
1416/-!
1517# Limits and colimits in comma categories
@@ -150,6 +152,10 @@ instance hasLimitsOfSize [HasLimitsOfSize.{w, w'} A] [HasLimitsOfSize.{w, w'} B]
150152 [PreservesLimitsOfSize.{w, w'} R] : HasLimitsOfSize.{w, w'} (Comma L R) :=
151153 ⟨fun _ _ => inferInstance⟩
152154
155+ instance hasFiniteLimits [HasFiniteLimits A] [HasFiniteLimits B]
156+ [PreservesFiniteLimits R] : HasFiniteLimits (Comma L R) where
157+ out _ _ _ := inferInstance
158+
153159instance hasColimit (F : J ⥤ Comma L R) [HasColimit (F ⋙ fst L R)] [HasColimit (F ⋙ snd L R)]
154160 [PreservesColimit (F ⋙ fst L R) L] : HasColimit F :=
155161 HasColimit.mk ⟨_, coconeOfPreservesIsColimit _ (colimit.isColimit _) (colimit.isColimit _)⟩
@@ -161,6 +167,10 @@ instance hasColimitsOfSize [HasColimitsOfSize.{w, w'} A] [HasColimitsOfSize.{w,
161167 [PreservesColimitsOfSize.{w, w'} L] : HasColimitsOfSize.{w, w'} (Comma L R) :=
162168 ⟨fun _ _ => inferInstance⟩
163169
170+ instance hasFiniteColimits [HasFiniteColimits A] [HasFiniteColimits B]
171+ [PreservesFiniteColimits L] : HasFiniteColimits (Comma L R) where
172+ out _ _ _ := inferInstance
173+
164174instance preservesColimitsOfShape_fst [HasColimitsOfShape J A] [HasColimitsOfShape J B]
165175 [PreservesColimitsOfShape J L] : PreservesColimitsOfShape J (Comma.fst L R) where
166176 preservesColimit :=
@@ -188,6 +198,9 @@ instance hasLimit (F : J ⥤ Arrow T) [i₁ : HasLimit (F ⋙ leftFunc)] [i₂ :
188198
189199instance hasLimitsOfShape [HasLimitsOfShape J T] : HasLimitsOfShape J (Arrow T) where
190200
201+ instance hasFiniteLimits [HasFiniteLimits T] : HasFiniteLimits (Arrow T) where
202+ out _ _ _ := inferInstance
203+
191204instance hasLimits [HasLimits T] : HasLimits (Arrow T) :=
192205 ⟨fun _ _ => inferInstance⟩
193206
@@ -200,6 +213,9 @@ instance hasColimit (F : J ⥤ Arrow T) [i₁ : HasColimit (F ⋙ leftFunc)]
200213
201214instance hasColimitsOfShape [HasColimitsOfShape J T] : HasColimitsOfShape J (Arrow T) where
202215
216+ instance hasFiniteColimits [HasFiniteColimits T] : HasFiniteColimits (Arrow T) where
217+ out _ _ _ := inferInstance
218+
203219instance hasColimits [HasColimits T] : HasColimits (Arrow T) :=
204220 ⟨fun _ _ => inferInstance⟩
205221
@@ -230,6 +246,10 @@ instance hasLimit [i₁ : HasLimit (F ⋙ proj X G)] [i₂ : PreservesLimit (F
230246instance hasLimitsOfShape [HasLimitsOfShape J A] [PreservesLimitsOfShape J G] :
231247 HasLimitsOfShape J (StructuredArrow X G) where
232248
249+ instance hasFiniteLimits [HasFiniteLimits A] [PreservesFiniteLimits G] :
250+ HasFiniteLimits (StructuredArrow X G) where
251+ out _ _ _ := inferInstance
252+
233253instance hasLimitsOfSize [HasLimitsOfSize.{w, w'} A] [PreservesLimitsOfSize.{w, w'} G] :
234254 HasLimitsOfSize.{w, w'} (StructuredArrow X G) :=
235255 ⟨fun J hJ => by infer_instance⟩
@@ -246,6 +266,10 @@ noncomputable instance createsLimit [i : PreservesLimit (F ⋙ proj X G) G] :
246266noncomputable instance createsLimitsOfShape [PreservesLimitsOfShape J G] :
247267 CreatesLimitsOfShape J (proj X G) where
248268
269+ noncomputable instance createsFiniteLimits [PreservesFiniteLimits G] :
270+ CreatesFiniteLimits (proj X G) where
271+ createsFiniteLimits _ _ _ := inferInstance
272+
249273noncomputable instance createsLimitsOfSize [PreservesLimitsOfSize.{w, w'} G] :
250274 CreatesLimitsOfSize.{w, w'} (proj X G :) where
251275
@@ -277,6 +301,10 @@ instance hasColimit [i₁ : HasColimit (F ⋙ proj G X)] [i₂ : PreservesColimi
277301instance hasColimitsOfShape [HasColimitsOfShape J A] [PreservesColimitsOfShape J G] :
278302 HasColimitsOfShape J (CostructuredArrow G X) where
279303
304+ instance hasFiniteColimits [HasFiniteColimits A] [PreservesFiniteColimits G] :
305+ HasFiniteColimits (CostructuredArrow G X) where
306+ out _ _ _ := inferInstance
307+
280308instance hasColimitsOfSize [HasColimitsOfSize.{w, w'} A] [PreservesColimitsOfSize.{w, w'} G] :
281309 HasColimitsOfSize.{w, w'} (CostructuredArrow G X) :=
282310 ⟨fun _ _ => inferInstance⟩
@@ -293,6 +321,10 @@ noncomputable instance createsColimit [i : PreservesColimit (F ⋙ proj G X) G]
293321noncomputable instance createsColimitsOfShape [PreservesColimitsOfShape J G] :
294322 CreatesColimitsOfShape J (proj G X) where
295323
324+ noncomputable instance createsFiniteColimits [PreservesFiniteColimits G] :
325+ CreatesFiniteColimits (proj G X) where
326+ createsFiniteColimits _ _ _ := inferInstance
327+
296328noncomputable instance createsColimitsOfSize [PreservesColimitsOfSize.{w, w'} G] :
297329 CreatesColimitsOfSize.{w, w'} (proj G X :) where
298330
0 commit comments