@@ -28,30 +28,28 @@ open Limits
28
28
namespace Localization
29
29
30
30
variable {C : Type u₁} {D : Type u₂} [Category.{v₁} C] [Category.{v₂} D] (L : C ⥤ D)
31
- { W : MorphismProperty C} [L.IsLocalization W]
31
+ ( W : MorphismProperty C) [L.IsLocalization W]
32
32
33
33
namespace HasProductsOfShapeAux
34
34
35
- variable {J : Type } [HasProductsOfShape J C]
36
- (hW : W.IsStableUnderProductsOfShape J)
37
- include hW
35
+ variable (J : Type ) [HasProductsOfShape J C] [W.IsStableUnderProductsOfShape J]
38
36
39
37
lemma inverts :
40
38
(W.functorCategory (Discrete J)).IsInvertedBy (lim ⋙ L) :=
41
- fun _ _ f hf => Localization.inverts L W _ (hW .limMap f hf)
39
+ fun _ _ f hf => Localization.inverts L W _ (MorphismProperty .limMap f hf)
42
40
43
41
variable [W.ContainsIdentities] [Finite J]
44
42
45
43
/-- The (candidate) limit functor for the localized category.
46
44
It is induced by `lim ⋙ L : (Discrete J ⥤ C) ⥤ D`. -/
47
45
noncomputable abbrev limitFunctor :
48
46
(Discrete J ⥤ D) ⥤ D :=
49
- Localization.lift _ (inverts L hW )
47
+ Localization.lift _ (inverts L W J )
50
48
((whiskeringRight (Discrete J) C D).obj L)
51
49
52
- /-- The functor `limitFunctor L hW ` is induced by `lim ⋙ L`. -/
50
+ /-- The functor `limitFunctor L W J ` is induced by `lim ⋙ L`. -/
53
51
noncomputable def compLimitFunctorIso :
54
- ((whiskeringRight (Discrete J) C D).obj L) ⋙ limitFunctor L hW ≅
52
+ ((whiskeringRight (Discrete J) C D).obj L) ⋙ limitFunctor L W J ≅
55
53
lim ⋙ L := by
56
54
apply Localization.fac
57
55
@@ -61,56 +59,54 @@ instance :
61
59
iso' := (Functor.compConstIso _ _).symm
62
60
63
61
noncomputable instance :
64
- CatCommSq lim ((whiskeringRight (Discrete J) C D).obj L) L (limitFunctor L hW ) where
65
- iso' := (compLimitFunctorIso L hW ).symm
62
+ CatCommSq lim ((whiskeringRight (Discrete J) C D).obj L) L (limitFunctor L W J ) where
63
+ iso' := (compLimitFunctorIso L W J ).symm
66
64
67
65
/-- The adjunction between the constant functor `D ⥤ (Discrete J ⥤ D)`
68
- and `limitFunctor L hW `. -/
66
+ and `limitFunctor L W J `. -/
69
67
noncomputable def adj :
70
- Functor.const _ ⊣ limitFunctor L hW :=
68
+ Functor.const _ ⊣ limitFunctor L W J :=
71
69
constLimAdj.localization L W ((whiskeringRight (Discrete J) C D).obj L)
72
- (W.functorCategory (Discrete J)) (Functor.const _) (limitFunctor L hW )
70
+ (W.functorCategory (Discrete J)) (Functor.const _) (limitFunctor L W J )
73
71
74
72
lemma adj_counit_app (F : Discrete J ⥤ C) :
75
- (adj L hW ).counit.app (F ⋙ L) =
76
- (Functor.const (Discrete J)).map ((compLimitFunctorIso L hW ).hom.app F) ≫
73
+ (adj L W J ).counit.app (F ⋙ L) =
74
+ (Functor.const (Discrete J)).map ((compLimitFunctorIso L W J ).hom.app F) ≫
77
75
(Functor.compConstIso (Discrete J) L).hom.app (lim.obj F) ≫
78
76
whiskerRight (constLimAdj.counit.app F) L := by
79
77
apply constLimAdj.localization_counit_app
80
78
81
79
/-- Auxiliary definition for `Localization.preservesProductsOfShape`. -/
82
80
noncomputable def isLimitMapCone (F : Discrete J ⥤ C) :
83
81
IsLimit (L.mapCone (limit.cone F)) :=
84
- IsLimit.ofIsoLimit (isLimitConeOfAdj (adj L hW ) (F ⋙ L))
85
- (Cones.ext ((compLimitFunctorIso L hW ).app F) (by simp [adj_counit_app, constLimAdj]))
82
+ IsLimit.ofIsoLimit (isLimitConeOfAdj (adj L W J ) (F ⋙ L))
83
+ (Cones.ext ((compLimitFunctorIso L W J ).app F) (by simp [adj_counit_app, constLimAdj]))
86
84
87
85
end HasProductsOfShapeAux
88
86
89
- variable (W)
90
87
variable [W.ContainsIdentities]
91
88
92
89
include L
93
90
lemma hasProductsOfShape (J : Type ) [Finite J] [HasProductsOfShape J C]
94
- (hW : W.IsStableUnderProductsOfShape J) :
91
+ [ W.IsStableUnderProductsOfShape J] :
95
92
HasProductsOfShape J D :=
96
93
hasLimitsOfShape_iff_isLeftAdjoint_const.2
97
- (HasProductsOfShapeAux.adj L hW ).isLeftAdjoint
94
+ (HasProductsOfShapeAux.adj L W J ).isLeftAdjoint
98
95
99
96
/-- When `C` has finite products indexed by `J`, `W : MorphismProperty C` contains
100
97
identities and is stable by products indexed by `J`,
101
98
then any localization functor for `W` preserves finite products indexed by `J`. -/
102
99
lemma preservesProductsOfShape (J : Type ) [Finite J]
103
- [HasProductsOfShape J C] (hW : W.IsStableUnderProductsOfShape J) :
100
+ [HasProductsOfShape J C] [ W.IsStableUnderProductsOfShape J] :
104
101
PreservesLimitsOfShape (Discrete J) L where
105
102
preservesLimit {F} := preservesLimit_of_preserves_limit_cone (limit.isLimit F)
106
- (HasProductsOfShapeAux.isLimitMapCone L hW F)
103
+ (HasProductsOfShapeAux.isLimitMapCone L W J F)
107
104
108
105
variable [HasFiniteProducts C] [W.IsStableUnderFiniteProducts]
109
106
110
107
include W in
111
108
lemma hasFiniteProducts : HasFiniteProducts D :=
112
- ⟨fun _ => hasProductsOfShape L W _
113
- (W.isStableUnderProductsOfShape_of_isStableUnderFiniteProducts _)⟩
109
+ ⟨fun _ => hasProductsOfShape L W _⟩
114
110
115
111
include W in
116
112
/-- When `C` has finite products and `W : MorphismProperty C` contains
@@ -119,7 +115,6 @@ then any localization functor for `W` preserves finite products. -/
119
115
lemma preservesFiniteProducts :
120
116
PreservesFiniteProducts L where
121
117
preserves _ := preservesProductsOfShape L W _
122
- (W.isStableUnderProductsOfShape_of_isStableUnderFiniteProducts _)
123
118
124
119
instance : HasFiniteProducts (W.Localization) := hasFiniteProducts W.Q W
125
120
0 commit comments