I don’t know what a sheaf is…

… Yep.

Or don’t I mean “Yet?” I hope so. I guess so far in my (relatively young) academic career, I have never really needed to do better than just know that a sheaf F over a topological space X assigned to each open U\subseteq X a set F(U) whose elements could be thought of as “functions mapping out of U” such that defining a function on U was completely and uniquely determined by defining the function on any open cover U=\bigcup_iU_i. This was enough to confirm (maybe just to myself) that the fixed points of the nerve-realisation adjunction induced by the canonical inclusion \mathbf{Op}(X) \hookrightarrow (\mathbf{Top}\downarrow X) were precisely the sheaves (= espaces étalés) over X, as was worked out in a previous post.

So let’s just tackle this head-on (with the help of Mac Lane and Moerdijk) and dispel at least the basics of what sheaves are. In order to sift through the definition, we need…

Definition 1: Given a category \mathcal{C} and an object U of \mathcal{C}, a sieve on U is a subfunctor S\subseteq h_U of the presheaf represented by U. In terms of generalised elements, a sieve S is a collection of elements of U such that for any (x:V\to U)\in S and any morphism \varphi:V'\to V, the corresponding element \varphi^*(x) = x\circ\varphi \in S as well.

In particular, h_U is a sieve—in fact, the maximal sieve—on U, which corresponds to the set of all generalised elements of U. Given a sieve S on U and a morphism f:U'\to U, we can induce a sieve f^{-1}(S) on U' as the pullback

Explicitly, f^{-1}(S) is the preimage of S under f; that is, the set of elements x of U' such that f(x)=f\circ x is an element of U.

