Skip to content

Commit f2e7fa4

Browse files
committed
feat(CategoryTheory/Sites): Over.post F preserves covers if F does (#37775)
We also show the lifting covers variant. Notably, we don't show that `Over.post F` is continuous if `F` is. This would follow for example from showing that sheaves on `Over X` are sheaves on `C` over `yoneda.obj X`, which we don't have yet.
1 parent bc7bce2 commit f2e7fa4

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

Mathlib/CategoryTheory/Comma/Over/Basic.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,10 @@ lemma post_comp {E : Type*} [Category* E] (F : T ⥤ D) (G : D ⥤ E) :
410410
post (X := X) (F ⋙ G) = post (X := X) F ⋙ post G :=
411411
rfl
412412

413+
lemma post_forget_eq_forget_comp (F : T ⥤ D) (X : T) :
414+
post F ⋙ forget (F.obj X) = forget X ⋙ F :=
415+
rfl
416+
413417
set_option backward.isDefEq.respectTransparency false in
414418
/-- `post (F ⋙ G)` is isomorphic (actually equal) to `post F ⋙ post G`. -/
415419
@[simps!]
@@ -897,6 +901,10 @@ lemma post_comp {E : Type*} [Category* E] (F : T ⥤ D) (G : D ⥤ E) :
897901
post (X := X) (F ⋙ G) = post (X := X) F ⋙ post G :=
898902
rfl
899903

904+
lemma post_forget_eq_forget_comp (F : T ⥤ D) (X : T) :
905+
post F ⋙ forget (F.obj X) = forget X ⋙ F :=
906+
rfl
907+
900908
set_option backward.isDefEq.respectTransparency false in
901909
/-- `post (F ⋙ G)` is isomorphic (actually equal) to `post F ⋙ post G`. -/
902910
@[simps!]

Mathlib/CategoryTheory/Sites/Over.lean

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,29 @@ lemma overEquiv_functorPullback_map {X Y : C} (f : X ⟶ Y) (U : Over X)
181181
rw [Sieve.overEquiv_iff, Sieve.overEquiv_iff]
182182
simp [Presieve.functorPullback, heq]
183183

184+
set_option backward.isDefEq.respectTransparency false in
185+
lemma overEquiv_functorPullback_post {D : Type*} [Category* D] (F : C ⥤ D) {X : C}
186+
(U : Over X) (S : Sieve ((Over.post F).obj U)) :
187+
(Sieve.overEquiv U) (Sieve.functorPullback (Over.post F) S) =
188+
Sieve.functorPullback F ((Sieve.overEquiv ((Over.post F).obj U)) S) := by
189+
refine le_antisymm ?_ ?_
190+
· dsimp [Sieve.overEquiv]
191+
rw [Sieve.functorPushforward_le_iff_le_functorPullback, ← Sieve.functorPullback_comp]
192+
simp_rw [← CategoryTheory.Over.post_forget_eq_forget_comp, Sieve.functorPullback_comp]
193+
exact Sieve.functorPullback_monotone _ _ (Sieve.le_functorPushforward_pullback _ _)
194+
· intro Z g hg
195+
rw [Sieve.overEquiv_iff]
196+
dsimp [Presieve.functorPullback]
197+
convert (Sieve.overEquiv_iff _ _).mp hg
198+
simp
199+
200+
set_option backward.isDefEq.respectTransparency false in
201+
lemma overEquiv_functorPushforward_post {D : Type*} [Category* D] (F : C ⥤ D) {X : C}
202+
(U : Over X) (S : Sieve U) :
203+
(Sieve.overEquiv _) (Sieve.functorPushforward (Over.post F) S) =
204+
Sieve.functorPushforward F ((Sieve.overEquiv _) S) := by
205+
simp [Sieve.overEquiv, ← Sieve.functorPushforward_comp, ← Over.post_forget_eq_forget_comp]
206+
184207
end Sieve
185208

186209
variable (J : GrothendieckTopology C)
@@ -273,6 +296,23 @@ instance {X Y : C} (f : X ⟶ Y) : (Over.map f).IsCocontinuous (J.over _) (J.ove
273296
rw [J.mem_over_iff] at hS ⊢
274297
rwa [Sieve.overEquiv_functorPullback_map]
275298

299+
instance {D : Type*} [Category* D] (K : GrothendieckTopology D)
300+
(F : C ⥤ D) (X : C) [F.IsCocontinuous J K] :
301+
(Over.post (X := X) F).IsCocontinuous (J.over X) (K.over _) where
302+
cover_lift {U} S hS := by
303+
rw [GrothendieckTopology.mem_over_iff] at hS ⊢
304+
rw [Sieve.overEquiv_functorPullback_post]
305+
exact F.cover_lift J K hS
306+
307+
variable {J} in
308+
lemma _root_.CategoryTheory.CoverPreserving.overPost {D : Type*} [Category* D]
309+
{K : GrothendieckTopology D} {F : C ⥤ D} (X : C) (h : CoverPreserving J K F) :
310+
CoverPreserving (J.over X) (K.over _) (Over.post (X := X) F) where
311+
cover_preserve {U} S hS := by
312+
rw [GrothendieckTopology.mem_over_iff] at hS ⊢
313+
rw [Sieve.overEquiv_functorPushforward_post]
314+
exact h.cover_preserve hS
315+
276316
open Limits
277317

278318
lemma coverPreserving_overPullback [HasPullbacks C] {X Y : C} (f : X ⟶ Y) :

0 commit comments

Comments
 (0)