Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit e2e38c0

Browse files
committed
chore(category_theory/sites/pushforward): move pushforwards to own file to reduce imports (#18561)
We had unnecessarily dragged in the development of sheafification to material about [dense subsites](https://tqft.net/mathlib4/2023-03-08/category_theory.sites.dense_subsite.pdf). Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent 3e0c4d7 commit e2e38c0

File tree

3 files changed

+68
-50
lines changed

3 files changed

+68
-50
lines changed

src/category_theory/sites/cover_preserving.lean

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Authors: Andrew Yang
66
import category_theory.sites.limits
77
import category_theory.functor.flat
88
import category_theory.limits.preserves.filtered
9-
import category_theory.sites.left_exact
109

1110
/-!
1211
# Cover-preserving functors between sites.
@@ -25,10 +24,6 @@ if it pushes compatible families of elements to compatible families.
2524
compatible-preserving functor.
2625
* `category_theory.sites.pullback`: the induced functor `Sheaf K A ⥤ Sheaf J A` for a
2726
cover-preserving and compatible-preserving functor `G : (C, J) ⥤ (D, K)`.
28-
* `category_theory.sites.pushforward`: the induced functor `Sheaf J A ⥤ Sheaf K A` for a
29-
cover-preserving and compatible-preserving functor `G : (C, J) ⥤ (D, K)`.
30-
* `category_theory.sites.pushforward`: the induced functor `Sheaf J A ⥤ Sheaf K A` for a
31-
cover-preserving and compatible-preserving functor `G : (C, J) ⥤ (D, K)`.
3227
3328
## Main results
3429
@@ -224,48 +219,3 @@ if `G` is cover-preserving and compatible-preserving.
224219
map_comp' := λ _ _ _ f g, by { ext1, apply (((whiskering_left _ _ _).obj G.op)).map_comp } }
225220

226221
end category_theory
227-
228-
namespace category_theory
229-
230-
variables {C : Type v₁} [small_category C] {D : Type v₁} [small_category D]
231-
variables (A : Type u₂) [category.{v₁} A]
232-
variables (J : grothendieck_topology C) (K : grothendieck_topology D)
233-
234-
instance [has_limits A] : creates_limits (Sheaf_to_presheaf J A) :=
235-
category_theory.Sheaf.category_theory.Sheaf_to_presheaf.category_theory.creates_limits.{u₂ v₁ v₁}
236-
237-
-- The assumptions so that we have sheafification
238-
variables [concrete_category.{v₁} A] [preserves_limits (forget A)] [has_colimits A] [has_limits A]
239-
variables [preserves_filtered_colimits (forget A)] [reflects_isomorphisms (forget A)]
240-
241-
local attribute [instance] reflects_limits_of_reflects_isomorphisms
242-
243-
instance {X : C} : is_cofiltered (J.cover X) := infer_instance
244-
245-
/-- The pushforward functor `Sheaf J A ⥤ Sheaf K A` associated to a functor `G : C ⥤ D` in the
246-
same direction as `G`. -/
247-
@[simps] def sites.pushforward (G : C ⥤ D) : Sheaf J A ⥤ Sheaf K A :=
248-
Sheaf_to_presheaf J A ⋙ Lan G.op ⋙ presheaf_to_Sheaf K A
249-
250-
instance (G : C ⥤ D) [representably_flat G] :
251-
preserves_finite_limits (sites.pushforward A J K G) :=
252-
begin
253-
apply_with comp_preserves_finite_limits { instances := ff },
254-
{ apply_instance },
255-
apply_with comp_preserves_finite_limits { instances := ff },
256-
{ apply category_theory.Lan_preserves_finite_limits_of_flat },
257-
{ apply category_theory.presheaf_to_Sheaf.limits.preserves_finite_limits.{u₂ v₁ v₁},
258-
apply_instance }
259-
end
260-
261-
/-- The pushforward functor is left adjoint to the pullback functor. -/
262-
def sites.pullback_pushforward_adjunction {G : C ⥤ D} (hG₁ : compatible_preserving K G)
263-
(hG₂ : cover_preserving J K G) : sites.pushforward A J K G ⊣ sites.pullback A hG₁ hG₂ :=
264-
((Lan.adjunction A G.op).comp (sheafification_adjunction K A)).restrict_fully_faithful
265-
(Sheaf_to_presheaf J A) (𝟭 _)
266-
(nat_iso.of_components (λ _, iso.refl _)
267-
(λ _ _ _,(category.comp_id _).trans (category.id_comp _).symm))
268-
(nat_iso.of_components (λ _, iso.refl _)
269-
(λ _ _ _,(category.comp_id _).trans (category.id_comp _).symm))
270-
271-
end category_theory
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/-
2+
Copyright (c) 2021 Andrew Yang. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Andrew Yang
5+
-/
6+
import category_theory.sites.cover_preserving
7+
import category_theory.sites.left_exact
8+
9+
/-!
10+
# Pushforward of sheaves
11+
12+
## Main definitions
13+
14+
* `category_theory.sites.pushforward`: the induced functor `Sheaf J A ⥤ Sheaf K A` for a
15+
cover-preserving and compatible-preserving functor `G : (C, J) ⥤ (D, K)`.
16+
17+
-/
18+
19+
universes v₁ u₁
20+
noncomputable theory
21+
22+
open category_theory.limits
23+
24+
namespace category_theory
25+
26+
variables {C : Type v₁} [small_category C] {D : Type v₁} [small_category D]
27+
variables (A : Type u₁) [category.{v₁} A]
28+
variables (J : grothendieck_topology C) (K : grothendieck_topology D)
29+
30+
instance [has_limits A] : creates_limits (Sheaf_to_presheaf J A) :=
31+
category_theory.Sheaf.category_theory.Sheaf_to_presheaf.category_theory.creates_limits.{u₁ v₁ v₁}
32+
33+
-- The assumptions so that we have sheafification
34+
variables [concrete_category.{v₁} A] [preserves_limits (forget A)] [has_colimits A] [has_limits A]
35+
variables [preserves_filtered_colimits (forget A)] [reflects_isomorphisms (forget A)]
36+
37+
local attribute [instance] reflects_limits_of_reflects_isomorphisms
38+
39+
instance {X : C} : is_cofiltered (J.cover X) := infer_instance
40+
41+
/-- The pushforward functor `Sheaf J A ⥤ Sheaf K A` associated to a functor `G : C ⥤ D` in the
42+
same direction as `G`. -/
43+
@[simps] def sites.pushforward (G : C ⥤ D) : Sheaf J A ⥤ Sheaf K A :=
44+
Sheaf_to_presheaf J A ⋙ Lan G.op ⋙ presheaf_to_Sheaf K A
45+
46+
instance (G : C ⥤ D) [representably_flat G] :
47+
preserves_finite_limits (sites.pushforward A J K G) :=
48+
begin
49+
apply_with comp_preserves_finite_limits { instances := ff },
50+
{ apply_instance },
51+
apply_with comp_preserves_finite_limits { instances := ff },
52+
{ apply category_theory.Lan_preserves_finite_limits_of_flat },
53+
{ apply category_theory.presheaf_to_Sheaf.limits.preserves_finite_limits.{u₁ v₁ v₁},
54+
apply_instance }
55+
end
56+
57+
/-- The pushforward functor is left adjoint to the pullback functor. -/
58+
def sites.pullback_pushforward_adjunction {G : C ⥤ D} (hG₁ : compatible_preserving K G)
59+
(hG₂ : cover_preserving J K G) : sites.pushforward A J K G ⊣ sites.pullback A hG₁ hG₂ :=
60+
((Lan.adjunction A G.op).comp (sheafification_adjunction K A)).restrict_fully_faithful
61+
(Sheaf_to_presheaf J A) (𝟭 _)
62+
(nat_iso.of_components (λ _, iso.refl _)
63+
(λ _ _ _,(category.comp_id _).trans (category.id_comp _).symm))
64+
(nat_iso.of_components (λ _, iso.refl _)
65+
(λ _ _ _,(category.comp_id _).trans (category.id_comp _).symm))
66+
67+
end category_theory

src/topology/sheaves/stalks.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import category_theory.limits.preserves.filtered
1212
import category_theory.limits.final
1313
import tactic.elementwise
1414
import algebra.category.Ring.colimits
15+
import category_theory.sites.pushforward
1516

1617
/-!
1718
# Stalks

0 commit comments

Comments
 (0)