For the moment we will be more concerned with presheaves, but we may as well go ahead and define sheaves. These embody the way that not only can we restrict functions to localize them to smaller regions, but we can “glue together” local functions on small domains to define functions on larger domains. This time, let’s start with the fancy category-theoretic definition.
For any open cover of an open set , we can set up the following diagram:
Let’s talk about this as if we’re dealing with a sheaf of sets, to make more sense of it. Usually our sheaves will be of sets with extra structure, anyway. The first arrow on the left just takes an element of , restricts it to each of the , and takes the product of all these restrictions. The upper arrow on the right takes an element of and restricts it to each intersection . Doing this for each we get a map from the product over to the product over all pairs . The lower arrow is similar, but it takes an element in and restricts it to each intersection . This may look the same, but the difference in whether the original set was the first or the second in the intersection makes a difference, as we shall see.
Now we say that a presheaf is a sheaf if and only if this diagram is an equalizer for every open cover . For it to be an equalizer, first the arrow on the left must be a monomorphism. In terms of sets, this means that if we take two elements and so that for all $latex , then . That is, elements over are uniquely determined by their restrictions to any open cover.
The other side of the equalizer condition is that the image of the arrow on the left consists of exactly those products in the middle for which the two arrows on the right give the same answer. More explicitly, let’s say we have an for each , and let’s further assume that these elements agree on their restrictions. That is, we ask that . If this is true for all pairs , then the product takes the same value under either arrow on the right. Thus it must be in the image of the arrow on the left — there must be some so that . In other words, as long as the local elements “agree” where their domains overlap, we can “glue them together” to give an element .
Again, the example to keep in mind is that of continuous real-valued functions. If we have a continuous function and another continuous function , and if for all , then we can define by “gluing” these functions together over their common overlap: if , if , and it doesn’t matter which we choose when because both functions give the same value there.
So, a sheaf is a presheaf where we can glue together elements over small domains so long as they agree when restricted to their intersections, and where this process defines a unique element over the larger, “glued-together” domain.