Skip to main content

Externalizing Some Simple Topos Statements

13 Dec 2022 - Tags: featured , topos-theory

Hey all! It’s been a minute. I’ve been super busy with the UC strike and honestly I haven’t done math in any serious capacity for almost the past month. It’s been a lot of hard work trying to get fair contracts out of the UC, but I had a lot of travel plans this December to see my friends, so I’ve taken a step back from the picket line until January. Right now I’m in Chicago, so here’s an obligatory bean pic:

This means I have time to do math again, and it’s been really good for me to get back into it! I’ve started working with Peter Samuelson on some really cool work involving skein algebras, and I can’t wait to chat about it once I spend more time with it.

I also spent some time trying to understand manifolds in a topos of G-sets. I gave a (fairly informal) talk in Dave Weisbart’s seminar, where I tried to pitch him topos theory as a method of studying G-invariant constructions1, and I thought I remembered a result that we can get our hands on a global quotient orbifold M//G by working with a manifold internal to G-set… I couldn’t find a reference for this, so I set about trying to prove it myself, and (to nobody’s surprise) it’s false, haha.

So my last couple weeks, when I had the energy to do math after picketing, looked eerily like Julia Robinson’s famous description of her week:

I learned a ton while doing this, though, and I wanted to share some insights with everyone. It’s really hard to find examples of people taking statements in the internal logic of a topos and externalizing them to get “classical” statements, so I had to work out a bunch of small examples myself.

Let’s go over a few together, and hopefully make things easier for the next round of topos theorists looking to do this ^_^


|X|=3

Let’s start small. What does it mean to say that |X|=3? This is really an abbreviation saying “there’s a bijection between X and 3”, which we expand out to

α:3X.β:X3.αβ=id3βα=idX

Here, of course, we’re writing AB for the exponential object of the topos.

So we’re saying that E|X|=3. If we switch over to the forcing language, we’re saying that 1|X|=3, and from here we can follow the instructions in section VI.6 of Mac Lane and Moerdijk’s Sheaves in Geometry and Logic. In fact, since we’ll be working exclusively with grothendieck topoi in this post, we can work with the slightly simpler sheaf semantics outlined in section VI.7.

First, let’s look at the case E=G-Set.

We start with

1α:3X.β:X3.αβ=id3βα=idX

Next we cash out our existential quantifiers for honest (generalized) elements f in 3X and g in X3. The “local” nature of existential quantification, though, means that our generalized elements no longer have domain 1 (which would make them global elements). Instead, they have domain V for some epi V1.

Of course, in a topos of G-sets, every nonempty object admits a unique epi to 1, and every nonempty object is a disjoint union of G-orbits. So it’s not hard to see we can restrict attention to the connected epis (transitive G-sets). But we also know that truth is local. So we can pull back some transitive G-set along a further epimorphism to assume that our connected object is actually G itself!

So we end up with elements α:G3X and β:GX3 so that

Gαβ=id3βα=idX

But what does this mean? Well, in G-set, the exponential AB is the set of all functions φ:BA equipped with the conjugation action:

(gABφ)(x)=gAφ(g1Bx)

Notice that the global elements of AB are the maps 1AB, which are thus the fixed points of AB. But to say φ=gφ for all g is to say that φ is G-equivariant. However generalized elements give us access to other maps. In particular:

Exercise: Show that the G-elements of AB (that is, the maps GAB) are in natural bijection with ordinary functions BA that ignore the G-structure entirely.

Hint: Look at what happens to the identity element of the group

So then we have two ordinary functions α:X3 and β:3X which are mutually inverse. This means exactly that the underlying set of X has 3 elements.

This brings us to an important observation about G-sets:

Something is “locally” true in G-Set exactly when it’s true for the underlying sets. This is basically because each G-set X is covered by G×X, but this is isomorphic to G×UX where UX (the underlying set of X) is equipped with the trivial G-action!

So if we want a statement in G-Set to externalize to something G-equivariant, we’ll want to avoid existential quantifiers and disjunctions (since these are only true up to a cover)2.

Can you find a formula ψ(X) (which will use G as a parameter) so that G-Setψ(X) if and only if X has finitely many G-orbits3?

Great question! I’m glad you asked!

