Topos Theory (Part 2)

Last time I defined sheaves on a topological space X; this time I’ll say how to get these sheaves from ‘bundles’ over X. You may or may not have heard of bundles of various kinds, like vector bundles or fiber bundles. If you have, be glad: the bundles I’m talking about now include these as special cases. If not, don’t worry: the bundles I’m talking about now are much simpler!

A bundle over X is simply a topological space Y equipped with a continuous map to X, say

p \colon Y \to X

You should visualize Y as hovering above X, and p as projecting points y \in Y down to their shadows p(y) in X. This explains the word ‘over’, the term ‘projection’ for the map p, and many other things. It’s a powerful metaphor.

Bundles are not only a great source of examples of sheaves; in fact every sheaf comes from a bundle! Conversely, every sheaf—and even every presheaf—gives rise to a bundle.

But these constructions, which I’ll explain, do not give an equivalence of categories. That is, sheaves are not just another way of thinking about bundles, and neither are presheaves. Instead, we’ll get adjoint functors between the category of presheaves on X and the category of bundles X, and these will restrict to give an equivalence between the category of ‘nice’ presheaves on X—namely, the sheaves—and a certain category of ‘nice’ bundles over X, which are called ‘etale spaces’.

Thus, in the end we’ll get two complementary viewpoints on sheaves: the one I discussed last time, and another, where we think of them as specially nice bundles over X. In Sections 2.8 and 2.9 Mac Lane and Moerdijk use these complementary viewpoints to efficiently prove some of the big theorems about sheaves that I stated last time.

Before we get going, a word about a word: ‘etale’. This is really a French word, ‘étalé’, meaning ‘spread out’. We’ll see why Grothendieck chose this word. But now I mainly just want to apologize for leaving out the accents. I’m going to be typing a lot, it’s a pain to stick in those accents each time, and in English words with accents feel ‘fancy’.

From bundles to presheaves

Any bundle over X, meaning any continuous map

p \colon Y \to X,

gives a sheaf over X. Here’s how. Given an open set U \subseteq X, define a section of p over U to be a continuous function

s \colon U \to Y

such that

p \circ s = 1_U

In terms of pictures (which I’m too lazy to draw here) s maps each point of U to a point in Y ‘sitting directly over it’. There’s a presheaf \Gamma_p on X that assigns to each open set U \subset X the set of all sections of p over U:

\Gamma_p U = \{s: \; s \textrm{ is a section of } p \textrm{ over } U \}

Of course, to make \Gamma_p into a presheaf we need to say how to restrict sections over U to sections over a smaller open set, but we do this in the usual way: by restricting a function to a subset of its domain.

Puzzle. Check that with this choice of restriction maps \Gamma_p is a presheaf, and in fact a sheaf.

There’s actually a category of bundles over X. Given bundles

p \colon Y \to X


p' \colon Y' \to X

a morphism from the first to the second is a continuous map

f \colon Y \to Y'

making the obvious triangle commute:

p' \circ f = p

I’m too lazy to draw this as a triangle, so if you don’t see it in your mind’s eye you’d better draw it. Draw Y and Y' as two spaces hovering over X, and f as mapping each point in Y over x \in X to a point in Y' over the same point x.

We can compose morphisms between bundles over X in an evident way: a morphism is a continuous map with some property, so we just compose those maps. We thus get a category of bundles over X, which is called \mathsf{Top}/X.

I’ve told you how a bundle over X gives a presheaf on X. Similarly, a morphism of bundles over X gives a morphism of presheaves on X. Because this works in a very easy way, it should be no surprise that this gives a functor, which we call

\Gamma \colon \mathsf{Top}/X \to \widehat{\mathcal{O}(X)}

Puzzle. Suppose we have two bundles over X, say p \colon Y \to X and p' \colon Y' \to X, and a morphism from the first to the second, say f \colon Y \to Y'. Suppose s \colon U \to Y is a section of the first bundle over the open set U \subset X. Show that f \circ s is a section of the second bundle over U. Use this to describe what the functor \Gamma does on morphisms, and check functoriality.

From presheaves to bundles

How do we go back from presheaves to bundles? Start with a presheaf

F \colon \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set}

on X. To build a bundle over X, we’ll start by building a bunch of sets called \Lambda(F)_x, one for each point x \in X. Then we’ll take the union of these and put a topology on it, getting a space called \Lambda(F). There will be a map

