@@ -205,60 +205,83 @@ theorem isSheaf_of_isRepresentable (P : Cᵒᵖ ⥤ Type v) [P.IsRepresentable]
205
205
Presieve.IsSheaf (canonicalTopology C) P :=
206
206
Presieve.isSheaf_iso (canonicalTopology C) P.reprW (isSheaf_yoneda_obj _)
207
207
208
+ end Sheaf
209
+
210
+ namespace GrothendieckTopology
211
+
212
+ open Sheaf
213
+
208
214
/-- A subcanonical topology is a topology which is smaller than the canonical topology.
209
215
Equivalently, a topology is subcanonical iff every representable is a sheaf.
210
216
-/
211
- def Subcanonical (J : GrothendieckTopology C) : Prop :=
212
- J ≤ canonicalTopology C
217
+ class Subcanonical (J : GrothendieckTopology C) : Prop where
218
+ le_canonical : J ≤ canonicalTopology C
219
+
220
+ lemma le_canonical (J : GrothendieckTopology C) [Subcanonical J] : J ≤ canonicalTopology C :=
221
+ Subcanonical.le_canonical
222
+
223
+ instance : (canonicalTopology C).Subcanonical where
224
+ le_canonical := le_rfl
213
225
214
226
namespace Subcanonical
215
227
216
228
/-- If every functor `yoneda.obj X` is a `J`-sheaf, then `J` is subcanonical. -/
217
- theorem of_yoneda_isSheaf (J : GrothendieckTopology C)
218
- (h : ∀ X, Presieve.IsSheaf J (yoneda.obj X)) : Subcanonical J :=
219
- le_finestTopology _ _
220
- (by
221
- rintro P ⟨X, rfl⟩
222
- apply h)
229
+ theorem of_isSheaf_yoneda_obj (J : GrothendieckTopology C)
230
+ (h : ∀ X, Presieve.IsSheaf J (yoneda.obj X)) : Subcanonical J where
231
+ le_canonical := le_finestTopology _ _ (by rintro P ⟨X, rfl⟩; apply h)
223
232
224
233
/-- If `J` is subcanonical, then any representable is a `J`-sheaf. -/
225
- theorem isSheaf_of_isRepresentable {J : GrothendieckTopology C} (hJ : Subcanonical J)
234
+ theorem isSheaf_of_isRepresentable {J : GrothendieckTopology C} [ Subcanonical J]
226
235
(P : Cᵒᵖ ⥤ Type v) [P.IsRepresentable] : Presieve.IsSheaf J P :=
227
- Presieve.isSheaf_of_le _ hJ (Sheaf.isSheaf_of_isRepresentable P)
236
+ Presieve.isSheaf_of_le _ J.le_canonical (Sheaf.isSheaf_of_isRepresentable P)
228
237
229
- variable {J}
238
+ variable {J : GrothendieckTopology C}
239
+
240
+ end Subcanonical
241
+
242
+ variable {J : GrothendieckTopology C}
230
243
231
244
/--
232
245
If `J` is subcanonical, we obtain a "Yoneda" functor from the defining site
233
246
into the sheaf category.
234
247
-/
235
248
@[simps]
236
- def yoneda (hJ : Subcanonical J) : C ⥤ Sheaf J (Type v) where
249
+ def yoneda [J.Subcanonical] : C ⥤ Sheaf J (Type v) where
237
250
obj X := ⟨CategoryTheory.yoneda.obj X, by
238
251
rw [isSheaf_iff_isSheaf_of_type]
239
- apply hJ .isSheaf_of_isRepresentable⟩
252
+ apply Subcanonical .isSheaf_of_isRepresentable⟩
240
253
map f := ⟨CategoryTheory.yoneda.map f⟩
241
254
242
- variable (hJ : Subcanonical J)
255
+ variable [ Subcanonical J]
243
256
244
257
/--
245
258
The yoneda embedding into the presheaf category factors through the one
246
259
to the sheaf category.
247
260
-/
248
261
def yonedaCompSheafToPresheaf :
249
- hJ .yoneda ⋙ sheafToPresheaf J (Type v) ≅ CategoryTheory.yoneda :=
262
+ J .yoneda ⋙ sheafToPresheaf J (Type v) ≅ CategoryTheory.yoneda :=
250
263
Iso.refl _
251
264
252
265
/-- The yoneda functor into the sheaf category is fully faithful -/
253
- def yonedaFullyFaithful : hJ .yoneda.FullyFaithful :=
266
+ def yonedaFullyFaithful : (J .yoneda) .FullyFaithful :=
254
267
Functor.FullyFaithful.ofCompFaithful (G := sheafToPresheaf J (Type v)) Yoneda.fullyFaithful
255
268
256
- instance : hJ .yoneda.Full := hJ .yonedaFullyFaithful.full
269
+ instance : (J .yoneda) .Full := (J .yonedaFullyFaithful) .full
257
270
258
- instance : hJ .yoneda.Faithful := hJ .yonedaFullyFaithful.faithful
271
+ instance : (J .yoneda) .Faithful := (J .yonedaFullyFaithful) .faithful
259
272
260
- end Subcanonical
273
+ end GrothendieckTopology
261
274
262
- end Sheaf
275
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical := GrothendieckTopology.Subcanonical
276
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical.of_isSheaf_yoneda_obj :=
277
+ GrothendieckTopology.Subcanonical.of_isSheaf_yoneda_obj
278
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical.isSheaf_of_isRepresentable :=
279
+ GrothendieckTopology.Subcanonical.isSheaf_of_isRepresentable
280
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical.yoneda :=
281
+ GrothendieckTopology.yoneda
282
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical.yonedaCompSheafToPresheaf :=
283
+ GrothendieckTopology.yonedaCompSheafToPresheaf
284
+ @[deprecated (since := "2024-10-29")] alias Sheaf.Subcanonical.yonedaFullyFaithful :=
285
+ GrothendieckTopology.yonedaFullyFaithful
263
286
264
287
end CategoryTheory
0 commit comments