As far as I understand, intuition can be drawn from sheaves on spaces, in which case \mathcal{C} = \mathbf{Op}(X) for some space X. A sieve on an open subset U\subseteq X reduces to a downward-closed set of open subsets of U (that is, a set S of V\subseteq U such that if V'\subseteq V and V\in S, then also V'\in S). If S is a sieve on U and U'\subseteq U, then the induced sieve on U' is the sieve S|_{U'}=S\cap U' of those V\in S which lie in U'. I suppose taking downward-closure of families of subsets of U eliminates some “obvious redundancy” since the subsets of elements of a sieve won’t contribute anything if you think about sheaf conditions. Therefore, you can informally think of sieves on U simply as families of subsets \{U_i\}_i of U. Thinking more about the sheaf conditions, the only sieves \{U_i\}_i on U that actually matter are the ones that cover U, in that U = \bigcup_iU_i. This should at least somewhat justifying the following:

Definition 2: A (Grothendieck) topology is a rule J that assigns to every object U a set J(U)\subseteq\mathbf{Sub}(h_U) of sieves on U called covering sieves of U such that:

  • (maximality) h_U\in J(U)—the sieve of everything covers U
  • (stability) if S\in J(U), then f^{-1}(S)\in J(U') for every f:U'\to U—if S covers U, then its preimage in U' through any morphism U'\to U also covers U'
  • (transitivity) a sieve R\subseteq h_U lies in J(U) if we can find some S\in J(U) such that s^{-1}(R)\in J(V) for every (s:V\to U)\in S—if S covers U, and R covers every element of S, then R also covers U

A site is then a pair (\mathcal{C},J), where \mathcal{C} is a category, and J is a Grothendieck topology on \mathcal{C}.

We can see for a topological space X that taking J(U) for U\subseteq X to be the sieves S on U such that \bigcup S=U does indeed define a Grothendieck topology on \mathbf{Op}(X). Indeed, maximality just says \bigcup_{V\subseteq U}V=U, stability says \bigcup S=U \implies \bigcup S|_{U'}=U' for U'\subseteq U, and transitivity says that if \bigcup R|_V=V for every V\in S with \bigcup S=U, then \bigcup R=U. Now, let’s look at some examples:

  1. We always have a meaningless topology J_{??} on \mathcal{C} by taking J_{??}(U) := \mathbf{Sub}(h_U) to be the set of all sieves on U. This defeats the entire purpose of viewing a sieve as a “covering” since even the empty sieve allegedly “covers” U.
  2. We also always have a trivial topology J_t on \mathcal{C} by taking J_t(U) := \{h_U\} to be the set which only consists of the maximal sieve of U. Note that the canonical topology on \mathbf{Op}(X) is trivial if and only if X had the usual trivial (or codiscrete) topology. This is still more meaningful than the above example, since h_U obviously should “cover” U.
  3. For a less trivial example of a topology that exists on an arbitrary category \mathcal{C}, consider the dense topology J_{\lnot\lnot}, which on an object U consists of those sieves S\subseteq h_U which are “dense” in the sense that any element x of U admits a base change \varphi such that \varphi_*(x)\in S (that is, if x:U'\to U, then x\circ\varphi\in S for some \varphi:V\to U').
    • This notion of density becomes more clear when \mathcal{C} comes from a poset (in other words, when there is at most one morphism between any two objects of \mathcal{C}). In this situation, we may freely identify morphisms V\to U with their domains V (writing V\preceq U). Based on our understanding of sieves on the poset of open subsets of a topological space, we find again that a sieve on U is a downward-closed set of objects V\preceq U. Now, a sieve S is called dense if for any V\preceq U, we can find some U'\in S such that U'\preceq V\preceq U. This is exactly the order-theoretic notion of density.
  4. We can actually generalise the canonical “open cover” topology on \mathbf{Op}(X) to any poset, assuming that the poset is sufficiently nice. Precisely, the structure we need is that \mathcal{C} is a complete Heyting algebra; that is, a poset with arbitrary joins and meets satisfying infinite distributivity \bigvee_i(V\wedge U_i) = V\wedge\bigvee_iU_i. (If you like category theory, this is equivalent to asserting that \mathcal{C} is a complete and cocomplete cartesian closed posetal category.) Given such a category, we have the sup topology J_{\sup}, where J_{\sup}(U) is the set of sieves (i.e., downward-closed families of V\preceq U) S such that \bigvee S = U.
    • It might seem weird that this example includes \mathbf{Op}(X) on a first read, because open sets aren’t closed under arbitrary intersection. However, we do indeed have arbitrary meets in the poset of open sets: it’s given by the interior of the intersection, so \bigwedge_iU_i = \left(\bigcap_iU_i\right)^\circ.

Definition 3: Given a site (\mathcal C,J), a presheaf F:\mathcal{C}^{\mathrm{op}}\to\mathbf{Set} is a sheaf if it is local with respect to covering sieves, in the sense that the canonical map \mathop{\mathrm{Nat}}(h_U,F)\to \mathop{\mathrm{Nat}}(S,F) is a bijection for all S\in J(U). Write \mathbf{Sh}(\mathcal{C},J) for the full subcategory of \mathbf{PSh}(\mathcal C) spanned by the sheaves.

This may seem opaque, but this sums up the idea of sheaves collecting local sections in the case of a topological space really well. Indeed, recall that the Yoneda Lemma allows us to identify \mathop{\mathrm{Nat}}(h_U,F) \cong F(U), so think of the domain of the canonical map as the set of local sections defined on U. On the other hand, an element \sigma\in\mathop{\mathrm{Nat}}(S,F) is a natural family of maps \sigma_V:S(V)\to F(V) that assign to every V-shaped element of U (in S) a local section defined on V. Naturality ensures that these local sections are compatible with each other (i.e., the sections agree when they “overlap”), so the codomain of the canonical map is just the set of compatible families of local sections defined on the covering S of U. The canonical map itself basically sends a local section on U to its corresponding family of restrictions to elements of the covering S, so this being bijective is precisely the fact that local sections can be glued together to define a unique local section defined over the set they cover.

  1. To explain why J_{??} was called meaningless: there are essentially no sheaves with respect to this topology! Indeed, the problem is that the empty sieve \varnothing is deemed a covering, and \mathop{\mathrm{Nat}}(\varnothing,F)=\{!\} is a singleton for any presheaf F. Therefore, the only sheaf with respect to this topology is the constant presheaf on a singleton. In fact, this constant presheaf is a sheaf for any topology, and defines the terminal object in \mathbf{Sh}(\mathcal{C}).
    • More generally, it is clear from Definition 3 and the fact that hom-functors (like \mathrm{Nat}) preserve limits that \mathbf{Sh}(\mathcal{C}) over any site is closed under taking limits, and that the limits can be computed in \mathbf{PSh}(\mathcal{C}) (i.e., pointwise).
  2. At the other extreme, all presheaves are sheaves with respect to the trivial topology J_t.
  3. The dense topology J_{\lnot\lnot} (as the notation suggests) apparently has applications in logic. In particular, \mathbf{Sh}(\mathcal{C},J_{\lnot\lnot}) when \mathcal{C} is a poset will satisfy the axiom of choice, which can be helpful in the context of forcing.
  4. If \mathcal{C} is a complete Heyting algebra, then sheaves with respect to the sup topology J_{\sup} on \mathcal{C} end up looking very much like sheaves on a usual topological space: a sheaf just satisfies that defining a local section on some U boils down to defining a compatible family of sheaves on any cover U=\bigvee_iU_i, where you need only check compatibility over meets.

Back to Basi(c)s

If \mathcal{C} has pullbacks (which it helps to think of as generalisations of “finite intersections”), then we can save some effort when defining Grothendieck topologies and checking the sheaf condition. This is analogous to the fact that it’s seldom worth the effort to define an entire (ordinary) topology, and you can save considerable effort at little cost if you just define a basis which generates the topology.

We can see the need for an analogue for Grothendieck topologies just from the sheaves over topological spaces: dealing with downward-closed sets is a bit awkward. Really, we just needed to know when a family of subsets covered the set, and we generated the sieves as an afterthought.

Definition 4: A basis (for a topology) on a category \mathcal{C} with pullbacks is a rule K that assigns to every object U a collection K(U) of families of morphisms \{f_i:U_i\to U\}_{i\in I} of morphisms mapping into U called covering families. These covering families are subject to:

  • Any isomorphism f:U'\to U defines a covering family \{f:U'\to U\}\in K(U).
  • (stability) If \{f_i:U_i\to U\}_{i\in I}\in K(U) is a covering family for U, and g:U'\to U, then the pullback family \{g^*f_i : U_i\times_UU'\to U'\}\in K(U') is a covering family for U'.
  • (transitivity) If we have a covering family \{f_i:U_i\to U\}_{i\in I}\in K(U) for U and then a covering family \{g_{i,j}:U_{i,j}\to U_i\}_{j\in I_j}\in K(U_i) for U_i for every i\in I, then the composites \{f_i\circ g_{i,j} : U_{i,j}\to U\}_{\substack{j\in I_j \\ i\in I}}\in K(U) is also a covering family for U.

These axioms might make more sense for our intuition of “covering” from the example of topological spaces. The first axiom reduces to saying that U covers itself, stability says that any cover of U restricts to a cover of any of its subsets, and transitivity says that covers for a covering of U combine to cover U. Unlike in ordinary topology, the sieves of a Grothendieck topology do not form a basis thanks to isomorphisms not containing the maximal sieves. However, we can still jump between the two: a basis K generates the Grothendieck topology J_K where S\in J_K(U) if and only if S contains a covering family in K(U).

Conversely, given a Grothendieck topology J, we can define a basis K_J where R\in K_J(U) if and only if \langle R\rangle\in J(U), where \langle R\rangle is the sieve it generates (which is the sieve \langle R\rangle obtained by taking all possible base-changes of elements of R; that is, \langle R\rangle is the set of elements \varphi^*(f) = f\circ\varphi where f\in R and \varphi is a composable morphism). In fact, K_J is the maximal basis that generates J. Note that for an isomorphism f:U'\to U, its associated sieve \langle f\rangle = h_U is the maximal sieve on U.

Now, how does this help us with sheaves?

Proposition 5: Let \mathcal{C} have pullbacks and fix a basis K. Then, a presheaf F:\mathcal{C}^{\mathrm{op}}\to\mathbf{Set} is a sheaf for the induced topology J_K if and only if every covering family \{f_i:U_i\to U\}_{i\in I}\in K(U) induces an equaliser diagram

\displaystyle F(U) \to \prod_{i\in I}F(U_i)\rightrightarrows\prod_{i,j\in I}F(U_i\times_UU_j).

Equivalently, this says that F is a sheaf precisely if the elements of F(U) correspond precisely to those families of \sigma_i\in F(U_i) which are compatible under finite intersections, in the sense that \sigma_i|_{U_i\times_UU_j} = \sigma_j|_{U_i\times_UU_j} in F(U_i\times_UU_j) for all i,j\in I.

So, do I now know what a sheaf is? Probably not, but I think I’ve demystified the definition at least, and that goes a long way.