p \colon \Lambda(F) \to X

sending all the points in \Lambda(F)_x to x, and this will be our bundle over x.

How do we build these sets \Lambda(F)_x? Our presheaf

F \colon \mathcal{O}(X)^{\mathrm{op}} \to \mathsf{Set}

doesn’t give us sets for points of X, just for open sets. So, we should take some sort of ‘limit’ of the sets F U over smaller and smaller open neighborhoods U of x. Remember, if U' \subseteq U our presheaf gives a restriction map

F U \to FU'

So, what we’ll actually do is take the colimit of all these sets FU, as U ranges over all neighborhoods of x. That gives us our set \Lambda(F)_x.

It’s good to ponder what elements of \Lambda(F)_x are actually like. They’re called germs at x, which is a nice name, because you can only see them under a microscope! For example, suppose F is the sheaf of continuous real-valued functions, so that FU consists of all continuous functions from U to \mathbb{R}. By the definition of colimit, for any open neighborhood U of x we have a map

FU \to \Lambda(F)_x

So any continuous real-valued function defined on any open neighborhood of x gives a ‘germ’ of a function on x. But also by the definition of colimit, any two such functions give the same germ iff they become equal when restricted to some open neighborhood of x. So the germ of a function is what’s left of that function as you zoom in closer and closer to the point x.

(If we were studying analytic functions on the real line, the germ at x would remember exactly their Taylor series at that point. But smooth functions have more information in their germs, and continuous functions are weirder still. For more on germs, watch this video.)

Now that we have the space of germs \Lambda(F)_x for each point x \in X, we define

\Lambda(F) = \bigcup_{x \in X} \Lambda(F)_x

There is then a unique function

p \colon \Lambda(F) \to X

sending everybody in \Lambda(F)_x to x. So we’ve almost gotten our bundle over X. We just need to put a topology on \Lambda(F).

We do this as follows. We’ll give a basis for the topology, by describing a bunch of open neighborhoods of each point in \Lambda(F). Remember, any point in \Lambda(F) is a germ. More specifically, any point p \in \Lambda(F) is in some set \Lambda(F)_x, so it’s the germ at x of some s \in FU where U is an open neighborhood of x. But this s has lots of other germs, too, namely its germs at all points y \in U. We take this collection of all these germs to be an open neighborhood of our point p. A general open set in \Lambda(F) will then be an arbitrary union of sets like this.

Puzzle. Show that with this topology on \Lambda(F), the map p \colon \Lambda(F) \to X is continuous.

Thus any presheaf on X gives a bundle over X.

Puzzle. Describe how a morphism of presheaves on X gives a morphism of bundles over X, and show that your construction defines a functor

\Lambda \colon \widehat{\mathcal{O}(X)} \to \mathsf{Top}/X

Etale spaces

So now we have functors that turn bundles into presheaves:

\Gamma \colon \mathsf{Top}/X \to \widehat{\mathcal{O}(X)}

and presheaves into bundles:

\Lambda \colon \widehat{\mathcal{O}(X)} \to \mathsf{Top}/X

But we have already seen that the presheaves coming from bundles are ‘better than average’: they are sheaves! Similarly, the bundles coming from presheaves are better than average. They are ‘etale spaces’.

What does this mean? Well, if you think back on how we took a presheaf F and gave \Lambda(F) a topology a minute ago, you’ll see something very funny about that topology. Each point in \Lambda(F) has a neighborhood such that

p \colon \Lambda(F) \to X

restricted to that neighborhood is a homeomorphism. Indeed, remember that each point in \Lambda(F) is a germ of some

s \in F U

for some open U \subseteq X. We made the set of all germs of s into an open set in \Lambda(F). Call that open set V.

Puzzle. Show that p is a homeomorphism from V to U.

In class I’ll draw a picture of what’s going on. \Lambda(F) is a space sitting over X has lots of open sets V that look exactly like open sets U down in X. In terms of our visual metaphor, these open sets V are ‘horizontal’, which is why we invoke the term ‘etale’:

Definition. A bundle p \colon Y \to X is etale if each point y \in Y has an open neighborhood V such that p restricted to V is a homeomorphism from V to an open subset of X. We often call such a bundle an etale space over X.

