An Informal Introduction To Topos Theory

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

An informal introduction to topos theory

Tom Leinster∗

Contents
1 The definition of topos 3

2 Toposes and set theory 7

3 Toposes and geometry 11

4 Toposes and universal algebra 19

This short text is for readers who are confident in basic category theory but
know little or nothing about toposes. It is based on some impromptu talks
given to a small group of category theorists. I am no expert on topos theory.
These notes are for people even less expert than me.
In keeping with the spirit of the talks, what follows is light on both detail and
references. For the reader wishing for more, almost everything here is presented
in respectable form in Mac Lane and Moerdijk’s very pleasant introduction to
topos theory (1994). Nothing here is new, not even the expository viewpoint
(very loosely inspired by Johnstone (2003)).
As a rough indication of the level of knowledge assumed, I will take it that
you are totally comfortable with the Yoneda Lemma and the concept of cartesian
closed category, but I will not assume that you know the definition of subobject
classifier or of topos.
Section 1 explains the definition of topos. The remaining three sections
discuss some of the connections between topos theory and other subjects. There
are many more such connections than I will mention; I hope it is abundantly
clear that these notes are, by design, a quick sketch of a large subject.
Section 2 is on connections between topos theory and set theory. The major
theme there is that we can use topos theory to free ourselves from the shackles
∗ School of Mathematics and Statistics, University of Glasgow, Glasgow G12 8QW, UK;

[email protected]. Supported by an EPSRC Advanced Research Fellowship.

1
of ZFC. The minor theme is that

a topos is a generalized category of sets.

Section 3 is on connections with geometry (in a broad sense); there the


thought is that

a topos is a generalized space.

Section 4 is on connections with universal algebra:

a topos is a generalized theory.

What this means is that there is one topos embodying the concept of ‘ring’, an-
other embodying the concept of ‘field’, and so on. This is the story of classifying
toposes.
Sections 2–4 can be read in any order, except that 1
ideally §3 (geometry) should come before §4 (univer- J
sal algebra). You can read §4 without having read §3, J
but the price to pay is that the notion of ‘geometric 2 3 J
morphism’—defined in §3 and used in §4—might seem JJ
rather mysterious. 4
Algebraic geometers beware: the word ‘topos’ is used by mathematicians in
two slightly different senses, according to circumstance and culture. There are
elementary toposes and Grothendieck toposes. Category theorists tend to use
‘topos’ to mean ‘elementary topos’ by default, although Grothendieck toposes
are also important in category theory. But when an algebraic geometer says
‘topos’, they almost certainly mean ‘Grothendieck topos’ (what else?).
Grothendieck toposes are categories of sheaves. Elementary toposes are
slightly more general, and the definition is simpler. They are what I will em-
phasize here. Grothendieck toposes are the subject of Section 3, and appear
fleetingly elsewhere; but if you only want to learn about categories of sheaves,
this is probably not the text for you.

Acknowledgements I thank Andrei Akhvlediani, Eugenia Cheng, Richard


Garner, Nick Gurski, Ignacio Lopez Franco and Emily Riehl for their partic-
ipation and encouragement. Aspects of Section 4 draw on a vaguely similar
presentation of vaguely similar material by Richard Garner. I thank the orga-
nizers of Category Theory 2010 for making the talks possible, even though they
did not mean to: Francesca Cagliari, Eugenio Moggi, Marco Grandis, Sandra
Mantovani, Pino Rosolini, and Bob Walters. The commutative diagrams were
made using Paul Taylor’s macros.

2
1 The definition of topos
The hardest part of the definition of topos is the concept of subobject classifier,
so I will begin there.
In the category of sets, inverse images are a special case of pullbacks. That
is, given a map f : X → Y of sets and a subset B ⊆ Y , we have a pullback
square
f −1 B >B
∩ ∩

∨ ∨
X > Y.
f

In particular, this holds when B is a 1-element subset {y} of Y :

f −1 {y} > {y}


∩ ∩

∨ ∨
X > Y.
f

There is no virtue in distinguishing between one-element sets, so we might as


well write 1 instead of {y}; then the inclusion {y} ,→ Y becomes the map 1 → Y
picking out y ∈ Y , and we have a pullback square
!
f −1 {y} >1

y
∨ ∨
X > Y.
f

Next consider characteristic functions of subsets. Fix a two-element set


