Skip to content

Commit b6513d2

Browse files
committed
feat(CategoryTheory): more preservation properties of functors (#32423)
We consider the preservation of a limit or a colimit as an `ObjectProperty` in the category of functors.
1 parent f9a3323 commit b6513d2

File tree

1 file changed

+80
-1
lines changed

1 file changed

+80
-1
lines changed

Mathlib/CategoryTheory/ObjectProperty/FunctorCategory/PreservesLimits.lean

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,43 @@ namespace CategoryTheory
2424

2525
open 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

2930
namespace 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`
3265
which preserves limits of shape `K`. -/
3366
abbrev preservesLimitsOfShape : ObjectProperty (J ⥤ C) := PreservesLimitsOfShape K
@@ -36,6 +69,44 @@ abbrev preservesLimitsOfShape : ObjectProperty (J ⥤ C) := PreservesLimitsOfSha
3669
lemma 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`
40111
which preserves finite limits. -/
41112
abbrev preservesFiniteLimits : ObjectProperty (J ⥤ C) := PreservesFiniteLimits
@@ -44,6 +115,14 @@ abbrev preservesFiniteLimits : ObjectProperty (J ⥤ C) := PreservesFiniteLimits
44115
lemma 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+
47126
instance [HasColimitsOfShape K' C]
48127
[PreservesLimitsOfShape K (colim (J := K') (C := C))] :
49128
(preservesLimitsOfShape K : ObjectProperty (J ⥤ C)).IsClosedUnderColimitsOfShape K' where

0 commit comments

Comments
 (0)