So, if you did the last puzzle, you’ve shown that any presheaf on X gives an etale space over X.

(By the way, if you know about covering spaces, you should note that every covering space of X is an etale space over X but not conversely. In a covering space p \colon Y \to X we demand that each point down below, in X, has a neighborhood U such that p^{-1}(U) is a disjoint union of open sets homeomorphic to U, with p restricting to homeomorphism on each of these open sets. In an etale space we merely demand that each point up above, in Y, has a neighborhood V such that p restricted to V is a homeomorphism. This is a weaker condition. In general, etale spaces are rather weird if you’re used to spaces like manifolds: for example, Y will often not be Hausdorff.)

Sheaves versus etale spaces

Now things are nicely symmetrical! We have a functor that turns bundles into presheaves

\Gamma \colon \mathsf{Top}/X \to \widehat{\mathcal{O}(X)}

but in fact it turns bundles into sheaves. We have a functor that turns presheaves into bundles

\Lambda \colon \widehat{\mathcal{O}(X)} \to \mathsf{Top}/X

but in fact it turns presheaves into etale spaces.

Last time we defined \mathsf{Sh}(X) to be the full subcategory of \widehat{\mathcal{O}(X)} having sheaves as objects. Now let’s define \mathsf{Etale}(X) to be the full subcategory of \mathsf{Top}/X having etale spaces as objects. And here’s the punchline:

Theorem. The functor

\Lambda \colon \widehat{\mathcal{O}(X)} \to \mathsf{Top}/X

is left adjoint to the functor

\Gamma \colon \mathsf{Top}/X \to \widehat{\mathcal{O}(X)}

Moreover, if we restrict these functors to the subcategories \mathsf{Sh}(X) and \mathsf{Etale}(X), we get an equivalence of categories

\mathsf{Sh}(X) \simeq  \mathsf{Etale}(X)

The proof involves some work but also some very beautiful abstract nonsense: see Theorem 2, Corollary 3 and Lemma 4 of Section II.6. There’s a lot more to say, but this seems like a good place to stop.

The series so far:

Part 1: sheaves, elementary topoi, Grothendieck topoi and geometric morphisms.

Part 2: turning presheaves into bundles and vice versa; turning sheaves into etale spaces and vice versa.

Part 3: sheafification; the adjunction between presheaves and bundles.

Part 4: direct and inverse images of sheaves.

Part 5: why presheaf categories are elementary topoi: colimits and limits in presheaf categories.

Part 6: why presheaf categories are elementary topoi: cartesian closed categories and why presheaf categories are cartesian closed.

Part 7: why presheaf categories are elementary topoi: subobjects and subobject classifiers, and why presheaf categories have a subobject classifier.

Part 8: an example: the topos of time-dependent sets, and its subobject classifier.

