Zulip Chat Archive
Stream: mathlib4
Topic: Sheafification on big sites with small pretopologies
Christian Merten (Jun 20 2025 at 09:50):
The main construction for sheafification in mathlib right now is via docs#CategoryTheory.instHasSheafifyOfPreservesLimitsForgetOfHasFiniteLimitsOfSmallOppositeCover (the plus-plus construction). In practice, as far as I can tell, this has only ever been applied in (essentially) small categories, where all the necessary limits and colimits always exist.
If we have a big category though, sheafification will in general not exist, but I think we can do slightly better than what we currently have. The main conditions of the above lemma are (here J is a Grothendieck topology on the category C : Type (u + 1) (with say [Category.{u} C]):
- for every
X, various colimits of shape(J.Cover X)ᵒᵖmust exist and be preserved by suitable functors. ∀ (P : Functor Cᵒᵖ (Type u)) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)
Now let's suppose J is generated by a pretopology K. Then one can define similar categories K.Cover X (with a suitable preorder that is not the one coming from inclusion of presieves!) and there is an obvious initial functor K.Cover X ⥤ J.Cover X.
Let's now suppose the categories K.Cover X are all (essentially) small and for every X and R a covering presieve of X wrt. to K, R isu-small. Then condition
-
is satisfied, because via the initial functor
K.Cover X ⥤ J.Cover Xwe can check things onK.Cover Xwhich is (essentially) small. -
is harder: If
S : Sieve XandR : Presieve XwithS = Sieve.generate R, thenHasMultiequalizer (R.index P)impliesHasMultiequalizer (S.index P). But the sieves ofJ = K.toGrothendieckare all sieves that contain a covering presieve ofK. This means that even if all covering presieves are small, we won't be able to deduceHasMultiequalizer (S.index P)for everyJ-sieveS. But sinceK.Cover X ⥤ J.Cover Xis initial, I think it should be sufficient, in the plus-plus construction, to only consider sieves in the image of this functor. Those are precisely the ones that satisfyS = Sieve.generate Rfor someK-presieve and hence the multiequalizers exist with our smallness assumptions.
One way to use this last point, is to change the plus-plus construction and start with a setup like:
variable {T : C → Type*} [∀ X, Category (T X)] (L : ∀ X, T X ⥤ J.Cover X)
[∀ X, (L X).Initial]
[∀ (X : C) (P : Cᵒᵖ ⥤ D) (S : T X), HasMultiequalizer (((L X).obj S).index P)]
(where later T X = K.Cover X) and replace all occurences of J.Cover X with T X. I have not checked yet if everything goes through.
Do you think it worth to do this refactor? Is there a better approach?
(Probably at least @Joël Riou is interested.)
Joël Riou (Jun 20 2025 at 11:34):
For sites like the "small" étale site, I have a WIP PR handling such cases because there is a small dense subsite with an equivalent category of sheaves. (This is based on the notion of 1-hypercover.) This approach would not work for the Zariski sheafification of presheaves over a large category though.
If we refactor the sheafification, I would rather see a "direct" construction of the sheafification by using colimits over a (homotopy) category of 1-hypercovers. (Contrary to the "plus-plus" construction, we would have to apply the construction only once.)
Christian Merten (Jun 20 2025 at 12:51):
Yes, I am aware of your approach for the étale site, but I was indeed thinking how to get sheafification for the big zariski site.
Christian Merten (Jun 20 2025 at 12:55):
Do you have a reference explaining this 1-hypercover sheafification process?
Joël Riou (Jun 20 2025 at 13:07):
I do not know a reference, but it would be safe to start looking at SGA 4 V or the stacks project.
Joël Riou (Jun 20 2025 at 13:18):
(Note that there are minor subtle differences between docs#CategoryTheory.GrothendieckTopology.OneHypercover and general n-hypercovers in the particular case n = 1. Here, the first steps would be to understand what is "map" between two OneHypercover and what is a homotopy.)
Christian Merten (Jun 23 2025 at 22:36):
I made an attempt here: #26326.
Last updated: Dec 20 2025 at 21:32 UTC