Skip to content

Commit c56c733

Browse files
committed
feat(CategoryTheory/Sites): the category structure on the points of a site (#31711)
1 parent 6789ae6 commit c56c733

File tree

4 files changed

+157
-3
lines changed

4 files changed

+157
-3
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3038,6 +3038,7 @@ public import Mathlib.CategoryTheory.Sites.NonabelianCohomology.H1
30383038
public import Mathlib.CategoryTheory.Sites.Over
30393039
public import Mathlib.CategoryTheory.Sites.Plus
30403040
public import Mathlib.CategoryTheory.Sites.Point.Basic
3041+
public import Mathlib.CategoryTheory.Sites.Point.Category
30413042
public import Mathlib.CategoryTheory.Sites.Precoverage
30423043
public import Mathlib.CategoryTheory.Sites.Preserves
30433044
public import Mathlib.CategoryTheory.Sites.PreservesLocallyBijective

Mathlib/CategoryTheory/Sites/Point/Basic.lean

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ noncomputable def toPresheafFiber (X : C) (x : Φ.fiber.obj X) (P : Cᵒᵖ ⥤
9797
P.obj (op X) ⟶ Φ.presheafFiber.obj P :=
9898
colimit.ι ((CategoryOfElements.π Φ.fiber).op ⋙ P) (op ⟨X, x⟩)
9999

100+
@[ext]
101+
lemma presheafFiber_hom_ext
102+
{P : Cᵒᵖ ⥤ A} {T : A} {f g : Φ.presheafFiber.obj P ⟶ T}
103+
(h : ∀ (X : C) (x : Φ.fiber.obj X), Φ.toPresheafFiber X x P ≫ f =
104+
Φ.toPresheafFiber X x P ≫ g) : f = g :=
105+
colimit.hom_ext (by rintro ⟨⟨X, x⟩⟩; exact h X x)
106+
100107
/-- Given a point `Φ` of a site `(C, J)`, `X : C` and `x : Φ.fiber.obj X`,
101108
this is the map `P.obj (op X) ⟶ Φ.presheafFiber.obj P` for any `P : Cᵒᵖ ⥤ A`
102109
as a natural transformation. -/
@@ -106,20 +113,38 @@ noncomputable def toPresheafFiberNatTrans (X : C) (x : Φ.fiber.obj X) :
106113
app := Φ.toPresheafFiber X x
107114
naturality _ _ f := by simp [presheafFiber, toPresheafFiber]
108115

109-
@[elementwise (attr := simp)]
116+
@[reassoc (attr := simp), elementwise (attr := simp)]
110117
lemma toPresheafFiber_w {X Y : C} (f : X ⟶ Y) (x : Φ.fiber.obj X) (P : Cᵒᵖ ⥤ A) :
111118
P.map f.op ≫ Φ.toPresheafFiber X x P =
112119
Φ.toPresheafFiber Y (Φ.fiber.map f x) P :=
113120
colimit.w ((CategoryOfElements.π Φ.fiber).op ⋙ P)
114121
(CategoryOfElements.homMk ⟨X, x⟩ ⟨Y, Φ.fiber.map f x⟩ f rfl).op
115122

116-
@[reassoc (attr := elementwise)]
123+
@[reassoc (attr := simp), elementwise (attr := simp)]
117124
lemma toPresheafFiber_naturality {P Q : Cᵒᵖ ⥤ A} (g : P ⟶ Q) (X : C) (x : Φ.fiber.obj X) :
118125
Φ.toPresheafFiber X x P ≫ Φ.presheafFiber.map g =
119126
g.app (op X) ≫ Φ.toPresheafFiber X x Q :=
120127
((Φ.toPresheafFiberNatTrans X x).naturality g).symm
121128

122-
attribute [simp] toPresheafFiber_naturality_apply
129+
section
130+
131+
variable {P : Cᵒᵖ ⥤ A} {T : A}
132+
(φ : ∀ (X : C) (_ : Φ.fiber.obj X), P.obj (op X) ⟶ T)
133+
(hφ : ∀ ⦃X Y : C⦄ (f : X ⟶ Y) (x : Φ.fiber.obj X),
134+
P.map f.op ≫ φ X x = φ Y (Φ.fiber.map f x) := by cat_disch)
135+
136+
/-- Constructor for morphisms from the fiber of a presheaf. -/
137+
noncomputable def presheafFiberDesc :
138+
Φ.presheafFiber.obj P ⟶ T :=
139+
colimit.desc _ (Cocone.mk _ { app x := φ x.unop.1 x.unop.2 })
140+
141+
@[reassoc (attr := simp)]
142+
lemma toPresheafFiber_presheafFiberDesc (X : C) (x : Φ.fiber.obj X) :
143+
Φ.toPresheafFiber X x P ≫ Φ.presheafFiberDesc φ hφ = φ X x :=
144+
colimit.ι_desc _ _
145+
146+
end
147+
123148
variable {FC : A → A → Type*} {CC : A → Type w'}
124149
[∀ (X Y : A), FunLike (FC X Y) (CC X) (CC Y)]
125150
[ConcreteCategory.{w'} A FC]
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/-
2+
Copyright (c) 2025 Joël Riou. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Joël Riou
5+
-/
6+
module
7+
8+
public import Mathlib.CategoryTheory.Sites.Point.Basic
9+
10+
/-!
11+
# The category of points of a site
12+
13+
We define the category structure on the points of a site `(C, J)`:
14+
a morphism between `Φ₁ ⟶ Φ₂` between two points consists of a
15+
morphism `Φ₂.fiber ⟶ Φ₁.fiber` (SGA 4 IV 3.2).
16+
17+
## References
18+
* [Alexander Grothendieck and Jean-Louis Verdier, *Exposé IV : Topos*,
19+
SGA 4 IV 3.2][sga-4-tome-1]
20+
21+
-/
22+
23+
@[expose] public section
24+
25+
universe w v v' u u'
26+
27+
namespace CategoryTheory
28+
29+
open Limits Opposite
30+
31+
variable {C : Type u} [Category.{v} C] {J : GrothendieckTopology C}
32+
33+
namespace GrothendieckTopology.Point
34+
35+
/-- A morphism between points of a site consists of a morphism
36+
between the functors `Point.fiber`, in the opposite direction. -/
37+
@[ext]
38+
structure Hom (Φ₁ Φ₂ : Point.{w} J) where
39+
/-- a natural transformation, in the opposite direction -/
40+
hom : Φ₂.fiber ⟶ Φ₁.fiber
41+
42+
instance : Category (Point.{w} J) where
43+
Hom := Hom
44+
id _ := ⟨𝟙 _⟩
45+
comp f g := ⟨g.hom ≫ f.hom⟩
46+
47+
@[ext]
48+
lemma hom_ext {Φ₁ Φ₂ : Point.{w} J} {f g : Φ₁ ⟶ Φ₂} (h : f.hom = g.hom) : f = g :=
49+
Hom.ext h
50+
51+
@[simp]
52+
lemma id_hom (Φ : Point.{w} J) : Hom.hom (𝟙 Φ) = 𝟙 _ := rfl
53+
54+
@[simp, reassoc]
55+
lemma comp_hom {Φ₁ Φ₂ Φ₃ : Point.{w} J} (f : Φ₁ ⟶ Φ₂) (g : Φ₂ ⟶ Φ₃) :
56+
(f ≫ g).hom = g.hom ≫ f.hom := rfl
57+
58+
variable {A : Type u'} [Category.{v'} A]
59+
[HasColimitsOfSize.{w, w} A]
60+
61+
namespace Hom
62+
63+
variable {Φ₁ Φ₂ Φ₃ : Point.{w} J} (f : Φ₁ ⟶ Φ₂) (g : Φ₂ ⟶ Φ₃)
64+
65+
attribute [local simp] FunctorToTypes.naturality in
66+
/-- The natural transformation on fibers of presheaves that is induced
67+
by a morphism of points of a site. -/
68+
@[simps]
69+
noncomputable def presheafFiber :
70+
Φ₂.presheafFiber (A := A) ⟶ Φ₁.presheafFiber where
71+
app P := Φ₂.presheafFiberDesc (fun X x ↦ Φ₁.toPresheafFiber X (f.hom.app X x) P)
72+
73+
@[simp]
74+
lemma presheafFiber_id (Φ : Point.{w} J) :
75+
presheafFiber (𝟙 Φ) (A := A) = 𝟙 _ := by
76+
cat_disch
77+
78+
@[reassoc, simp]
79+
lemma presheafFiber_comp :
80+
(f ≫ g).presheafFiber (A := A) = g.presheafFiber ≫ f.presheafFiber := by
81+
cat_disch
82+
83+
/-- The natural transformation on fibers of sheaves that is induced
84+
by a morphism of points of a site. -/
85+
noncomputable abbrev sheafFiber :
86+
Φ₂.sheafFiber (A := A) ⟶ Φ₁.sheafFiber :=
87+
Functor.whiskerLeft _ f.presheafFiber
88+
89+
@[simp]
90+
lemma sheafFiber_id (Φ : Point.{w} J) :
91+
sheafFiber (𝟙 Φ) (A := A) = 𝟙 _ := by
92+
cat_disch
93+
94+
@[reassoc, simp]
95+
lemma sheafFiber_comp :
96+
(f ≫ g).sheafFiber (A := A) = g.sheafFiber ≫ f.sheafFiber := by
97+
cat_disch
98+
99+
end Hom
100+
101+
end GrothendieckTopology.Point
102+
103+
end CategoryTheory

docs/references.bib

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4580,6 +4580,31 @@ @Book{ serre1968
45804580
mrnumber = {354618}
45814581
}
45824582

4583+
@Book{ sga-4-tome-1,
4584+
editor = {Artin, Michael and Grothendieck, Alexander and Verdier, J.
4585+
L. and Bourbaki, N. and Deligne, P. and Saint-Donat,
4586+
Bernard},
4587+
title = {S{\'e}minaire de g{\'e}om{\'e}trie alg{\'e}brique du
4588+
{Bois}-{Marie} 1963--1964. {Th{\'e}orie} des topos et
4589+
cohomologie {\'e}tale des sch{\'e}mas. ({SGA} 4). {Un}
4590+
s{\'e}minaire dirig{\'e} par {M}. {Artin}, {A}.
4591+
{Grothendieck}, {J}. {L}. {Verdier}. {Avec} la
4592+
collaboration de {N}. {Bourbaki}, {P}. {Deligne}, {B}.
4593+
{Saint}-{Donat}. {Tome} 1: {Th{\'e}orie} des topos.
4594+
{Expos{\'e}s} {I} {\`a} {IV}. 2e {\'e}d.},
4595+
fseries = {Lecture Notes in Mathematics},
4596+
series = {Lect. Notes Math.},
4597+
issn = {0075-8434},
4598+
volume = {269},
4599+
year = {1972},
4600+
publisher = {Springer, Cham},
4601+
language = {French},
4602+
doi = {10.1007/BFb0081551},
4603+
keywords = {00B15,14-06},
4604+
zbmath = {3370272},
4605+
zbl = {0234.00007}
4606+
}
4607+
45834608
@Book{ silverman2009,
45844609
author = {Silverman, Joseph},
45854610
publisher = {Springer New York, NY},

0 commit comments

Comments
 (0)