27 Responses to Topos Theory (Part 2)

  1. There’s some \Lambda(F)_x and \Lambda(F) that are not rendering properly.

  2. Toby Bartels says:

    Without the accents, you don’t have to remember that, while the maps are étale, the spaces are étalé! (At least this is so in the original French; a lot of English writers seems to say that the spaces are also étale.) However you write it, this affects the pronunciation too; an E with an accent is pronounced, but an E without an accent is silent. (This is not a general rule in French, but it works for these two words.) See for why.

    • John Baez says:

      My theory is that one shouldn’t have to learn anything about French to learn topos theory, so we English speakers shouldn’t feel ashamed to write “etale” and pronounce it however the hell we want.

      However, these points are very interesting—thanks! I think it’s sort of wild that Grothendieck, or whoever, would choose two similar but apparently ‘distantly related’ words for these two connected concepts.

  3. “so it’s the germ of some s \in U where U is an open neighborhood of x.” Shouldn’t that be “s \in F(U)?

    • John Baez says:

      Hi! You’re right, I’ll fix that.

      I keep wanting to call an element of F(U) a ‘section’ of the presheaf F over the open set U, but I don’t think Mac Lane and Moerdijk use that term, and when playing with both sheaves and bundles it could be confusing.

      On the other hand, they speak of a ‘cross-section’ of a bundle rather than a ‘section’, but I think this is a bit unusual—I’m saying ‘section’.

      • Toby Bartels says:

        If Mac Lane and Moerdijk don’t have a term for an element of F(U), then you can always call that a section and then follow the book by calling the other thing a cross-section. The term ‘cross-section’ is a more concretely geometric term, so it's appropriate in the more concretely geometric setting.

  4. Avi Levy says:

    In the definition of an etale bundle, the condition “p restricted to V is a homeomorphism” should be modified to read “p restricted to V is a homeomorphism onto p(V)“. I also think it is helpful to point out that this sort of map is usually called a “local homemorphism” (as is done as part of the definition of an etale space in both the Mac Lane and Moerdijk textbook as well as the nlab).

    • John Baez says:

      That’s what I meant, of course. But you’re right, we are not only restricting the domain, we are ‘corestricting’ the codomain of p. It’s good to make that explicit, since we’re doing category theory here… so I will.

      • Avi Levy says:

        Thanks for clarifying. Note that your definition still differs from the one given in Mac Lane and Moerdjik, since they require p(V) to be open. Are you sure that extra condition is not required in order to obtain the sheaf etale bundle equivalence? For an example showing that your definition really is different than the one from the textbook, note that all inclusion maps are etale (per your definition here) whereas only the inclusion maps of open subsets are etale per the textbook definition.

  5. You mentioned how the open sets of the etale space are “horizontal”, but not how the stalks are “vertical”. In fact, did you mention stalks at all? They’re the source of the term “sheaf”, in its original meaning.

    I like to say that “stalks” and “sheaves” come from an agricultural analogy, while the open sets come from a mineralogical one (like mica schist).

    • John Baez says:

      No, I didn’t mention stalks… trying to keep the terminology down to a minimum. Stalks are related to ‘fibers’, both mathematically and in terms of the general agricultural metaphor. A ‘sheaf’ is a bit like a ‘fiber bundle’, agriculturally speaking.

  6. Here’s an analytic example of a bundle where the projection is a local homeomorphism, but not a covering map. Let g(w)=\int_0^w \exp(\zeta^2)d\zeta. Then g maps \mathbb{C} onto \mathbb{C} (fun exercise), and is a locally 1-1 map, in fact a local homeomorphism.

    (HInt for the exercise: little Picard).

  7. Jesús López says:

    What’s the difference between \widehat{\mathcal{O}(X)} and \widehat{O}(X)? I’m understanding both as the category of presheaves on the category of opens of X.

  8. […] Last time I described two viewpoints on sheaves. In the first, a sheaf on a topological space is a special sort of presheaf […]

  9. […] Remember, a bundle over a topological space Y is a topological space E equipped with a continuous map

    p \colon E \to Y

    We say it’s an etale space over Y if it has a special property: each point e \in E has an open neighborhood such that p restricted to this neighborhood is a homeomorphism from this neighborhood to an open subset of Y. In Part 2 we defined the category of bundles over X, which is called \mathsf{Top}/X, and the full subcategory of this whose objects are etale spaces, called \mathsf{Etale}(X). […]

  10. Kvantumo says:

    You wrote to consider FU as a set of functions defined on U \in O(X)

    We defined \Lambda (F)_x as the colimit of FU for all U \in O(X),\ x \in U.

    Then \Lambda (F)_x is a set of functions defined on the smallest open subset U^* \in O(X),\ x \in U^* (that is, \nexists U \in O(X),\ x \in U and U \subset U^* and not U^* \subset U).

    Then you consider the elements of \Lambda (F)_x germs at x.

    This is what I don’t get. Because the definition which I remember for a germ of function at x is a class of equivalence of functions, for which there is a subset containing $x$ where they are equal.

    But the restricted functions in \Lambda (F)_x are not necessarily equal in that smallest U^*.

    So how come that they are called germs?

    • John Baez says:

      Kvantumo wrote:

      We defined \Lambda (F)_x as the colimit of FU for all U \in O(X),\ x \in U.


      Then \Lambda (F)_x is a set of functions defined on the smallest open subset U^* \in O(X),\ x \in U^* (that is, \nexists U \in O(X),\ x \in U and U \subset U^* and not U^* \subset U).

      That’s true if there exists a smallest open set containing x. But in most examples that’s not true! For example if X is the real line, or the complex plane, there is no smallest open set containing a point.

      So, you need to stop thinking about the case where there exists a smallest open set containing the point x, and start thinking about these other examples. Then you’ll see that a germ at x, defined as I defined it, is indeed an equivalence class of functions defined on open sets containing x, where two functions are equivalent if they become equal when restricted to a small enough open set. This is how colimits work in this example.

      • kvantumo says:

        Thank you for pointing it out! I was totally blind to the possibility that a smallest open subset could not exist in some topology.

    • Toby Bartels says:

      As John said, usually there is no smallest open set U ^ * owning x (that is, there is no smallest neighbourhood of x). But let's consider when there is. Then as you said, \Lambda ( F ) _ x can simply be F U ^ *, a set of functions on U ^ *. But this set is not meant to be a germ; it’s an individual element of F U ^ * that's meant to be a germ. And that works, because even though a germ is normally taken to be a set of functions (an equivalence class), in this case where U ^ * is the smallest neighbourhood of x, each equivalence class consists of a single function on U ^ *. (Part of the reason is that in the definition of a germ, two functions are only equivalent if there is a neighbourhood of x on which they are equal.)

      Indeed, if every point in every topological space had a smallest neighbourhood, then there would be no need to define a germ as an equivalence class! It’s precisely because there usually is no smallest neighbourhood that we instead have to define a germ in a relatively complicated way. A germ at x is what would be a function on the smallest neighbourhood of x if there were such a thing. (In nonstandard analysis, you can talk about infinitesimal neighbourhoods, and then a germ at x can simply be defined as a standard function on an infinitesimal neighbourhood of x.)

      • kvantumo says:

        Thank you for your comment.
        You and John helped me a lot to think deeper to this subject.

        I think that now I’m a bit more closer to the question of the germ. Let’s see if I’m loosing something else!

        What I’m not able to do is to be certain of why the restrictions FU \to FU' produce equivalent classes.

        When I think to the case in which the open subsets are finite sets, then I see how the equivalent classes emerge.

        E.g., let U = \{1,2,3\} and U' = \{2,3\}; and let the functions picked by the presheaf F be functions with codomain the set B = \{0,1\}, then:

        FU has 2^3 functions
        FU' has 2^2 functions

        A restriction FU \to FU' should be a surjective function, partitioning FU in 4 parts, where each part contains 2 function.
        In summary, the equivalence classes here are due to the surjectivity, surjectivity which is motivated by the fact that F is built to get all functions of type U \to B,\ \forall U \in O(X), hence in term of cardinality U' \subset U \implies \# FU > \# FU'.

        Considering continuous functions of type \mathbb R \to \mathbb R, I think that the intuition is similar: we need to prove that the restrictions are surjective morphisms; but I’m not able to prove it, because the simple cardinality argument discussed so far doesn’t work anymore.

        From a categorical point of view, the surjectivity in the Set category is identified by the epimorphisms: given any h,g:A \to B, then a function f:B \to C is an epimorphism if and only if g \circ f = h \circ f \implies g=h.

        But in the category O(X) there is at most one single morphism between any two open subsets of X. This means that any morphism in this category is an epimorphism.

        The last passage is the following. Using the presheaf F:O(X) \to \mathrm{Set}, the subcategory F[O(X)] of Set has the same property: no more than one morphism between any two object. Hence any of their morphism is an epimorphism.

        Should this imply that these morphisms are surjective?

        • John Baez says:

          In a presheaf, the restriction maps are often not injective, and often not surjective. For example, consider the sheaf on the real line, where FU is the set of continuous functions f \colon U \to \mathbb{R} on the open set U \subseteq R. Here restriction is neither injective nor surjective, in general.

  11. nasosev says:

    Some possible typos (just before the puzzle about showing the projection map is continuous):

    you said “We just need to put a topology on $\Lambda(X)$”–I think you meant $\Lambda(F)$;

    you said “We take the collection of all these germs to be an open neighbourhood of $x$”–I think instead of $x$ you meant the unnamed point introduced in a previous sentence “More specifically, any point in $\Lambda(F)$ is in some set $\Lambda(F)_x$…”.

    Thanks a lot for these posts JB!

    • John Baez says:

      Thanks! You’re right about these typos. I’ve tried to fix both of them.

      By the way, to get LaTeX to work here, follow the instructions right above the box in which you type your comment.

You can use Markdown or HTML in your comments. You can also use LaTeX, like this: $latex E = m c^2 $. The word 'latex' comes right after the first dollar sign, with a space after it.

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.