Say that instead of G-sets, we work inside a topos E=Sh(S) for some topological space S4. What does it mean if E|X|=3?

Well again, we see that

1α:3X.β:X3.αβ=id3βα=idX

and we cash out our existential quantifiers for local witnesses. That is, there’s an open cover Ui of S with elements αi:Ui3X and βi:UiX3 so that, for each Ui,

Uiαiβi=id3βiαi=idX

Now (by yoneda), an element UiAB is “just” a function BA defined over Ui. So altogether we see that |X|=3 if and only if there’s an open cover {Ui} of S so that XUi3Ui for each i.

This means X is locally isomorphic to 3, the disjoint union of three copies of S. It’s not hard to see that this means X is a 3-sheeted covering space of S.

Notice that these local isomorphisms do not have to glue into a global isomorphism! The simplest thing to do is to give a picture. If S=S1 is a circle, and X is a triple cover as shown below:

then X is locally isomorphic to the trivial triple cover 3:

despite the fact that they aren’t globally isomorphic!

From the perspective of the internal logic, the point is that the isomorphisms over each Ui need not be compatible in the sense that αiUiUjαjUiUj.

If you’ve never done it before, it’s worth going through this in detail!

Cover S1 by open sets (so that each intersection is connected, for simplicity) and show that the two triple covers are isomorphic on each open set, but these isomorphisms aren’t compatible on intersections.

Note, as an aside, that we’ve been working with an explicit choice of finite cardinality: |X|=3. Say instead we wanted the weaker “|X| is finite”. There’s nothing to worry about in G-Set because this topos is boolean, satisfies AC, etc. However for topoi without LEM, there are multiple inequivalent notions of finiteness. See here for a discussion5.


x,y:X.x=yxy

This says that X is decidable, which is language coming from a computability theoretic interpretation of our logic that I’ll save for a different post6.

Let’s start with the externalization. If Ex,y:X.x=yxy, then in the forcing notation we have

1x,y:X.x=yxy

which we can cash out (again, see chapter VI in Mac Lane and Moerdijk) for

X×Xπ1=π2π1π2

where π1 and π2 are the projections X×XX.

Now, just like existential quantifiers, disjunctions need only be true locally. So in the case E=G-Set we want to find G-sets V and W, with maps p:VX2 and q:WX2 so that

  1. Vπ1p=π2p
  2. Wπ1qπ2q
  3. p+q:V+WX2 is an epi

Of course, this isn’t hard to do! Let’s take V={(x,x)xX} (equipped with the diagonal G-action) and W=X2V (also equipped with the diagonal G-action).

If it’s not obvious, prove that W really is a G-set.

Then it’s easy to see that by taking p and q to be the relevant inclusion maps we can satisfy our 3 conditions. Thus every G-set X is decidable!7



Next, let’s look at Sh(S).

Again, we’ll take an object X and look at the statement x,y:X.x=yxy.

The flow of the computation is hopefully becoming familiar now. For variety, since we’re working in a sheaf topos, let’s do this computation with the sheaf semantics (Maclane and Moerdijk VI.7). This lets us restrict attention to open subsets of S, which is sometimes useful.

We start with 1x,y:X.x=yxy, that is, Sx,y:X.x=yxy.

Now the universal quantifiers represent true statements for any local section. That is, for each U open in S, and for each generalized element x,y:UX (that is, by yoneda, local sections x,yX(U) of the sheaf X over U)

Ux=yxy

Then since disjunctions need only be true locally, this is true exactly when we can over U by opens Vi so that, on each Vi, either

Vix=y

or

Vixy

That is, on each Vi in the cover, either the sections xVi and yVi are everywhere equal or they’re nowhere equal.

So an object X in Sh(S) is decidable exactly when, for any connected open US, any two local sections of X are either everywhere equal or nowhere equal8.

For a super concrete example, let’s look at S=[1,1] and X the sheaf of continuous functions on S. Then if we look at x=s and y=|s|, we can ask about the truth values x=y and xy.

Here x=y is the largest open subset of S=[1,1] on which s=|s|. This is, of course, (0,1]. Similarly, xy is the largest open subset on which s|s|, but her friends call her [1,0).

Notice the truth values are open subsets of S. We’re keeping track of where something is true, which is a finer (and more useful!) tool than just a simple boolean true/false.

