@@ -16,6 +16,10 @@ stalks are local rings), and morphisms between these (morphisms in `SheafedSpace
16
16
`is_local_ring_hom` on the stalk maps).
17
17
-/
18
18
19
+ -- Explicit universe annotations were used in this file to improve perfomance #12737
20
+
21
+ universe u
22
+
19
23
open CategoryTheory
20
24
21
25
open TopCat
@@ -33,7 +37,7 @@ such that all the stalks are local rings.
33
37
34
38
A morphism of locally ringed spaces is a morphism of ringed spaces
35
39
such that the morphisms induced on stalks are local ring homomorphisms. -/
36
- structure LocallyRingedSpace extends SheafedSpace CommRingCat where
40
+ structure LocallyRingedSpace extends SheafedSpace CommRingCat.{u} where
37
41
/-- Stalks of a locally ringed space are local rings. -/
38
42
localRing : ∀ x, LocalRing (presheaf.stalk x)
39
43
set_option linter.uppercaseLean3 false in
@@ -43,7 +47,7 @@ attribute [instance] LocallyRingedSpace.localRing
43
47
44
48
namespace LocallyRingedSpace
45
49
46
- variable (X : LocallyRingedSpace)
50
+ variable (X : LocallyRingedSpace.{u} )
47
51
48
52
/-- An alias for `to_SheafedSpace`, where the result type is a `RingedSpace`.
49
53
This allows us to use dot-notation for the `RingedSpace` namespace.
@@ -59,7 +63,7 @@ def toTopCat : TopCat :=
59
63
set_option linter.uppercaseLean3 false in
60
64
#align algebraic_geometry.LocallyRingedSpace.to_Top AlgebraicGeometry.LocallyRingedSpace.toTopCat
61
65
62
- instance : CoeSort LocallyRingedSpace (Type * ) :=
66
+ instance : CoeSort LocallyRingedSpace (Type u ) :=
63
67
⟨fun X : LocallyRingedSpace => (X.toTopCat : Type _)⟩
64
68
65
69
instance (x : X) : LocalRing (X.stalk x) :=
@@ -76,7 +80,7 @@ set_option linter.uppercaseLean3 false in
76
80
/-- A morphism of locally ringed spaces is a morphism of ringed spaces
77
81
such that the morphisms induced on stalks are local ring homomorphisms. -/
78
82
@[ext]
79
- structure Hom (X Y : LocallyRingedSpace) : Type _ where
83
+ structure Hom (X Y : LocallyRingedSpace.{u} ) : Type _ where
80
84
/-- the underlying morphism between ringed spaces -/
81
85
val : X.toSheafedSpace ⟶ Y.toSheafedSpace
82
86
/-- the underlying morphism induces a local ring homomorphism on stalks -/
@@ -87,14 +91,14 @@ set_option linter.uppercaseLean3 false in
87
91
instance : Quiver LocallyRingedSpace :=
88
92
⟨Hom⟩
89
93
90
- @[ext] lemma Hom.ext' (X Y : LocallyRingedSpace) {f g : X ⟶ Y} (h : f.val = g.val) : f = g :=
94
+ @[ext] lemma Hom.ext' (X Y : LocallyRingedSpace.{u} ) {f g : X ⟶ Y} (h : f.val = g.val) : f = g :=
91
95
Hom.ext _ _ h
92
96
93
97
-- TODO perhaps we should make a bundled `LocalRing` and return one here?
94
98
-- TODO define `sheaf.stalk` so we can write `X.𝒪.stalk` here?
95
99
/-- The stalk of a locally ringed space, just as a `CommRing`.
96
100
-/
97
- noncomputable def stalk (X : LocallyRingedSpace) (x : X) : CommRingCat :=
101
+ noncomputable def stalk (X : LocallyRingedSpace.{u} ) (x : X) : CommRingCat :=
98
102
X.presheaf.stalk x
99
103
set_option linter.uppercaseLean3 false in
100
104
#align algebraic_geometry.LocallyRingedSpace.stalk AlgebraicGeometry.LocallyRingedSpace.stalk
@@ -106,39 +110,39 @@ instance stalkLocal (x : X) : LocalRing <| X.stalk x := X.localRing x
106
110
/-- A morphism of locally ringed spaces `f : X ⟶ Y` induces
107
111
a local ring homomorphism from `Y.stalk (f x)` to `X.stalk x` for any `x : X`.
108
112
-/
109
- noncomputable def stalkMap {X Y : LocallyRingedSpace} (f : X ⟶ Y) (x : X) :
113
+ noncomputable def stalkMap {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) (x : X) :
110
114
Y.stalk (f.1 .1 x) ⟶ X.stalk x :=
111
115
PresheafedSpace.stalkMap f.1 x
112
116
set_option linter.uppercaseLean3 false in
113
117
#align algebraic_geometry.LocallyRingedSpace.stalk_map AlgebraicGeometry.LocallyRingedSpace.stalkMap
114
118
115
- instance {X Y : LocallyRingedSpace} (f : X ⟶ Y) (x : X) : IsLocalRingHom (stalkMap f x) :=
119
+ instance {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) (x : X) : IsLocalRingHom (stalkMap f x) :=
116
120
f.2 x
117
121
118
- instance {X Y : LocallyRingedSpace} (f : X ⟶ Y) (x : X) :
122
+ instance {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) (x : X) :
119
123
IsLocalRingHom (PresheafedSpace.stalkMap f.1 x) :=
120
124
f.2 x
121
125
122
126
/-- The identity morphism on a locally ringed space. -/
123
127
@[simps]
124
- def id (X : LocallyRingedSpace) : Hom X X :=
128
+ def id (X : LocallyRingedSpace.{u} ) : Hom X X :=
125
129
⟨𝟙 _, fun x => by erw [PresheafedSpace.stalkMap.id]; apply isLocalRingHom_id⟩
126
130
set_option linter.uppercaseLean3 false in
127
131
#align algebraic_geometry.LocallyRingedSpace.id AlgebraicGeometry.LocallyRingedSpace.id
128
132
129
- instance (X : LocallyRingedSpace) : Inhabited (Hom X X) :=
133
+ instance (X : LocallyRingedSpace.{u} ) : Inhabited (Hom X X) :=
130
134
⟨id X⟩
131
135
132
136
/-- Composition of morphisms of locally ringed spaces. -/
133
- def comp {X Y Z : LocallyRingedSpace} (f : Hom X Y) (g : Hom Y Z) : Hom X Z :=
137
+ def comp {X Y Z : LocallyRingedSpace.{u} } (f : Hom X Y) (g : Hom Y Z) : Hom X Z :=
134
138
⟨f.val ≫ g.val, fun x => by
135
139
erw [PresheafedSpace.stalkMap.comp]
136
140
exact @isLocalRingHom_comp _ _ _ _ _ _ _ _ (f.2 _) (g.2 _)⟩
137
141
set_option linter.uppercaseLean3 false in
138
142
#align algebraic_geometry.LocallyRingedSpace.comp AlgebraicGeometry.LocallyRingedSpace.comp
139
143
140
144
/-- The category of locally ringed spaces. -/
141
- instance : Category LocallyRingedSpace where
145
+ instance : Category LocallyRingedSpace.{u} where
142
146
Hom := Hom
143
147
id := id
144
148
comp {X Y Z} f g := comp f g
@@ -148,7 +152,7 @@ instance : Category LocallyRingedSpace where
148
152
149
153
/-- The forgetful functor from `LocallyRingedSpace` to `SheafedSpace CommRing`. -/
150
154
@[simps]
151
- def forgetToSheafedSpace : LocallyRingedSpace ⥤ SheafedSpace CommRingCat where
155
+ def forgetToSheafedSpace : LocallyRingedSpace.{u} ⥤ SheafedSpace CommRingCat.{u} where
152
156
obj X := X.toSheafedSpace
153
157
map {X Y} f := f.1
154
158
set_option linter.uppercaseLean3 false in
@@ -159,13 +163,13 @@ instance : forgetToSheafedSpace.Faithful where
159
163
160
164
/-- The forgetful functor from `LocallyRingedSpace` to `Top`. -/
161
165
@[simps!]
162
- def forgetToTop : LocallyRingedSpace ⥤ TopCat :=
166
+ def forgetToTop : LocallyRingedSpace.{u} ⥤ TopCat.{u} :=
163
167
forgetToSheafedSpace ⋙ SheafedSpace.forget _
164
168
set_option linter.uppercaseLean3 false in
165
169
#align algebraic_geometry.LocallyRingedSpace.forget_to_Top AlgebraicGeometry.LocallyRingedSpace.forgetToTop
166
170
167
171
@[simp]
168
- theorem comp_val {X Y Z : LocallyRingedSpace} (f : X ⟶ Y) (g : Y ⟶ Z) :
172
+ theorem comp_val {X Y Z : LocallyRingedSpace.{u} } (f : X ⟶ Y) (g : Y ⟶ Z) :
169
173
(f ≫ g).val = f.val ≫ g.val :=
170
174
rfl
171
175
set_option linter.uppercaseLean3 false in
@@ -174,13 +178,13 @@ set_option linter.uppercaseLean3 false in
174
178
-- Porting note: complains that `(f ≫ g).val.c` can be further simplified
175
179
-- so changed to its simp normal form `(f.val ≫ g.val).c`
176
180
@[simp]
177
- theorem comp_val_c {X Y Z : LocallyRingedSpace} (f : X ⟶ Y) (g : Y ⟶ Z) :
181
+ theorem comp_val_c {X Y Z : LocallyRingedSpace.{u} } (f : X ⟶ Y) (g : Y ⟶ Z) :
178
182
(f.1 ≫ g.1 ).c = g.val.c ≫ (Presheaf.pushforward _ g.val.base).map f.val.c :=
179
183
rfl
180
184
set_option linter.uppercaseLean3 false in
181
185
#align algebraic_geometry.LocallyRingedSpace.comp_val_c AlgebraicGeometry.LocallyRingedSpace.comp_val_c
182
186
183
- theorem comp_val_c_app {X Y Z : LocallyRingedSpace} (f : X ⟶ Y) (g : Y ⟶ Z) (U : (Opens Z)ᵒᵖ) :
187
+ theorem comp_val_c_app {X Y Z : LocallyRingedSpace.{u} } (f : X ⟶ Y) (g : Y ⟶ Z) (U : (Opens Z)ᵒᵖ) :
184
188
(f ≫ g).val.c.app U = g.val.c.app U ≫ f.val.c.app (op <| (Opens.map g.val.base).obj U.unop) :=
185
189
rfl
186
190
set_option linter.uppercaseLean3 false in
@@ -192,8 +196,8 @@ spaces can be lifted to a morphism `X ⟶ Y` as locally ringed spaces.
192
196
See also `iso_of_SheafedSpace_iso`.
193
197
-/
194
198
@[simps]
195
- def homOfSheafedSpaceHomOfIsIso {X Y : LocallyRingedSpace} (f : X.toSheafedSpace ⟶ Y.toSheafedSpace)
196
- [IsIso f] : X ⟶ Y :=
199
+ def homOfSheafedSpaceHomOfIsIso {X Y : LocallyRingedSpace.{u}}
200
+ (f : X.toSheafedSpace ⟶ Y.toSheafedSpace) [IsIso f] : X ⟶ Y :=
197
201
Hom.mk f fun x =>
198
202
-- Here we need to see that the stalk maps are really local ring homomorphisms.
199
203
-- This can be solved by type class inference, because stalk maps of isomorphisms
@@ -210,7 +214,7 @@ This is related to the property that the functor `forget_to_SheafedSpace` reflec
210
214
In fact, it is slightly stronger as we do not require `f` to come from a morphism between
211
215
_locally_ ringed spaces.
212
216
-/
213
- def isoOfSheafedSpaceIso {X Y : LocallyRingedSpace} (f : X.toSheafedSpace ≅ Y.toSheafedSpace) :
217
+ def isoOfSheafedSpaceIso {X Y : LocallyRingedSpace.{u} } (f : X.toSheafedSpace ≅ Y.toSheafedSpace) :
214
218
X ≅ Y where
215
219
hom := homOfSheafedSpaceHomOfIsIso f.hom
216
220
inv := homOfSheafedSpaceHomOfIsIso f.inv
@@ -224,15 +228,15 @@ instance : forgetToSheafedSpace.ReflectsIsomorphisms where reflects {_ _} f i :=
224
228
⟨homOfSheafedSpaceHomOfIsIso (CategoryTheory.inv (forgetToSheafedSpace.map f)),
225
229
Hom.ext _ _ (IsIso.hom_inv_id (I := i)), Hom.ext _ _ (IsIso.inv_hom_id (I := i))⟩ }
226
230
227
- instance is_sheafedSpace_iso {X Y : LocallyRingedSpace} (f : X ⟶ Y) [IsIso f] : IsIso f.1 :=
231
+ instance is_sheafedSpace_iso {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) [IsIso f] : IsIso f.1 :=
228
232
LocallyRingedSpace.forgetToSheafedSpace.map_isIso f
229
233
set_option linter.uppercaseLean3 false in
230
234
#align algebraic_geometry.LocallyRingedSpace.is_SheafedSpace_iso AlgebraicGeometry.LocallyRingedSpace.is_sheafedSpace_iso
231
235
232
236
/-- The restriction of a locally ringed space along an open embedding.
233
237
-/
234
238
@[simps!]
235
- def restrict {U : TopCat} (X : LocallyRingedSpace) {f : U ⟶ X.toTopCat} (h : OpenEmbedding f) :
239
+ def restrict {U : TopCat} (X : LocallyRingedSpace.{u} ) {f : U ⟶ X.toTopCat} (h : OpenEmbedding f) :
236
240
LocallyRingedSpace where
237
241
localRing := by
238
242
intro x
@@ -244,23 +248,23 @@ set_option linter.uppercaseLean3 false in
244
248
#align algebraic_geometry.LocallyRingedSpace.restrict AlgebraicGeometry.LocallyRingedSpace.restrict
245
249
246
250
/-- The canonical map from the restriction to the subspace. -/
247
- def ofRestrict {U : TopCat} (X : LocallyRingedSpace) {f : U ⟶ X.toTopCat} (h : OpenEmbedding f) :
248
- X.restrict h ⟶ X :=
251
+ def ofRestrict {U : TopCat} (X : LocallyRingedSpace.{u})
252
+ {f : U ⟶ X.toTopCat} (h : OpenEmbedding f) : X.restrict h ⟶ X :=
249
253
⟨X.toPresheafedSpace.ofRestrict h, fun _ => inferInstance⟩
250
254
set_option linter.uppercaseLean3 false in
251
255
#align algebraic_geometry.LocallyRingedSpace.of_restrict AlgebraicGeometry.LocallyRingedSpace.ofRestrict
252
256
253
257
/-- The restriction of a locally ringed space `X` to the top subspace is isomorphic to `X` itself.
254
258
-/
255
- def restrictTopIso (X : LocallyRingedSpace) :
259
+ def restrictTopIso (X : LocallyRingedSpace.{u} ) :
256
260
X.restrict (Opens.openEmbedding ⊤) ≅ X :=
257
261
isoOfSheafedSpaceIso X.toSheafedSpace.restrictTopIso
258
262
set_option linter.uppercaseLean3 false in
259
263
#align algebraic_geometry.LocallyRingedSpace.restrict_top_iso AlgebraicGeometry.LocallyRingedSpace.restrictTopIso
260
264
261
265
/-- The global sections, notated Gamma.
262
266
-/
263
- def Γ : LocallyRingedSpaceᵒᵖ ⥤ CommRingCat :=
267
+ def Γ : LocallyRingedSpace.{u}ᵒᵖ ⥤ CommRingCat.{u} :=
264
268
forgetToSheafedSpace.op ⋙ SheafedSpace.Γ
265
269
set_option linter.uppercaseLean3 false in
266
270
#align algebraic_geometry.LocallyRingedSpace.Γ AlgebraicGeometry.LocallyRingedSpace.Γ
@@ -271,28 +275,28 @@ set_option linter.uppercaseLean3 false in
271
275
#align algebraic_geometry.LocallyRingedSpace.Γ_def AlgebraicGeometry.LocallyRingedSpace.Γ_def
272
276
273
277
@[simp]
274
- theorem Γ_obj (X : LocallyRingedSpaceᵒᵖ ) : Γ.obj X = X.unop.presheaf.obj (op ⊤) :=
278
+ theorem Γ_obj (X : LocallyRingedSpace.{u}ᵒᵖ ) : Γ.obj X = X.unop.presheaf.obj (op ⊤) :=
275
279
rfl
276
280
set_option linter.uppercaseLean3 false in
277
281
#align algebraic_geometry.LocallyRingedSpace.Γ_obj AlgebraicGeometry.LocallyRingedSpace.Γ_obj
278
282
279
- theorem Γ_obj_op (X : LocallyRingedSpace) : Γ.obj (op X) = X.presheaf.obj (op ⊤) :=
283
+ theorem Γ_obj_op (X : LocallyRingedSpace.{u} ) : Γ.obj (op X) = X.presheaf.obj (op ⊤) :=
280
284
rfl
281
285
set_option linter.uppercaseLean3 false in
282
286
#align algebraic_geometry.LocallyRingedSpace.Γ_obj_op AlgebraicGeometry.LocallyRingedSpace.Γ_obj_op
283
287
284
288
@[simp]
285
- theorem Γ_map {X Y : LocallyRingedSpaceᵒᵖ } (f : X ⟶ Y) : Γ.map f = f.unop.1 .c.app (op ⊤) :=
289
+ theorem Γ_map {X Y : LocallyRingedSpace.{u}ᵒᵖ } (f : X ⟶ Y) : Γ.map f = f.unop.1 .c.app (op ⊤) :=
286
290
rfl
287
291
set_option linter.uppercaseLean3 false in
288
292
#align algebraic_geometry.LocallyRingedSpace.Γ_map AlgebraicGeometry.LocallyRingedSpace.Γ_map
289
293
290
- theorem Γ_map_op {X Y : LocallyRingedSpace} (f : X ⟶ Y) : Γ.map f.op = f.1 .c.app (op ⊤) :=
294
+ theorem Γ_map_op {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) : Γ.map f.op = f.1 .c.app (op ⊤) :=
291
295
rfl
292
296
set_option linter.uppercaseLean3 false in
293
297
#align algebraic_geometry.LocallyRingedSpace.Γ_map_op AlgebraicGeometry.LocallyRingedSpace.Γ_map_op
294
298
295
- theorem preimage_basicOpen {X Y : LocallyRingedSpace} (f : X ⟶ Y) {U : Opens Y}
299
+ theorem preimage_basicOpen {X Y : LocallyRingedSpace.{u} } (f : X ⟶ Y) {U : Opens Y}
296
300
(s : Y.presheaf.obj (op U)) :
297
301
(Opens.map f.1 .base).obj (Y.toRingedSpace.basicOpen s) =
298
302
@RingedSpace.basicOpen X.toRingedSpace ((Opens.map f.1 .base).obj U) (f.1 .c.app _ s) := by
@@ -311,7 +315,7 @@ set_option linter.uppercaseLean3 false in
311
315
312
316
-- This actually holds for all ringed spaces with nontrivial stalks.
313
317
@[simp]
314
- theorem basicOpen_zero (X : LocallyRingedSpace) (U : Opens X.carrier) :
318
+ theorem basicOpen_zero (X : LocallyRingedSpace.{u} ) (U : Opens X.carrier) :
315
319
X.toRingedSpace.basicOpen (0 : X.presheaf.obj <| op U) = ⊥ := by
316
320
ext x
317
321
simp only [RingedSpace.basicOpen, Opens.coe_mk, Set.mem_image, Set.mem_setOf_eq, Subtype.exists,
@@ -324,7 +328,7 @@ theorem basicOpen_zero (X : LocallyRingedSpace) (U : Opens X.carrier) :
324
328
set_option linter.uppercaseLean3 false in
325
329
#align algebraic_geometry.LocallyRingedSpace.basic_open_zero AlgebraicGeometry.LocallyRingedSpace.basicOpen_zero
326
330
327
- instance component_nontrivial (X : LocallyRingedSpace) (U : Opens X.carrier) [hU : Nonempty U] :
331
+ instance component_nontrivial (X : LocallyRingedSpace.{u} ) (U : Opens X.carrier) [hU : Nonempty U] :
328
332
Nontrivial (X.presheaf.obj <| op U) :=
329
333
(X.presheaf.germ hU.some).domain_nontrivial
330
334
set_option linter.uppercaseLean3 false in
0 commit comments