2 = {t, f} (‘true’ and ‘false’). Then for any set X, the subsets of X are in
bijective correspondence with the functions X → 2. In one direction, given a
subset A ⊆ X, the corresponding function χA : X → 2 is defined by
(
t if x ∈ A
χA (x) =
f if x 6∈ A

(x ∈ X). In the other, given a function χ : X → 2, the corresponding subset of


X is χ−1 {t}. To say that this latter process χ 7→ χ−1 {t} is a bijection is to say
that for all A ⊆ X, there is a unique function χ : X → 2 such that A = χ−1 {t}.
In other words: for all A ⊆ X, there is a unique function χ : X → 2 such that
!
A >1

t
∨ ∨
X >2
χ

3
is a pullback square.
This property of sets can now be stated in purely categorical terms. We use
 to indicate a mono (= monomorphism = monic).

Definition 1.1 Let E be a category with a terminal object, 1. A subobject


classifier in E is an object Ω together with a map t : 1 → Ω such that for every
m
mono A  X in E , there exists a unique map χ : X → Ω such that
!
A >1

m t
∨ ∨
X >Ω
χ

is a pullback square.

So, we have just observed that Set has a subobject classifier, namely, the
two-element set. In the general setting, we may write χ as χA (or properly, χm )
and call it the characteristic function of A (or m).
To understand this further, we need two lemmas.

Lemma 1.2 In any category, the pullback of a mono is a mono. That is, if
· >·

m0 m
∨ ∨
· >·
is a pullback square and m is a mono, then so is m0 .

Lemma 1.3 In any category with a terminal object 1, every map out of 1 is a
mono.

So, pulling t : 1 → Ω back along any map X → Ω gives a mono into X.


It will also help to know the result of the following little exercise. It says,
roughly, that in the definition of subobject classifier, the fact that 1 is terminal
comes for free.
t
Fact 1.4 Let E be a category and let T  Ω be a mono in E . Suppose that for
m
every mono A  X in E , there is a unique map χ : X → Ω such that there is
a pullback square
A >T
∨ ∨
m t
∨ ∨
X > Ω.
χ

Then T is terminal in E .

4
This leads to a second description of subobject classifiers. Let Mono(E )
be the category whose objects are monos in E and whose maps are pullback
squares. Then a subobject classifier is exactly a terminal object of Mono(E ).
Here is a third way of looking at subobject classifiers. Given a category E
and an object X, a subobject of X is officially an isomorphism class of monos
m
A  X (where isomorphism is taken in the slice category E /X). For example,
when E = Set, two monos
m m0
A  X, A0  X

are isomorphic if and only if they have the same image; so subobjects of X
correspond one-to-one with subsets of X. I say ‘officially’ because half the time
people use ‘subobject of X’ to mean simply ‘mono into X’, or slip between the
two meanings without warning. It is a harmless abuse of language, which I will
adopt.
For X ∈ E , let Sub(X) be the set of subobjects (in the official sense) of
X. Assume that E is well-powered, that is, each Sub(X) is a set rather than
a proper class. Assume also that E has pullbacks. By Lemma 1.2, every map
f f∗
X → Y in E induces a map Sub(Y ) → Sub(X) of sets, by pullback. This defines
a functor Sub : E op → Set.
Third description: a subobject classifier is a representation of this functor
Sub.
This makes intuitive sense, since for Sub to be representable means that
there is an object Ω ∈ E satisfying

Sub(X) ∼
= E (X, Ω)

naturally in X ∈ E . In the motivating case of the category of sets, this directly


captures the thought that subsets of a set X correspond naturally to maps
X → {t, f}.
Now we show that this is equivalent to the original definition. By the Yoneda
Lemma, a representation of Sub : E op → Set amounts to an object Ω ∈ E
together with an element t ∈ Sub(Ω) that is ‘generic’ in the following sense:

for every object X ∈ E and element m ∈ Sub(X), there is a unique


map χ : X → Ω such that χ∗ (t) = m.
t
In other words, a representation of Sub is a mono T  Ω in E satisfying the
condition in Fact 1.4. In other words, it is a subobject classifier.

Definition 1.5 A topos (or elementary topos) is a cartesian closed category


with finite limits and a subobject classifier.

Examples 1.6 i. The primordial topos is Set. It has special properties not
shared by most other toposes. This is the subject of Section 2.

5
ii. For any set I, the category SetI of I-indexed families of sets is a topos. Its
subobject classifier is the constant family (2)i∈I , where 2 is a two-element
set.

iii. For any group G, the category SetG of left G-sets is a topos. Its subobject
classifier is the set 2 with trivial G-action.

iv. Encompassing all the previous examples, if A is any small category then
b = SetAop of presheaves on A is a topos. We can discover
the category A
what its subobject classifier must be by a thought experiment: if Ω is a
subobject classifier then by the Yoneda Lemma,

Ω(a) ∼
= A(A(−,
b a), Ω) ∼
= Sub(A(−, a))

for all a ∈ A. So Ω(a) must be the set of subfunctors of A(−, a); and
one can check that defining Ω(a) in this way does indeed give a subobject
classifier. A subfunctor of A(−, a) is called a sieve on a; it is a collection
of maps into a satisfying a certain condition.

v. For any topological space S, the category Sh(S) of sheaves on S is a topos.


This is the subject of Section 3. Modulo a small lie that I will come back
to there, the space S can be recovered from the topos Sh(S). Hence the
class of spaces embeds into the class of toposes, and this is why toposes
can be viewed as generalized spaces.
Sheaves will be defined and explained in Section 3. To give a brief sketch:
denote by Open(S) the poset of open subsets of S; then a presheaf on
the space S is a presheaf on the category Open(S), and a sheaf on S is
a presheaf with a further property. I will consistently use ‘sheaf’ to mean
what some would call ‘sheaf of sets’. A sheaf of groups, rings, etc. is the
same as an internal group, ring etc. in Sh(S).
vi. The category FinSet of finite sets is a topos. Similarly, Set can be re-
placed by FinSet in all of the previous examples, giving toposes of finite
G-sets, finite sheaves, etc.

You might ask ‘why is the definition of topos what it is? Why that particular
collection of axioms? What’s the motivation?’ I will not attempt to answer, ex-
cept by explaining several ways in which the definition has been found useful. It
is also worth noting that the topos axioms have many non-obvious consequences,
giving toposes a far richer structure than most categories. For example, every
map in a topos factorizes, essentially uniquely, as an epi followed by a mono.
More spectacularly, the axioms imply that every topos has finite colimits. This
can be proved by the following very elegant strategy, due to Paré (1974). For
every topos E , we have the contravariant power set functor P = Ω(−) : E op → E .
It can be shown that P is monadic. But monadic functors create limits, and E
has finite limits. Hence E op has finite limits; that is, E has finite colimits.

6
2 Toposes and set theory
Here I will describe what makes ‘the’ category of sets special among all toposes,
and explain why I just put ‘the’ in quotation marks. This is the stuff of revolu-
tion: it can completely change your view of set theory.
We begin by listing some special properties of the topos Set.

1. The terminal object 1 is a separator (generator). That is, given maps


f
>
X > Y in Set, if f ◦ x = g ◦ x for all x : 1 → X then f = g.
g
It is worth dwelling on what this says. Maps 1 → X correspond to el-
ements of X, and we make no notational distinction between the two.
Moreover, given an element x ∈ X and a map f : X → Y , we can com-
pose the maps
x f
1→X→Y
to obtain a map f ◦ x : 1 → Y , and this is the map corresponding to the
element f (x) ∈ Y . (We might harmlessly write both f ◦ x and f (x) as
f x.) Thus, elements are a special case of functions, and evaluation is a
special case of composition.
The property above says that if f (x) = g(x) for all x ∈ X then f = g. In
other words, a function is determined by its effect on elements.

2. Write 0 for the initial object of Set (the empty set). Then 0 6∼
= 1. Equiv-
alently, Set is not equivalent to the terminal category 1.

A topos satisfying properties 1 and 2 is called well-pointed.

3. This property says, informally, that there is a set consisting of the natural
numbers.
What are the ‘the natural numbers’, though? One way to get at an answer
is to use the principle that sequences can be defined recursively. That is,
given a set X, an element x ∈ X, and a map r : X → X, there is a unique
sequence (xn )∞n=0 in X such that

x0 = x, xn+1 = r(xn ) (n ∈ N). (1)

A sequence (xn )∞
n=0 in X is just a map f : N → X, and if we write s : N →
N for the function n 7→ n + 1 (‘successor’), then (1) says exactly that the
diagram
s
0 >
N >N

1 f f (2)
> ∨ ∨
x
X >X
r

commutes.

7
Definition 2.1 Let E be a category with a terminal object, 1. A natural
numbers object in E is a triple (N, 0, s), with N ∈ E , 0 : 1 → N , and s : N →
N , that is initial as such: for any triple (X, x, r) of the same type, there is a
unique map f : N → X such that (2) commutes (with N in place of N).

Property 3 is, then, that Set has a natural numbers object.

4. Epis split. That is, for any epimorphism (surjection) e : X → Y in Set,


there exists a map m : Y → X such that e ◦ m = 1Y . The splitting m
chooses for each y ∈ Y an element of the nonempty set e−1 {y}. The
existence of such splittings is precisely the Axiom of Choice. Generally, a
category is said to satisfy the Axiom of Choice (or to ‘have Choice’) if
epis split.

In summary,

sets and functions form a well-pointed topos


with natural numbers object and Choice.

The category of sets has many other elementary properties (such as the fact that
the subobject classifier has exactly two elements), but they are all consequences
of the properties just mentioned.
But what is this thing called ‘the category of sets’ ? What do we have to
assume about sets in order to prove that these properties hold?
Many mathematicians do not like to be bothered with such questions, be-
cause they know that the standard answer will be something like ‘sets are any-
thing satisfying the axioms of ZFC’—and they feel that ZFC is irrelevant to
what they do, and prefer not to hear about it.
This standard answer is valid, in the sense that for every model of ZFC,
there is a resulting category of sets satisfying the properties above. But it may
seem irrelevant, because at no point in establishing the properties did it feel
necessary to call on an axiom system: all the properties are suggested directly
by the naive imagery of a set as a bag of dots.
There is, however, another type of answer—and this was Lawvere’s radical
idea. It is this:

we take the properties above as our axioms on sets.

In other words, we do away with ZFC entirely, and ask instead that sets and
functions form a well-pointed topos with natural numbers object and Choice.
‘The’ category of sets is any category satisfying these axioms. In fact we should
say a category of sets, since, as we shall see, there may be many different such
categories.
This is Lawvere’s Elementary Theory of the Category of Sets (ETCS), stated
in modern language. (See Lawvere (1964), or Lawvere and Rosebrugh (2003)
for a good expository account.) It is nearly fifty years old, but still has not
gained the currency it deserves, for reasons on which one can speculate.

8
You might be thinking that this is circular: that this axiomatization of sets
depends on the notion of category, and the notion of category depends on some
notion of collection or set. But in fact, ETCS does not depend on the general
notion of category. It can be stated without using the word ‘category’ once.
To see this, we need to back up a bit. The ZFC axiomatization of sets looks,
informally, like this:

• there are some things called ‘sets’

• there is a binary relation ‘∈’ on sets


• some axioms hold.

People seeing this (or the formal version) often ask certain questions. What
does ‘some things’ mean? Do you mean that there is a set of sets? (No.) What
exactly is meant by ‘binary relation’ ? (It means that for each set X and set Y ,
the statement ‘X ∈ Y ’ is deemed to be either true or false.) What do you mean,
‘deemed’ ? Etc. This is not a logic course, and I will not attempt to answer
the questions except to say that there is an assumed common understanding of
these terms. To hide behind jargon, ZFC is a first-order theory.
The ETCS axiomatization of sets looks like this:

• there are some things called ‘sets’

• for each set X and set Y , there are some things called ‘functions from X
to Y ’

• for each set X, set Y and set Z, there is a binary operation assigning to
each pair of functions

f : X → Y, g: Y → Z

a function g ◦ f : X → Z

• some axioms hold.

You can ask the same kind of logical questions as for ZFC—what exactly is
meant by ‘binary operation’ ? etc.—which again I will not attempt to answer.
The difficulties are no worse than for ZFC, and again, in the jargon, ETCS is a
first-order theory.
Stated in this way, the ETCS axioms begin by saying that composition
is associative and has identities (so that sets, functions and composition of
functions define a category); then they say that binary products and equalizers
of sets exist, and there is a terminal set (so that the category of sets has finite
limits); and so on, until we have said that sets and functions form a well-pointed
topos with natural numbers object and Choice. You can do it in about ten
axioms.
ZFC axiomatizes sets and membership, whereas ETCS axiomatizes sets and
functions. Anything that can be expressed in one language can be expressed in

9
the other: in (the usual implementation of) ZFC, a function X → Y is defined
as a suitable subset of X × Y , and in ETCS, an element of X is defined as a
function from the terminal set to X.
ZFC is slightly stronger than ETCS. ‘Stronger’ means that everything that
can be deduced about sets from the ETCS axioms can also be deduced in ZFC,
but not vice versa. ‘Slightly’ is meant in a sociological sense. I believe it has
been said that the mathematics in an ordinary undergraduate syllabus (exclud-
ing, naturally, any course in ZFC) makes no more assumptions about sets than
are made by ETCS. If that is so, it must also be the case that for many math-
ematicians, nothing in their entire research career requires more than ETCS.
The technical relationship between ZFC and ETCS is well understood. It is
known exactly which fragment of ZFC is equivalent to ETCS (namely, ‘bounded’
or ‘restricted’ Zermelo with Choice; see Mac Lane and Moerdijk (1994)). It is
also known what needs to be added to ETCS in order to obtain a system of
equal strength to ZFC. This extra ingredient is an axiom scheme (a countably
infinite family of axioms) that set theorists in the traditional mould would call
Replacement, and category theorists would call a form of cocompleteness. It
says, informally, that given any setPI and family (Xi )i∈I of sets specified by a
first-order formula, the coproduct i∈I Xi exists. The existence of this coprod-
P there exist a set X and a map p : X → I (to be
uct is expressed by saying that
thought of as the projection i∈I Xi → I) such that for each i ∈ I, the inverse
image p−1 {i} is isomorphic to Xi . See Section 8 of McLarty (2004) for details.
Topos theory therefore provides a different viewpoint on set theory. Let us
take a brief look from this new viewpoint at a famous theorem of set theory: that
the Continuum Hypothesis is independent of the usual set-theoretic axioms, as
proved by Gödel and Cohen.
Temporarily, let us say that a ‘category of sets’ is a well-pointed topos with
natural numbers object and Choice, satisfying the axiom scheme of Replace-
ment. A category of sets is said to satisfy the Continuum Hypothesis if for
all objects X,

there exist monos N  X  2N


=⇒ X ∼= N or X ∼= 2N .

(As usual, N denotes the natural numbers object; 2 is the subobject classifier.)
Stated categorically, the theorem is this: given any category of sets, you can
build one that satisfies the Continuum Hypothesis and one that does not. This
is only a rephrasing of the standard statement, but if you are more at home with
the term ‘category’ than with ‘model of ZFC’, you might find it less mysterious.
This section has been about the benefits of viewing the/a category of sets as
a special topos. But the other way round, there are also benefits to viewing a
topos as a generalized category of sets. For example, we might view SetN as the
category of sets varying through (discrete) time. The set of human beings alive
today is an object of SetN : as the meaning of ‘today’ changes, the set changes.
A sheaf can similarly be understood as a set varying through space.
An important fact is that it is valid to use set-like language and reasoning in

10
any topos, provided that we stick to certain rules. (Any statement about sets
that can be proved constructively is true in every topos.) For instance, given
f
maps X >
> Y in any topos, the equalizer E satisfies the formula
g

E = {x ∈ X | f (x) = g(x)}
—there is a way to make rigorous sense of this. Sometimes it saves a lot of labour
to use this kind of language rather than diagrams. It is called the internal
language of the topos.

3 Toposes and geometry


This section covers concepts such as sheaf, geometric morphism (map of toposes),
Grothendieck topos, and locale. But the most important thing I want to explain
is how and why geometry has inspired so much of topos theory.

Sheaves
Let X be a topological space. (Following tradition, I will switch from my previ-
ous convention of using X to denote an object of a topos.) Write Open(X) for
its poset of open subsets. A presheaf on X is a functor F : Open(X)op → Set.
It assigns to each open subset U a set F (U ), whose elements are called sections
over U (for reasons to be explained). It also assigns to each open V ⊆ U a
function F (U ) → F (V ), called restriction from U to V and denoted s 7→ s|V .
I will write Psh(X) for the category of presheaves on X.
Examples 3.1 i. Let F (U ) = {continuous functions U → R}; restriction is
restriction.
ii. The same, but with ‘bounded’ in place of ‘continuous’.
Examples (i) and (ii) are qualitatively different: continuity is a local prop-
erty, but boundedness is not. This difference can be captured by asking the
following question. Let (Ui )i∈I be a family of open subsets ofS X, and take, for
each i ∈ I, a section si ∈ F (Ui ). Might there be some s ∈ F ( i∈I Ui ) such that
s|Ui = si for all i?
For this to stand a chance of being true, functoriality demands that the
sections si must satisfy a ‘matching condition’: si |Ui ∩Uj = sj |Ui ∩Uj for all i
and j. A sheaf is a presheaf such that for every family (USi )i∈I of open sets
and every matching family (si )i∈I , there is a unique s ∈ F ( i∈I Ui ) such that
s|Ui = si for all i ∈ I.
Examples 3.2 i. The first example above, with continuous functions, is a
sheaf. The proof can be split intoS two parts. Given (Ui ) and (si ), there
is certainly a unique function s : Ui → R (continuous or not) such that
s|Ui = si for all i. The question now is whether s is continuous; and
because continuity is a local property, it is.

11
ii. The second example above, with bounded functions, is not a sheaf (for a
general space X). This is because boundedness is not a local property.

iii. The sheaf of continuous real-valued functions is rather floppy, in the sense
that there are usually many ways to extend a continuous function from
a smaller set to a larger one. Often people consider sheaves made up of
holomorphic or rational functions, which are much more rigid: there are
typically few or no ways to extend. It is quite normal for there to be no
global sections (sections over X) at all.
p
iv. Take any continuous map Y → X of topological spaces (which can be
thought of as a kind of bundle over X). Then there arises a sheaf F on
X, in which F (U ) is the set of continuous maps s : U → Y such that the
triangle on the left commutes:

Y
Y
>

s
p %
s


U ⊂
>X ↓p
U
,→ U X

Such an s is precisely a right inverse, or ‘section’, of the map p−1 U → U


induced by p.

There is also an abstract categorical explanation of where the concept of


sheaf comes from. Fix a space X. We have a functor

I : Open(X) → TopSp/X

where TopSp is the category of topological spaces, TopSp/X is the slice cate-
gory, and I(U ) = (U ,→ X). This functor I embodies the simple thought that
an open subset of a topological space can be treated as a space in its own right.
We now apply to I two very general categorical constructions, from which the
sheaf concept will appear automatically.
First, purely because the domain of I is small and the codomain has small
colimits, there is an induced adjunction
−⊗I
op >
Psh(X) = SetOpen(X) ⊥ TopSp/X.
<
Hom(I,−)

The right adjoint is given by

(Hom(I, Y ))(U ) = TopSp/X (I(U ), Y )

12
Y
 

where Y =  ∨ p  ∈ TopSp/X and U ∈ Open(X). This is, in fact, the


X
process described in Example 3.2(iv): the sheaf F defined there is Hom(I, Y ).
The left adjoint can be described as a coend or colimit: for F ∈ Psh(X),
Z U  

F ⊗I = F (U ) × I(U ) = lim U → X
→U,s

where the colimit is over all U ∈ Open(X) and s ∈ F (U ), and the map to X is
the canonical one.
Second, every adjunction restricts canonically to an equivalence between full
subcategories: one consists of the objects at which the unit of the adjunction is
an isomorphism, and the other of the objects at which the counit is an isomor-
phism. Write the equivalence obtained from our adjunction as
>
Sh(X) ' Et(X).
<
It can be shown that this Sh(X) is the same category of sheaves as before.
In this way, the notion of sheaf arises canonically from the very simple functor
I : Open(X) → TopSp/X. The notion of étale bundle (Mac Lane and Moerdijk
1994) also arises canonically: the étale bundles are the objects of Et(X). Among
other things, this equivalence shows that every sheaf is of the form described in
Example 3.2(iv).
One way or another, we have the category Sh(X) of sheaves on X. It is a
topos. Its subobject classifier Ω is given by

Ω(U ) = {open subsets of U }.

The crucial fact about Sh(X) is that—modulo a small lie that I will repair
later—
X can be recovered from Sh(X).
So the class of topological spaces embeds into the class of toposes. We can think
of toposes as generalized spaces.
A common technique in topos theory is to take a concept from topology or
geometry and extend it to toposes. For example, suppose you hear someone
talking about ‘connected toposes’. You may have no idea what one is, but you
can bet that the definition has been obtained by determining what property of
the topos Sh(X) corresponds to connectedness of the space X, then taking that
as the definition of connectedness for all toposes.
The next few subsections are all examples of this generalization process.

Geometric morphisms
So far I have said nothing about maps between toposes. There is an obvious
candidate for what a map of toposes should be: a functor preserving finite

13
limits, exponentials, and subobject classifiers. Such a functor is called a logical
morphism. They have a part to play, but there is another notion of map of
toposes that has been found much more useful. It can be derived by generalizing
from topology.
Every map f : X → Y in TopSp induces an adjunction
f∗
<
Sh(X) ⊥ Sh(Y ). (3)
>
f∗

This is not obvious. The right adjoint f∗ is easy to construct—

(f∗ F )(V ) = F (f −1 V )

(F ∈ Sh(X), V ∈ Open(Y ))—but the left adjoint f ∗ is harder. It can be made


easy by invoking the equivalence between sheaves and étale bundles; but I will
not go into that, or give any other description of f ∗ .
It is a fact that f ∗ preserves finite limits. It is also a fact (modulo the
usual small lie) that there is a natural correspondence between continuous maps
X → Y and adjunctions (3) in which the left adjoint preserves finite limits. So
now we know what continuous maps look like in topos-theoretic terms. We duly
generalize:

Definition 3.3 Let E and F be toposes. A geometric morphism f : E → F


is an adjunction
f∗
<
E ⊥ F
>
f∗

in which the left adjoint f preserves finite limits. (People often say ‘left exact
left adjoint’.) The right adjoint f∗ is called the direct image part of f , and f ∗
is the inverse image part.

I will write Topos for the category of toposes and geometric morphisms.
(Really it’s a 2-category, in an obvious way.) By construction, we have a functor

Sh : TopSp → Topos

which is (2-categorically) full and faithful, modulo the usual small lie.

Examples 3.4 i. Every functor f : C → D induces a string of adjoint func-


tors
f!
>

b<
C f∗ D
b

>
f∗

between presheaf categories. Here f ∗ = − ◦ f , and f! and f∗ are left and


right Kan extension along f , respectively. Since f ∗ has a left adjoint, it
preserves limits. Hence (f ∗ , f∗ ) is a geometric morphism C
b → D.
b

14
ii. It turns out that, for any topological space X, the inclusion Sh(X) ,→
Psh(X) has a finite-limit-preserving left adjoint. It is called sheafifica-
tion or the associated sheaf functor. So the inclusion of sheaves into
presheaves is a geometric morphism.
Since Sh(X) is a full subcategory, the inclusion is full and faithful; and for
totally general reasons, this is equivalent to the counit of the adjunction
being an isomorphism. In other words, sheafifying a sheaf does not change
it.

Points
Let us generalize another concept of topology. The points of a topological
space X correspond to the maps 1 → X (where 1 is the one-point space),
which correspond to the geometric morphisms Sh(1) → Sh(X). But Sh(1) =
Psh(1) = Set, so we make the following definition.

Definition 3.5 A point of a topos E is a geometric morphism Set → E .

Embeddings and Grothendieck toposes


For any subspace Y of a space X, the inclusion Y ,→ X is an embedding,
that is, a homeomorphism to its image. It can be shown that a map f : Y →
X of spaces is an embedding if and only if the direct image part f∗ of the
corresponding geometric morphism f : Sh(Y ) → Sh(X) is full and faithful. So,
as usual, we generalize:

Definition 3.6 A geometric morphism f : F → E is an embedding (or in-


clusion) if the direct image functor f∗ is full and faithful.

We then say that F is a subtopos of E . At least, this is the right thing


to say up to equivalence. Perhaps we should reserve that word for when F is
actually a (full) subcategory of E and f∗ is the inclusion F ,→ E , rather than
allowing f∗ to be any old full and faithful functor. But a full and faithful functor
induces an equivalence to its image, so it makes no real difference.
Probably the easiest toposes are the presheaf toposes: those equivalent
to Cb = SetCop for some small category C. So maybe subtoposes of presheaf
toposes are relatively easy too. They have a special name:

Definition 3.7 A topos is Grothendieck if it is (equivalent to) a subtopos of


some presheaf topos.

For instance, we saw in Example 3.4(ii) that Sh(X) is a subtopos of Psh(X) =


\
Open(X), for any topological space X. Hence Sh(X) is a Grothendieck topos.
Being Grothendieck is generally thought of as a mild condition on a topos. A
Grothendieck topos has allopsmall limits, which immediately disqualifies toposes
such as FinSet, FinSetC , etc. But other than toposes arising from finite

15
sets (or sets subject to some other cardinality bound), most of the toposes that
people have worked with are Grothendieck. A notable exception is the effective
topos, the maps in which can be thought of as computable functions.
There is a theorem of Giraud giving a list of conditions on a category equiv-
alent to it being a Grothendieck topos. It includes non-elementary axioms such
as ‘there is a small generating set’. (‘Non-elementary’ means that it refers to a
pre-existing notion of set.) The Grothendieck toposes are sometimes regarded
as the nice toposes, but perhaps the totality of Grothendieck toposes is not as
nice as the totality of all toposes.
Definition 3.7 is not the definition of Grothendieck topos that you will find
in most books. I will now give a brief indication of what the standard definition
is and why it is equivalent to the one above.
Fix a small category C. There is a one-to-one correspondence between the
subtoposes of C b and the Grothendieck topologies on C. A Grothendieck
topology is a kind of explicit, combinatorial structure; it specifies which dia-
grams
..
.
ci
.. >
>
. > c
>
cj
..
.

in C are to be thought of as ‘covering families’ and which are not. (There are
axioms.) The motivating example is that given a topological space X, there
is a canonical Grothendieck topology on Open(X): a S family (Ui ,→ U )i∈I of
subsets of U ∈ Open(X) is covering if and only if U = i∈I Ui .
The bijection

{Grothendieck topologies on C} ∼
= {subtoposes of C}
b

is written
J ↔ Sh(C, J).
A pair (C, J), consisting of a small category C equipped with a Grothendieck
topology J, is called a site, and Sh(C, J) is the category of sheaves on that
site. For example, let X be a topological space, put C = Open(X), and take
J to be the Grothendieck topology mentioned above; then Sh(C, J) = Sh(X).
Most books proceed as follows: define Grothendieck topology, define site, define
the category of sheaves on a site, then define a Grothendieck topos to be a
category equivalent to the category of sheaves on some site.
I do not know a short way to explain why the subtoposes of C b correspond
to the Grothendieck topologies on C. The following two paragraphs may make
it seem easier, or harder.

16
First, there is an explicit classification of the subtoposes of any topos E . In-
deed, it can be shown that the subtoposes of E correspond to the maps j : Ω → Ω
satisfying certain equations. (Such a j is called a Lawvere–Tierney topology
on E , although this is so distant from the original usage of the word ‘topology’
that some people object; Peter Johnstone, for instance, uses local operator
instead.) By definition of subobject classifier, it is equivalent to say that a
subtopos of E amounts to a subobject of Ω satisfying certain axioms.
Second, take E = C. b We know (Example 1.6(iv)) that Ω ∈ C b is given by
Ω(c) = {sieves on c}. Hence a subtopos of C b corresponds to a collection of
sieves in C, satisfying certain axioms. Calling these the ‘covering sieves’ gives
the notion of Grothendieck topology.

Locales
Here I will explain the ‘small lie’ mentioned several times above, and make
amends. I will also explain why topos theorists are fond of jokes about pointless
topology.
The definition of sheaf on a topological space X does not mention the points
of X. It mentions only the open sets and inclusions between them, and uses
the fact that it is possible to take arbitrary unions and finite intersections of
open sets. Having observed this, you can see why the space X cannot always be
recovered from the topos Sh(X). For instance, if X is indiscrete (has no open
sets except ∅ and X) and nonempty, then Sh(X) is the same no matter how
many points X has.
The idea now is to split the process X 7→ Sh(X) into two steps. First, we
forget the points of X, leaving just the set of open sets, ordered by inclusion.
Then, we form the category of ‘sheaves’ on that ordered set (defined as for
topological spaces, almost verbatim).

Definition 3.8 A frame is a partially ordered set such that every subset has a
join (= least upper bound = sup) and every finite subset has a meet (= greatest
lower bound = inf). A map of frames is a map preserving order, joins and
finite meets.

A topological space X has a frame Open(X) of open subsets, and a con-


tinuous map f : X → Y induces a map f −1 : Open(Y ) → Open(X) of frames.
This gives a functor
Open : TopSp → Frameop .
We now perform a linguistic manoeuvre. Frameop is the desired category of
‘pointless spaces’. But we cannot wholeheartedly say that a frame is a pointless
space, because the maps of frames are the wrong way round. So we introduce a
new word—locale—and define the category Loc of locales by Loc = Frameop .
We can wholeheartedly say that a locale is a pointless space.
There is a functor Sh : Loc → Topos, defined just as for topological spaces
except that unions become joins and intersections become meets. The functor

17
Sh : TopSp → Topos factorizes as
Open Sh
TopSp → Loc → Topos.

This is the two-step process mentioned above.


Whenever I have said ‘modulo a small lie’, you can interpret that as ‘use
locales instead of topological spaces’. For example, Sh : Loc → Topos re-
ally is full and faithful, in a suitably up-to-isomorphism sense: locale maps
X → Y correspond one-to-one with isomorphism classes of geometric morphisms
Sh(X) → Sh(Y ). This means that Loc is equivalent to a full subcategory of
Topos. (Really it is an equivalence of 2-categories, but I will gloss over that
point.)
Every locale gives rise to a topos—but the converse is also true. Given a
topos E , the subobjects of 1 form a poset SubE (1). Assuming that E has enough
colimits, SubE (1) is a frame. This process defines a functor

Topos → Loc
E 7→ SubE (1).

I am now quietly changing Topos to mean the toposes with small colimits; this
includes all Grothendieck toposes.
You might think that 1 could have no interesting subobjects, since that is
the case in the most obvious topos, Set. But there are toposes that are nearly
as obvious in which SubE (1) is not trivial. For instance, take E = SetI for any
I: then SubE (1) is the power set of I.
Now a wonderful thing is true. The functor just defined is left adjoint to
the inclusion Sh : Loc ,→ Topos. This means that Loc is (equivalent to) a
reflective subcategory of Topos. Hence the counit is an isomorphism:

X∼
= SubSh(X) (1)

for any locale X. This is how you recover a locale from its topos of sheaves.
So Loc sits inside Topos as a subcategory of the best kind: full and re-
flective, like abelian groups in groups. It is reasonable to say that a locale is a
special sort of topos. More formally, a topos is localic if it is of the form Sh(X)
for some locale X. Localic toposes are easy to work with; if you were having
trouble proving something for arbitrary toposes, you might start by trying to
prove it in this special case.
Since every locale is of the form SubE (1) for some topos E , locale theory
can be regarded as the fragment of topos theory concerning subobjects of 1. A
subobject of 1 is a map 1 → Ω, which can reasonably called a truth value. In
that sense, locale theory is the study of truth values.
How much has been lost by passing from topological spaces to locales? In
most people’s view, not much. For example, we observed that all nonempty
indiscrete spaces give rise to the same locale; but many mathematicians regard
indiscrete spaces with ≥ 2 points as ‘pathological’ and would be positively happy
to see them go.

18
The functor Open : TopSp → Loc has a right adjoint, which I will not
describe. As mentioned on page 13, every adjunction restricts canonically to an
equivalence between full subcategories. In this case, this gives an equivalence
between:
• a full subcategory of TopSp, whose objects are called the sober spaces
• a full subcategory of Loc, whose objects are called the spatial locales.
Another way of interpreting the phrase ‘modulo a small lie’ is ‘true for sober
spaces’. Sobriety amounts to a rather mild separation condition. For example,
every Hausdorff space is sober. So in passing from a Hausdorff space to a locale,
or to a topos, nothing is lost.
There is a kind of attitudinal paradox here. Many algebraic topologists think
only about Hausdorff spaces, and regard non-Hausdorff spaces as pathological.
But these are often the same people who feel strongly that topological spaces
are not really about open sets; they think in terms of points and paths and
homotopies. So it is perhaps paradoxical that the Hausdorff condition guaran-
tees that a space can be understood in terms of its open sets alone: the topos
of sheaves depends on nothing else, and contains all the information about the
original space.

4 Toposes and universal algebra


The point of this section is to explain what people mean when they talk about
the classifying topos of a theory. Another way to look at it is this: I will explain
how toposes can be viewed as cousins of operads and Lawvere theories.
In classical universal algebra, an algebraic theory (or strictly, a presentation
of an algebraic theory) consists of a bunch of operation symbols of specified
arities, together with a bunch of equations. To take the standard example, the
(usual presentation of the) theory of groups consists of
• an operation symbol 1 of arity 0
• an operation symbol ( )−1 of arity 1
• an operation symbol · of arity 2
together with the usual equations. You can speak of ‘models’ of an algebraic
theory in any category E with finite products. In our example, they are the
internal groups in E .
But there are other ways of looking at such theories.
Consider the free finite product category T equipped with an internal group.
(There are general reasons why such a thing must exist.) Its universal property
is that for any finite product category E , the finite-product-preserving functors
T → E correspond to the internal groups in E .
Concretely, T looks something like this. It must contain an object X, the
underlying object of the internal group. Since T has finite products, it must

19
also contain an object X n for each n ∈ N. There is no reason for it to have
any other objects, and since it is free, it does not. A map X n → X m is (by
definition of product) an m-tuple of maps X n → X; and the maps X n → X
are (by freeness) whatever maps Gn → G must exist for any internal group G
in any finite product category. That is, they are the n-ary operations in the
theory of groups: the words in n letters.
This category T is called the Lawvere theory of groups. The same goes
for rings, lattices, etc. In all these cases, T is a finite product category with the
further property that the objects are in bijection with the natural numbers, the
product of objects corresponding to addition of numbers. This further property
holds because the theories described so far have been single-sorted: a model is
a single object equipped with some structure.
But there are also many-sorted theories, such as the two-sorted theory of
pairs (R, M ) in which R is a ring and M an R-module. So we can widen the
notion of algebraic theory to include all (small) finite product categories. Some
people say that an algebraic theory is just a finite product category. Others
say that algebraic theories correspond to finite product categories. Others still,
more traditionally, say that algebraic theories correspond to only certain finite
product categories.
Terminology aside, we can play the same game for other classes of limit. For
example, it makes no sense to talk about internal categories in an arbitrary finite
product category, because the definition of internal category needs pullbacks.
(Composition in an internal category C is a map C1 ×C0 C1 → C1 .) But we can
talk about internal categories in a finite limit category; and as before, there is
a free finite limit category T equipped with an internal category. This means
that for any finite limit category E , the finite-limit-preserving functors T → E
correspond to the internal categories in E . A small finite limit category is called
(or corresponds to) an essentially algebraic theory.
In a category with finite products you can talk about internal groups but
not, in general, internal categories. In a category with finite limits you can talk
about both. By extending the list of properties that the category is assumed
to satisfy, you can accommodate more and more sophisticated kinds of theory.
(The theory of internal categories is more ‘sophisticated’ than that of groups
in the sense that composition is only defined for some pairs of maps, whereas
classical universal algebra can only handle operations defined on all pairs.) The
properties need not be of the form ‘limits of such-and-such a type exist’. For
example, it is sometimes useful to assume epi-mono factorization, as we shall
see.
There is a trade-off here. As you allow more sophisticated language, you
widen the class of theories that can be expressed, but you narrow the class of
categories in which it makes sense to take models. (You also make more work for
yourself.) In the same way, if you trade in your motorbike for a double-decker
bus, you increase the number of passengers you can carry, but you restrict where
you can carry them—no low bridges or tight alleyways. (You also increase your
fuel costs.) It is sensible, then, to use the smallest class of theories containing the
ones you are interested in. For example, you could treat groups as an essentially

20
algebraic theory, but that would mean you could only take models in categories
with all finite limits, when in fact just products would do.
Before I get onto toposes, I want to point out a slightly different direction
that you can take things in. Rather than just altering the properties that the
categories are assumed to have, you can also alter the structure with which they
are equipped.
Take monoidal categories, for instance. We can speak of internal monoids
in any monoidal category. Hence, the theory of monoids can be regarded as
the free monoidal category containing an internal monoid. (This is in fact the
category of finite ordinals.) Similarly, it makes sense to speak of algebras for
an operad P in any monoidal category, and we can associate to P the free
monoidal category T containing a P -algebra. Thus, for any monoidal category
E , monoidal functors T → E correspond to P -algebras in E .
We might define a monoidal theory to be a small monoidal category. This
gets us into the territory of PROPs, where there are nontrivial theorems such
as the classification of 2-dimensional TQFTs: the symmetric monoidal theory
of (or, ‘PROP for’) commutative Frobenius algebras is the category of smooth
1-manifolds and diffeomorphism classes of cobordisms.
All of this is to give an impression of how far-reaching these ideas are. It is
a sketch of the context in which classifying toposes can be understood.
You will have guessed that the same kind of thing can be said for toposes
as for categories with finite products, finite limits, etc. Since toposes have very
rich structure (much more than just finite limits), they correspond to a very
wide class of theories indeed.
An example of the kind of theory that can be interpreted in a topos is the
theory of fields. (This is rather a feeble example, but I want to keep it simple.)
A field is, of course, a commutative ring R satisfying the axioms

0 6= 1

and
∀x ∈ R, x=0 or ∃y : xy = 1.
This definition can be turned, by a mechanical process, into a definition of
‘internal field in a topos’. As compensation for the imprecision of the rest of
this section, I will give the definition in detail; but if you want to skip it, the
point is that it is a mechanical process.
Let E be a topos. We certainly know how to define ‘commutative ring in E ’:
that makes sense in any category with finite products. Let R be a commutative
ring in E . The nontriviality axiom, 0 6= 1, is expressed by saying that the
pullback of
1

1

1 >R
0

21
is the initial object 0. For the other axiom, let us first define the subobject U 
R consisting of the units (invertible elements). The ‘set’ P = {(x, y) | xy = 1}
is the pullback
P >1
∨ ∨
1
∨ ∨
R×R > R.
·
Now we want to define the ‘set’ U of units as the image of the composite map
 pr

f = P  R × R →1 R .

We can talk about images in a topos, since every map in a topos factorizes
essentially uniquely as an epi followed by a mono. So, define U  R by the
factorization
f = (P  U  R) .
The second field axiom states that every element of R lies in either the subobject
0
1  R or the subobject U  R. In other words, it states that the map
1+U →R
is epi. Here we have used the fact that every topos has coproducts, written +.
If you have read Section 2, you will recognize that the informal talk of
‘sets’ (really, objects of E ) and the use of set-theoretic notation {. . . | . . .} are
something to do with the internal language of a topos. This gives a hint of how
the process can be mechanized.
You now have the choice between a short story and a long story.
The short story is that what we did for finite product and finite limit cat-
egories can also be done for toposes. The theories corresponding to toposes
are called the geometric theories, and the topos corresponding to a particular
geometric theory is called its classifying topos.
The long story is longer because there are two different notions of map of
toposes—and you need to decide what a map of toposes is in order to state the
universal property of the topos resulting from a theory.
The more obvious but less used notion of map of toposes is a functor pre-
serving all the structure in sight: finite limits, exponentials, and the subobject
classifier. These are called logical morphisms. Now in a topos, you can in-
terpret a really vast range of theories: any ‘higher-order theory’, in fact. (First
order means that you can only quantify over elements of a set; in a second
order theory you can also quantify over subsets of a set; and so on.) Mod-
els of any such theory get along well with logical morphisms, because logical
morphisms preserve everything. So you can tell a similar story for toposes,
logical morphisms and higher order theories as for finite-product categories,
finite-product-preserving functors and algebraic theories.
The more popular notion of map of toposes is that of geometric morphism.
(Here it helps to have read Section 3, where the definition is motivated.) A ge-
ometric morphism between toposes is a functor with a finite-limit-preserving

22
left adjoint. The corresponding theories are the geometric theories. I will
not give the definition, but it is not too bad an approximation to say that they
are the same as the first-order theories: every geometric theory is first-order,
and almost every first-order theory that one encounters is geometric.
Given a geometric theory, a classifying topos for the theory is a cocomplete
topos T with the property that for any cocomplete topos E , models of the
theory in E correspond naturally to geometric morphisms E → T . Every
geometric theory has a classifying topos.
There are two surprises here. One is the appearance of the word ‘cocom-
plete’, which I will not explain and will not bother inserting below. It is gen-
erally thought of as a mild condition (satisfied by any Grothendieck topos, for
instance).
The bigger surprise is the reversal of direction. The previous cases lead
us to expect models in E to correspond to maps T → E . However, since a
geometric morphism is a pair of adjoint functors, the choice of direction is a
matter of convention. As the name suggests, the choice that society made was
motivated by geometry. Perhaps if the motivation had been universal algebra,
it would have been the other way round. (This is an aspect of the thought
that geometry is dual to algebra.) A map of toposes would then have been a
finite-limit-preserving functor with a right adjoint, which is more or less the
same thing as a functor preserving finite limits and small colimits.
Given how much structure a topos contains, it is surprising how many classi-
fying toposes can be described simply. I will now describe the classifying topos
of any algebraic theory, by the venerable expository device of doing it just for
groups.
We will need the notion of finite presentability. A group (in Set) is finitely
presentable if it admits a presentation by a finite set of generators subject
to a finite set of relations. The category of finitely presentable groups and all
homomorphisms between them will be written Grpfp .

Aside Finite presentability is a more categorical concept than it might seem.


Writing T : Set → Set for the free group monad, a relation (equation) in a set
X of generators is an element of T X × T X. So, a family (ri )i∈I of relations is
a map I → T X × T X, or equivalently a diagram
I ⇒ TX
in Set, or equivalently a diagram
FI ⇒ FX
in Grp, where F : Set → Grp is the free group functor. The group presented
by these generators and relations is the coequalizer of this diagram in Grp.
Hence a group is finitely presentable precisely when it is the coequalizer of some
diagram F I ⇒ F X in which I and X are finite sets.
This formulation of finite presentability in Grp uses the free group functor
F . But in fact, there is a general definition of finite presentability of an object
of any category. I will not go into this.

23
As promised, the classifying topos for groups is easy to describe:
Theorem 4.1 The classifying topos for groups is SetGrpfp .
In other words, for any topos E , a group in E is the same thing as a geometric
morphism E → SetGrpfp .
The same goes for other algebraic theories. This yields something interesting
even for very trivial theories. Take the theory of objects, whose models in a
category E are simply objects of E . A finitely presentable set is just a finite
set. Hence for any topos E , objects of E correspond to geometric morphisms
E → SetFinSet . Because of this, the topos SetFinSet is called the object
classifier.
We have been asking, for a given theory, ‘what topos classifies it?’ But
we can turn the question round and ask, for a given topos T , ‘what does T
classify?’ In other words, what are the geometric morphisms from an arbitrary
topos E into T ? It is a fact that every topos T is the classifying topos of some
geometric theory—although given how wide a class of theories that is, perhaps
this does not say very much.
There are clean answers to this reversed question for many toposes T . This
is so, in particular, when T is the topos Sh(C, J) of sheaves on a site (Section 3).
Here I will just tell you the answer for a smaller class of toposes.

Theorem 4.2 Let C be a category with finite limits. Then the presheaf topos
b classifies finite-limit-preserving functors out of C.
C

In other words, for any topos E , a geometric morphism E → C b is the same


thing as a finite-limit-preserving functor C → E .
(If you know about flat functors, you can drop the assumption that C has
finite limits: for any small category C, the presheaf topos C
b classifies flat functors
out of C. This is one version of Diaconescu’s Theorem.)
So there is a back-and-forth translation between geometric theories and
the toposes that classify them. In many cases, this translation is surprisingly
straightforward.

References
Johnstone, P. T., 2003. Sketches of an Elephant: A Topos Theory Compendium.
Oxford Logic Guides. Oxford University Press.
Lawvere, F. W., 1964. An elementary theory of the category of sets. Proceedings of the
National Academy of Sciences of the U.S.A. 52:1506–1511. Reprinted as Reprints
in Theory and Applications of Categories 12:1–35, 2005.
Lawvere, F. W. and R. Rosebrugh, 2003. Sets for Mathematics. Cambridge University
Press, Cambridge.
Mac Lane, S. and I. Moerdijk, 1994. Sheaves in Geometry and Logic. Springer, Berlin.
McLarty, C., 2004. Exploring categorical structuralism. Philosophia Mathematica
12:37–53.
Paré, R., 1974. Colimits in topoi. Bulletin of the American Mathematical Society
80:556–561.

24

You might also like