But of course, this means that x=yxy is the union (0,1][1,0)=[1,1]{0}. Which is not the top element of the lattice of opens, and thus is not “true”! Even though 0=|0|, this truth is not local – No matter how slightly we wiggle 0, this truth value can change, and this instability is exactly what keeps 0 from being in the set [1,0)(0,1]=[[s=|s|s|s|]]



Let’s give a bonus example as well, since this is a fairly subtle concept.

We’ll work in the arrow topos Set whose objects are triples (a,f,b) where f:ab in Set. An arrow (φ0,φ1):(a,f,b)(c,g,d) is a pair of arrows in Set making the obvious square commute:

I’ll leave much of this example as a fun exercise, since it’s important to get practice working these things out for yourself! If you want to check your work, though, I’ll leave brief solutions in a fold!

First, can you compute the object of truth values Ω?

solution

This is worked out in detail in chapter I of Mac Lane and Moerdijk (pages 35 and 36 of my edition) but briefly, we get

Ω={,,}σ{,}

with σ()=, σ()=, σ()=.

Remember that a subobject of X0fX1 is a pair of subsets A0X0, A1X1 so that f[A0]A1. This is exactly a restriction of f!

Then any x1X1 is either in A1 or it isn’t. That’s why the target of σ is {,}. But an x0X0 has more options. Either

  • x0A0 and, necessarily, fx0A1
  • x0A0 but fx0A1 anyways
  • x0A0 and fx0A1

these correspond to the truth values , , and in the domain of σ.

Next, can you figure out what it means for an object afb to be decidable?

solution

Let’s compute.

We quickly get to f2x=yxy, where (as usual) x and y are the projection maps from f2f.

Another, smaller, computation shows that f2:a2b2 is just the map sending (x,y)(fx,fy). Moreover, an epi

(a~f~b~)(afb)

is a pair of surjections a~a and b~b making the square commute.

With this in mind, when we unwind the disjunction to a pair of maps Vf2 and Wf2 so that

  • Vx=y
  • Wxy
  • V+Wf2 is epi

it’s enough to look at the images of the maps Vf2 and Wf2. That is, it’s enough to look at V and W subobjects of f2 and ask that the union VW is all of f2.

To have our best chance at covering f2, we should take V and W to be as big as possible under the restrictions that Vx=y and Wxy.

Unwinding Vx=y, the best we can do is to take V to be the diagonal {(x,y)a2x=y}f2{(x,y)b2x=y}.

Then unwinding Wxy, the best we can do is {(x,y)a2xyfxfy}f2{(x,y)b2xy}.

Notice we have to restrict the domain to those elements who stay separated after we apply f2! After all, if xy but fx=fy, then we wouldn’t land in the right codomain9.

So if we want the union of V and W to be all of f, we need to know that each pair (x,y) with xy gets sent to a pair with fxfy, and this happens exactly when f is a monomorphism!

So the decidable objects of Set are the monos.

Hopefully this also makes clear, in a more discrete way than the Sh(S) example, how decidability can fail! For a super concrete example10, consider the ring object in Set given by

Z[ϵ]/ϵ2ϵ0Z

This ring is not decidable since ϵ=0 is neither true nor false!


This was a lot of fun, and hopefully you feel more comfortable externalizing some simple statements after reading through these. It’s all about practice practice practice, though, so I encourage everyone to come up with their own easy examples and try externalizing them! I learned a ton while writing this blog post, and that’s on top of everything I learned trying to work out what a manifold inside G-Set should be!

I won’t make promises, but I would love to write another post of this flavor sometime soon, where we can talk about something simple like linear algebra or basic analysis inside a topos. Of course, I have lots of ideas, and comparatively little time to write them all, so things will happen when they do ^_^.

Stay warm and stay safe, all! We’ll talk soon 💖


  1. In particular, we’re planning to think about G-equivariant brownian motion. 

  2. Something like this is probably true for more general etendues, which (up to a cover) look like Sh(X). The case of G-sets is particularly easy, since locally they look like Set=Sh()

  3. Try n:N.f:XG×n.f is surjective 

  4. Nothing at all changes if we instead take S to be a locale 

  5. Also note that the existential quantifier really impacts things. Essentially we asked for Eα:X3.. If we had instead asked for an actual (global) element, Eα:X3, we would have actual isomorphism instead of mere local isomorphism. This is what the previous nlab link calls “(bishop) finite”, and it’s a stronger condition than what we’ve been working with. 

  6. Briefly, a property is called decidable if a computer can check if the answer is yes or no.

    A property is called semidecidable if a computer can check if the answer is “yes”, but we don’t know how long it’ll take. What’s worse, the code is allowed to loop forever if the answer is “no”! So really we get a “yes” or “maybe”.

    Dually, we say a property is co-semidecidable if a computer can answer “no” or “maybe”. If you run it long enough and the answer is “no”, it will always say so. But if the answer is “yes” the code might loop forever.

    As a (fairly easy?) exercise, show that something is decidable if and only if it’s both semidecidable and co-semidecidable.

    To finish the brief explanation, equality is such an important predicate that we say X is decidable exactly when equality on X is, and this is the definition we ported to topos theory. 

  7. This should make intuitive sense. A topos of G-sets is boolean, and even satisfies AC. So it looks almost exactly like Set! In particular, we can see that every object in G-Set is decidable by appeal to LEM, rather than by building the witnesses directly.

    Yet another way to see this (which I’m 80% sure is true) is by working in the slice topos. I’m pretty sure that

    X2π1=π2¬π1=π2

    is the same thing as asking for

    π1=π2¬π1=π2

    to name in the slice topos E/X2.

    Here the truth values are subobjects of X2 in E, with π1=π2 naming the truth value

    {(x,y)x=y}

    and ¬π1=π2 naming the truth value

    “the biggest sub-G-set disjoint from {(x,y)x=y}

    of course, since the complement of the diagonal is a sub-G-set, these two sets union to the whole of X2. That is, the truth value of their disjunction is , as desired.

    Note this is not the case for M-sets for a monoid M!

    If we work with the monoid N, let’s consider the N-set X=a,b with 1a=1b=b. That is,

    (plus a self loop at b that q.uiver won’t draw for me… I’d make it myself but it’s getting late and I don’t feel like it, haha)

    Then the product X2 is

    (again, with a secret self loop at (b,b)).

    The diagonal, of course, is a sub-M-set:

    But now the off-diagonal is not a sub-M-set. It’s not closed under the M-action:

    So the complement {(x,y)xy} will be the largest sub-M-set contained inside the off-diagonal. But in this example that’s empty!

    In particular, {(x,y)x=y}{(x,y)xy}, a subobject of X2, and thus a truth value in M-Set/X2, is not X2. So M-Set thinks x,y:X.x=yxy is not true.

    It also thinks it’s not false, for what that’s worth.

    As a nice (slightly more challenging) exercise, figure out what the truth value of that statement actually is!

    It’s still not fully clear to me what truth values in M-Set/X2 should look like… In M-Set there are only two global truth values, even though externally we can see that Ω is the set of all (left) ideals of M.

    Presumably in M-Set/X2 the global truth values are the sub-M-sets of X2… But I’m not sure about what exactly Ω looks like.

    If someone wants to work this out, I’d love to hear your thoughts in the comments! This footnote is already getting super long, though, and I have the rest of the post to work on! 

  8. This is obviously an extremely strict condition! If we think about the sheaf of real-valued continuous functions on S, it’s hard to imagine the case that two functions which agree on a point automatically agree everywhere! 

  9. This is worth some meditation. There’s something model-theoretic happening here, where truth is preserved as we move from the domain to the codomain. But falsity does not need to be preserved (said another way, truth does not need to be reflected from the codomain to the domain).

    So true things stay true, but false things can become true later on.

    It’s possible for x and y to start different and end the same, but if they start the same they have to stay that way.

    Somehow the logic of the topos handles all of this for us, which doesn’t seem so impressive when we only have one arrow, but you can imagine as we increase the complexity of the category C in the topos SetC that it becomes more annoying to do this bookkeeping by hand.

    Regardless, it’s not lost on me that f is decidable in Set exactly when it’s a monomorphism in Set… This has something to do with the fact that, model theoretically, monos do reflect the truth of atomic questions (like equality). I’m seeing some connection here, but I can’t quite make it precise. 

  10. taken from Johnstone’s Rings, Fields, and Spectra, which should really be required reading for anyone interested in applications of topos theory!