Category Theory
Zulip Server
Archive

You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.


Stream: learning: questions

Topic: subobject classifiers and topos theory


view this post on Zulip David Egolf (Jan 04 2022 at 04:12):

The concept of "subobject classifier" seems nice for thinking about properties of objects! (We can think of a subobject as the part of the original object that has some value for some property of interest). The concept of subobject classifier appears to show up in the context of "topos theory". I read that the category of sets is a topos in the nlab article, but otherwise that article is fairly mysterious to me.
What is another example of a topos, ideally one that I might be able to understand with a little work?

view this post on Zulip Todd Trimble (Jan 04 2022 at 05:07):

You might consider the topos of GG-sets where GG is a group or monoid. Another might be the category whose objects are functions between sets and whose morphisms are commutative squares.

view this post on Zulip David Egolf (Jan 04 2022 at 05:19):

Thanks, that's interesting!

view this post on Zulip David Egolf (Jan 04 2022 at 05:38):

I think the second example of a topos above is called Set2Set^2 in the book "Sheaves In Geometry And Logic". From that book apparently SetNSet^N is also a topos - here the objects are sequences of NN functions between sets, and the morphisms are corresponding sequences of commutative squares, I think. Generalizing further, apparently SetCopSet^{C^{op}} for a small category CC is also a topos. Here the objects are contravariant functors from CC to SetSet, and the morphisms are natural transformations.
Interestingly, a while ago I was thinking about modelling an imaging process as a sequence of processing steps, together with some other people on this zulip. At one point, we were considering functor categories VectNVect^N, where NN refers to the category that looks like 12N1 \to 2 \to \dots \to N. I wonder if this is also an example of a topos.

view this post on Zulip Zhen Lin Low (Jan 04 2022 at 06:26):

A category with a zero object is almost never a topos.

view this post on Zulip John Baez (Jan 04 2022 at 06:58):

David Egolf said:

Generalizing further, apparently SetCopSet^{C^{op}} for a small category CC is also a topos. Here the objects are contravariant functors from CC to SetSet, and the morphisms are natural transformations.

Yes, this is called a presheaf topos and this has as special case both examples Todd just mentioned: the topos of GG-sets and the topos of functions.

view this post on Zulip John Baez (Jan 04 2022 at 07:01):

If you want to understand topoi I recommend paying special attention to presheaf topoi. There's a lot about them in Sheaves in Geometry in Logic.

If you don't know about sheaves, you'll have a fair amount of trouble thinking of any topos that's not of the form SetCopSet^{C^{\rm op}}.

view this post on Zulip John Baez (Jan 04 2022 at 07:03):

David Egolf said:

At one point, we were considering functor categories VectNVect^N, where NN refers to the category that looks like 12N1 \to 2 \to \dots \to N. I wonder if this is also an example of a topos.

Nope. VectVect isn't a topos and neither is VectCopVect^{C^{\rm op}} in general, though it is when CC is the empty category - a thoroughly boring example.

view this post on Zulip John Baez (Jan 04 2022 at 07:34):

I tell my students: if you don't know much topos theory, and you're wondering if something is a topos, here's a good rule of thumb: it's not. (Unless it's a presheaf or sheaf topos.)

view this post on Zulip Jens Hemelaer (Jan 04 2022 at 08:49):

However, VectNVect^N is a Grothendieck category. These are precisely the abelian counterparts of Grothendieck toposes. A Grothendieck topos is a category of sheaves on a site, while a Grothendieck category is a category of "Z\mathbb{Z}-linear sheaves" on a "Z\mathbb{Z}-linear site".

If you have a Grothendieck topos, then you can turn it in a Grothendieck category by taking the category of abelian group objects in the topos. But not every Grothendieck category is of this form (I believe yours isn't). Intuitively, Grothendieck toposes are a generalization of topological spaces, and Grothendieck categories are a generalization of schemes.

view this post on Zulip Todd Trimble (Jan 04 2022 at 14:50):

David Egolf said:

I think the second example of a topos above is called Set2Set^2 in the book "Sheaves In Geometry And Logic". From that book apparently SetNSet^N is also a topos - here the objects are sequences of NN functions between sets, and the morphisms are corresponding sequences of commutative squares, I think. Generalizing further, apparently SetCopSet^{C^{op}} for a small category CC is also a topos. Here the objects are contravariant functors from CC to SetSet, and the morphisms are natural transformations.
Interestingly, a while ago I was thinking about modelling an imaging process as a sequence of processing steps, together with some other people on this zulip. At one point, we were considering functor categories VectNVect^N, where NN refers to the category that looks like 12N1 \to 2 \to \dots \to N. I wonder if this is also an example of a topos.

Yes, it's Set2Set^2. One reason I chose that example is that one can work out by hand what the subobject classifier is like, and that's a useful exercise. It shows in particular actually that "logic" in a topos doesn't have to be Boolean. Similarly, for the topos of directed graphs, you can try working out by hand what the subobject classifier is there. (As a start: what's CC for that case? Try not to look at the answer in the back of the book!)

Often I find that beginning students in topos theory want to go for the abstraction, but working out by hand humble little examples is invaluable and intuition-building.

view this post on Zulip John Baez (Jan 04 2022 at 20:32):

It's also fun - at least if you can momentarily stop reaching for the sky.

view this post on Zulip David Egolf (Jan 04 2022 at 22:55):

Thanks to everyone for all your interesting comments!

Todd Trimble said:

Yes, it's Set2Set^2. One reason I chose that example is that one can work out by hand what the subobject classifier is like, and that's a useful exercise. It shows in particular actually that "logic" in a topos doesn't have to be Boolean.

I'm trying to work out what the subobject classifier is in Set2Set^2.

First, we need to figure out what a monic morphism looks like in this setting. It seems to be a morphism that is monic in each of its components. So, in this case, a morphism h:fgh: f \to g is monic exactly when its two component functions h1h_1 and h2h_2 are injective.

Next, we need to figure out the terminal object. It appears that the function {}{}\{*\} \to \{*\} is terminal.

Next, I wanted to figure out Ω\Omega, working from this definition:
subobject classifier

However, I got a little confused here. The motivating example provided earlier in the text was in the case of Set{Set}:
subobject classifier in Set

Here we see that 2={0,1}2 = \{0, 1\} plays the role of Ω\Omega. The idea is that ϕS\phi_S is labelling each part of XX, telling us if it is in SS or not:
characteristic function

However, I don't immediately see why we couldn't have 3={0,1,2}3 = \{0, 1, 2\} play the role of Ω\Omega.
Oh, I see! The right side of the diagram sends every element to a single truth value (which is taken to be "0" in this example in SetSet). The labelling function ϕS\phi_S has to send every xXx \in X to 0 if it is in SS. However, if there are more than two values in Ω\Omega, then we have options of how to define ϕS\phi_S on elements of XX that are not in SS. If we set Ω={0,1,2}\Omega = \{0,1,2\}, then ϕS\phi_S could send elements of XX not in SS to either 1 or 2. That means that ϕS\phi_S wouldn't be uniquely determined by the subobject m:SXm: S \to X anymore.

(I wrote this all up to explain how I got stuck, and then I got unstuck - I think. I'm posting it anyways in case someone finds it interesting. I'm still working on figuring out Ω\Omega in Set2Set^2).

view this post on Zulip David Egolf (Jan 04 2022 at 23:37):

Hmmm. I've concluded that figuring out the subobject classifier in Set2Set^2 is a bit hard for me at the moment. It might make sense for me to learn some more about working with pullbacks first, for example.

Todd Trimble said:

Similarly, for the topos of directed graphs, you can try working out by hand what the subobject classifier is there. (As a start: what's CC for that case? Try not to look at the answer in the back of the book!)

With regards to directed graphs, I think the category of directed graphs is given by SetDSet^{D} where DD is the category having two objects, and two morphisms from the first object to the second one. This is because each directed graph is specified by two functions from a set of arrows to a set of vertices, namely the source and target functions.
I don't know how to efficiently find the subobject classifier in this setting either, unfortunately.

view this post on Zulip Todd Trimble (Jan 05 2022 at 02:44):

David Egolf said:

Hmmm. I've concluded that figuring out the subobject classifier in Set2Set^2 is a bit hard for me at the moment. It might make sense for me to learn some more about working with pullbacks first, for example.

Todd Trimble said:

Similarly, for the topos of directed graphs, you can try working out by hand what the subobject classifier is there. (As a start: what's CC for that case? Try not to look at the answer in the back of the book!)

With regards to directed graphs, I think the category of directed graphs is given by SetDSet^{D} where DD is the category having two objects, and two morphisms from the first object to the second one. This is because each directed graph is specified by two functions from a set of arrows to a set of vertices, namely the source and target functions.
I don't know how to efficiently find the subobject classifier in this setting either, unfortunately.

We could start with a simpler problem. Let's define an element of an object XX to be a morphism 1X1 \to X (officially, that's called a "global element"). Here 11 is terminal. Can you figure out how many elements there are of Ω\Omega in Set2Set^2? Use the definition of subobject classifier to find out!

view this post on Zulip Todd Trimble (Jan 05 2022 at 02:46):

Maybe a hint: they call it a subobject classifier because...? There's a one-to-one correspondence between somethings and somethings else, encoded in the notion of subobject classifier. What is that correspondence?

view this post on Zulip David Egolf (Jan 05 2022 at 05:36):

Thanks @Todd Trimble for helping out with this.
I'm still struggling with this simpler problem. Here's what I've got so far, though:

Let's start with the definition of subobject classifier:
subobject classifier

You defined an element of an object XX to be a morphism 1X1 \to X, where 11 is a terminal object.
We want to figure out how many morphisms there are from 11 to Ω\Omega, as we want to determine how many elements it has.
We know Ω\Omega has at least one element, because by definition we have the morphism 1trueΩ1 \to_{true} \Omega.

You note a correspondence between two things indicated in the definition of subobject classifier. We have for every monomorphism f:SXf: S \to X a unique morphism ϕ:XΩ\phi: X \to \Omega so that the square is a pullback square. If we set S=1S = 1 and X=ΩX = \Omega, we find that for each element f:1Ωf: 1 \to \Omega of Ω\Omega, there is a unique morphism ϕ:ΩΩ\phi: \Omega \to \Omega so that the square is a pullback square. This seems to suggest some link between the endomorphisms of Ω\Omega and its number of elements.

However, you mention a "one-to-one" correspondence is involved. If f:SXf: S \to X and g:SXg: S \to X are distinct morphisms, must the corresponding induced ϕf\phi_f and ϕg\phi_g be distinct? I'm pretty sure that this is actually false, based on an example I tried in SetSet. If f:SXf: S \to X and g:SXg: S \to X are isomorphic as subobjects, then I suspect we will have ϕf=ϕg\phi_f = \phi_g. This problem doesn't actually show up, though, when we are considering morphisms from 1Ω1 \to \Omega. Distinct morphisms from 11 correspond to distinct (non-isomorphic) elements of Ω\Omega, I think.

So, we might ask instead the following question in an attempt to obtain a one-to-one correspondence. If f:1Xf: 1 \to X and g:1Xg: 1 \to X are distinct morphisms, must the corresponding induced ϕf\phi_f and ϕg\phi_g be distinct? I think this is true, although I am having trouble proving it nicely. Say we accept this for now.

If we accept the premise of the previous paragraph, then distinct elements of XX correspond to distinct induced ϕ\phi maps from XX to Ω\Omega. This would be a one-to-one relationship. In the case of Ω=X\Omega = X, we have that distinct elements f:1Ωf: 1 \to \Omega of Ω\Omega yield distinct induced ϕ\phi maps ϕ:ΩΩ\phi: \Omega \to \Omega. I don't immediately see how this helps us count distinct morphisms to Ω\Omega from 1.

I'm getting tired, so I'll stop here for now. I'll plan on coming back to this tomorrow.

view this post on Zulip David Egolf (Jan 05 2022 at 06:03):

I did spot this, which seems to indicate that this relationship between elements of Ω\Omega and pullback-induced endomorphisms of Ω\Omega is actually a bijection:
bijection

(The idea is to set X=ΩX = \Omega and S=1S=1 in the above statement).

Maybe I will try to prove that in the morning. Since it is stated without proof here, hopefully that means it is simple enough for me to figure out!

view this post on Zulip Todd Trimble (Jan 05 2022 at 14:27):

Yes, this is a key thing to focus on. Do you know what the equivalence relation is here? After you answer this, a follow-up question: in the case of SetSet, what's a simpler name for an equivalence class of monomorphisms?

view this post on Zulip David Egolf (Jan 05 2022 at 15:26):

Todd Trimble said:

Yes, this is a key thing to focus on. Do you know what the equivalence relation is here? After you answer this, a follow-up question: in the case of SetSet, what's a simpler name for an equivalence class of monomorphisms?

The equivalence class of each monic f:SXf: S \to X consists of monomorphisms that are isomorphic in C/XC/X. That is, we say monomorphisms f1:S1Xf_1: S_1 \to X and f2:S2Xf_2: S_2 \to X are in the same equivalence class, exactly when there is an isomorphism g:S1S2g: S_1 \to S_2 so that f2g=f1f_2 \circ g = f_1. I believe we say the equivalence class of a monic f:SXf: S \to X is the subobject described by ff.

In SetSet, an equivalence class of monomorphisms from SXS \to X corresponds to a subset of XX. We can see this by noting that each of the monomorphisms isomorphic in Set/XSet/X are forced to have the same image in XX.

view this post on Zulip Todd Trimble (Jan 05 2022 at 15:45):

Yes, exactly right. Similarly, for any category, a simpler name for an equivalence class of monomorphisms into an object XX is subobject of XX.

Thus, putting some things together, there is a natural bijection between maps XΩX \to \Omega and subobjects of XX.

Now apply this to X=1X = 1 in Set2Set^2. See if you can determine the subobjects for this case.

view this post on Zulip David Egolf (Jan 05 2022 at 16:40):

Todd Trimble said:

Thus, putting some things together, there is a natural bijection between maps XΩX \to \Omega and subobjects of XX.

I was hoping to prove that this really is a bijection before going further. That is, the map θX:SubC(X)C(X,Ω)\theta_X: Sub_C(X) \to C(X, \Omega) that sends the equivalence class [m][m] of a monic m:SXm: S \to X to its induced characteristic morphism ϕ\phi is actually a bijection between the subobjects of XX and morphisms XΩX \to \Omega.

First, we want to show that θX\theta_X is injective. Let θX([m])=θX([m])\theta_X([m]) = \theta_X([m']). We want to show then that [m]=[m][m] =[m']. If ϕ=θX([m])=θX([m])\phi = \theta_X([m]) = \theta_X([m']), that means that both mm and mm' are pullbacks of truetrue along ϕ\phi, which means that they are isomorphic as pullbacks. This implies that mm and mm' are isomorphic as subobjects, and so indeed [m]=[m][m] = [m']. This shows that θX\theta_X is injective.

Next, we want to show that θX\theta_X is surjective. So, for any ϕ:XΩ\phi: X \to \Omega, we want to show there is a subobject [m][m] of XX which is the equivalence class of a monomorphism m:SXm: S \to X, where mm is a pullback of truetrue along ϕ\phi. We are guaranteed such an mm exists, because pullbacks always exist in the category we are working in, and the pullback of any monic morphism (such as truetrue) is always monic.

I think this shows that θX\theta_X is bijective. This is really interesting!
You mention that the bijection is natural, but I will hold off on proving that until it's needed.

view this post on Zulip David Egolf (Jan 05 2022 at 16:56):

This means there is a bijection between maps 1Ω1 \to \Omega, which are elements of Ω\Omega, and subobjects of 11. Let me try this out in SetSet. In SetSet, 11 is the singleton set {0}\{0\}, Ω\Omega is the set {0,1}\{0,1\} and true:1Ωtrue: 1 \to \Omega sends 000 \mapsto 0. There are two elements of Ω\Omega, 0 and 1. So, we expect there to be two subobjects of {0}\{0\}. I was worried at first, because this set only has one element. However, it does have two subobjects, corresponding to the subsets {0}\{0\} and the empty subset {}\{\}.

As a related example in SetSet, we expect a bijection between the subobjects (subsets) of Ω\Omega and the endofunctions f:ΩΩf: \Omega \to \Omega. For a set with nn elements, there are nnn^n endofunctions and 2n2^n subsets. So, Ω\Omega in SetSet must have nn elements such that nn=2nn^n = 2^n. So, Ω\Omega in SetSet must have two elements, which indeed it does.

Now, we just need to do this sort of thing in Set2Set^2...

view this post on Zulip David Egolf (Jan 05 2022 at 17:18):

We can now figure out the number of elements of Ω\Omega in Set2Set^2, using the fact that these are in bijection with subobjects of a terminal object 11. The object {0}{0}\{0\} \to \{0\} is terminal in Set2Set^2, and so we want to find its subobjects. Each morphism in Set2Set^2 is a pair of functions that makes the resulting square commute. As noted earlier, I think this means that a monomorphism in Set2Set^2 is a pair of injective functions that make the resulting square commute. We have a monomorphism from each of {0}{0}\{0\} \to \{0\}, {}{0}\{\} \to \{0\} and {}{}\{\} \to \{\} to {0}{0}\{0\} \to \{0\}, if I am remembering how functions from the empty set work. I believe these correspond to the distinct subobjects.

So, I think there are 3 subobjects of 11 in Set2Set^2, which would mean that there are 3 elements of Ω\Omega in Set2Set^2.

view this post on Zulip David Egolf (Jan 07 2022 at 01:46):

Now, let's try to figure out Ω\Omega by using the subobject maps into 11.
For every such subobject map, we know there needs to exist a unique map 1Ω1 \to \Omega so that the square in the definition of the subobject classifier commutes and is a pullback square.
I tried to construct such an Ω\Omega that would satisfy this. I think this one works, although I haven't checked it super carefully: {0,1,2}f{0,1}\{0,1,2\} \to_f \{0,1\} with f(0)=0f(0) = 0, f(1)=0f(1) = 0 and f(2)=1f(2) = 1. To get this, I defined the map true:1Ωtrue: 1 \to \Omega so that each function of truetrue maps to 0 in the corresponding set of Ω\Omega.
Any thoughts or insights @Todd Trimble or others might wish to offer would be appreciated.
At any rate, this has been interesting and I feel like I got some good practice with these ideas. Thanks again to everyone who's helped me out with this!

view this post on Zulip Todd Trimble (Jan 08 2022 at 16:13):

Sorry for not getting back sooner.

Nice work! You have succeeded in describing the underlying object of Ω\Omega in Set2Set^2.

Here's another thing to work out: can you describe the negation operator ¬:ΩΩ\neg: \Omega \to \Omega?

This will go some distance toward making clear that the internal propositional logic for this topos is intuitionistic.

view this post on Zulip David Egolf (Jan 09 2022 at 21:40):

Oh, that sounds interesting to do as well!
Working on this has lead me to discover Boolean algebras and Heyting algebras. I hadn't realized before that we can talk about logic with similar-ish tools as we talk about subsets of a topological space! This connection between the study of space and the study of logic is unexpected and beautiful to me! I wonder if we can generate a system of propositions and implications between them from a given topological space.
(Still a bit of background reading/learning to do before I take a stab at working out negation in Set2Set^2, as I've not taken any classes on this sort of thing...)

view this post on Zulip John Baez (Jan 09 2022 at 23:35):

Yes, the connection between topology and logic given by the fact that open subsets of a topological space form a Heyting algebra is a marvelous thing, and it's a step toward topos theory, since for any topos the subobject classifier gives a Heyting algebra.

view this post on Zulip John Baez (Jan 09 2022 at 23:37):

A pretty good intuition, if you're ready for it, is that a Heyting algebra is a "0-topos" while a topos is a "1-topos" - the next thing up the ladder of n-categories.

view this post on Zulip John Baez (Jan 09 2022 at 23:44):

Or if that's too funky, you can say something similar this way: topos theory has the theory of Heyting algebras built in very much like how classical set theory has the theory of Boolean algebras built in.

view this post on Zulip John Baez (Jan 09 2022 at 23:45):

So classical set theory is a "step up" from Boolean logic, and topos theory is a parallel "step up" from Heyting algebra logic.

view this post on Zulip David Egolf (Jan 11 2022 at 00:32):

Thanks @John Baez for your comments. The n-category stuff goes over my head at this point, but the idea that topos theory has Heyting algebras "built in", in a way that classical set theory has Boolean algebras "built in" is interesting.
To my understanding, the subobjects of a given object in a topos form a Heyting algebra. Presumably the subsets of a given set form a Boolean algebra?

view this post on Zulip David Egolf (Jan 11 2022 at 00:37):

I've been trying to figure out how logic (and negation in particular) work in a topos, without actually having to learn a ton of the basics of topos theory. So far my "topos tourism plan" has not had a lot of success.
I did spot this, though (in "Sheaves in Geometry and Logic"):
subobjects as a place for logic

The authors go on to explicitly describe how "and", "or", "implication", and "negation" work with respect to subobjects of a given object. However, I think these are all maps between subobjects of a given object. I'm not immediately seeing how this gives a negation operator that acts between objects, instead of subobjects.

I will probably keep chipping away at this, but hints are always appreciated.

view this post on Zulip John Baez (Jan 11 2022 at 00:45):

David Egolf said:

To my understanding, the subobjects of a given object in a topos form a Heyting algebra. Presumably the subsets of a given set form a Boolean algebra.

Yes! Here's a fancy-ass way to see this fact. Set\mathsf{Set} is a topos, so the subsets of a given set form a Heyting algebra. But a Boolean algebra is the same as a Heyting algebra where ¬(¬p)=p\neg(\neg p) = p. And the complement of the complement of a subset is that subset (at least in classical logic - there are intuitionists around here who don't like thinking this way). So the subsets of a given set form a Boolean algebra.

There are also tons of other ways to see this fact, because there are tons of equivalent definitions of "Boolean algebra". Take your favorite definition of "Boolean algebra", and check that the collection of subsets of a set form a Boolean algebra.

view this post on Zulip John Baez (Jan 11 2022 at 00:47):

Boolean algebras are how we reason about truth values in classical logic, so we're seeing here a connection between classical logic and traditional set theory.

view this post on Zulip John Baez (Jan 11 2022 at 00:48):

I'm not immediately seeing how this gives a negation operator that acts between objects, instead of subobjects.

Good! There isn't one!

view this post on Zulip John Baez (Jan 11 2022 at 00:48):

There's no such thing as the negation of a set.

view this post on Zulip David Egolf (Jan 11 2022 at 01:35):

The nLab gives us an explicit definition of a Boolean algebra:
boolean algebra

Let's take a set UU, and see if its set of subsets, ordered under inclusion, forms a Boolean algebra. If it does, then we will have a way of and-ing, or-ing, and negating its subsets.

First we need to check that the subsets of UU forms a partially ordered set under inclusion. Let ab    aba \leq b \iff a \subseteq b for any subsets a,ba, b of UU.
Checking reflexivity: aa    aaa \subseteq a \implies a \leq a for any subset aa.
Checking transitivty: aba \leq b and bcb \leq c implies aba \subseteq b and bcb \subseteq c which means aca \subseteq c and so aca \leq c.
Checking antisymmetry: aba \leq b and bab \leq a means aba \subseteq b and bab \subseteq a which implies a=ba=b.

Next, we need to find a \top element so xx \leq \top holds for any subset xx of UU.
Set =U\top = U. Then xUx \subseteq U for any xx, and so xx \leq \top for any xx.

Next, we need to find a \bot element so x\bot \leq x holds for any subset xx of UU.
Setting =\bot = \emptyset will work, since the empty set is a subset of any set.

Next, for any a,bUa,b \subseteq U, we need to define aba \wedge b so that xabx \leq a \wedge b iff xax \leq a and xbx \leq b.
Set ab=aba \wedge b = a \cap b. Then, if xabx \subseteq a \cap b, we have xax \subseteq a and xbx \subseteq b. In addition, if xax \subseteq a and xbx \subseteq b then xabx \subseteq a \cap b.

view this post on Zulip David Egolf (Jan 11 2022 at 01:37):

Next, for any a,bUa,b \subseteq U, we need to define aba \vee b so that abxa \vee b \leq x iff axa \leq x and bxb \leq x.
Set ab=aba \vee b = a \cup b. Then if abxa \cup b \subseteq x, we have axa \subseteq x and bxb \subseteq x. In addition, if axa \subseteq x and bxb \subseteq x, then abxa \cup b \subseteq x.

Next, for any aUa \subseteq U, we need to define ¬a\neg a so that a¬aa \wedge \neg a \leq \bot and and a¬a\top \leq a \vee \neg a.
Let ¬a=ac\neg a = a^c, the complement of aa in UU. This is the subset of UU containing exactly the elements of UU that aa does not contain.
Does this satisfy the required properties?
We have aaca \cap a^c \subseteq \emptyset, which implies a¬aa \wedge \neg a \leq \bot, as needed.
We have UaacU \subseteq a \cup a^c, which implies a¬a\top \leq a \vee \neg a, as needed.

Finally, for any a,b,cUa,b,c \subseteq U, we need a(bc)(ab)(ac)a \wedge (b \vee c) \leq (a \wedge b) \vee (a \wedge c).
This would be implied by a(bc)(ab)(ac)a \cap (b \cup c) \subseteq (a \cap b) \cup (a \cap c).
I see from Wikipedia's article "Algebra of Sets", that this holds (under the heading "distributive property").

So, it appears that the subsets of UU, ordered by inclusion, do indeed form a Boolean algebra!

view this post on Zulip David Egolf (Jan 11 2022 at 01:40):

John Baez said:

I'm not immediately seeing how this gives a negation operator that acts between objects, instead of subobjects.

Good! There isn't one!

I just want to emphasize that this kind of comment is incredibly helpful. It's rather easy to get a wrong idea of where one is trying to head when learning things, and to worry about not reaching a non-existent destination. So, this really helps a lot.

view this post on Zulip John Baez (Jan 11 2022 at 01:48):

Great! I'm glad you checked that nuts-and-bolts definition of Boolean algebra for subsets of a set UU.

I see from Wikipedia's article "Algebra of Sets", that this holds (under the heading "distributive property").

Yes, it holds with an equal sign: a(bc)=(ab)(ac) a \cap (b \cup c) = (a \cap b) \cup (a \cup c). For example,

"I want a dog that's black and either friendly or really cute"

is the same as

"I want a dog that's either black and friendly or black and really cute".

(Here I'm describing a subset of the set of dogs in two ways.)

view this post on Zulip John Baez (Jan 11 2022 at 01:52):

We also have the dual law

a(bc)=(ab)(ac) a \cup (b \cap c) = (a \cup b) \cap (a \cup c)

view this post on Zulip David Egolf (Jan 11 2022 at 01:56):

I was wondering why we didn't need to check both of those laws. I'm guessing this is related to the statement that a Boolean algebra is "self-dual" made by the nlab. (So that, presumably, one law holding implies the other holds).

view this post on Zulip John Baez (Jan 11 2022 at 02:12):

Yes, you can prove one from the other using DeMorgan duality:

¬(ab)=¬a¬b \neg(a \cup b) = \neg a \cap \neg b

which is equivalent to

¬(ab)=¬a¬b \neg(a \cap b) = \neg a \cup \neg b

using ¬(¬a)=a\neg(\neg a) = a

view this post on Zulip John Baez (Jan 11 2022 at 02:13):

However, it's also true that one implies the other in any "lattice" (that is, a poset with a top and bottom element, where any two elements have a meet \wedge and a join \vee).

view this post on Zulip John Baez (Jan 11 2022 at 02:19):

The lattice of subspaces of a vector space, with its usual ordering (inclusion) is a nice example of a nondistributive lattice.

view this post on Zulip David Egolf (Jan 12 2022 at 01:39):

Todd Trimble said:

Here's another thing to work out: can you describe the negation operator ¬:ΩΩ\neg: \Omega \to \Omega?

This will go some distance toward making clear that the internal propositional logic for this topos is intuitionistic.

As mentioned above, the subobjects of an object in a topos form a Heyting algebra, which lets us talk about negation of subobjects. I am trying to understand what @Todd Trimble says above, where he mentions a negation map ¬:ΩΩ\neg: \Omega \to \Omega. It seems like he could be referring to a map on the subobjects of Ω\Omega, ¬:Sub(Ω)Sub(Ω)\neg: Sub(\Omega) \to Sub(\Omega). Any clarification is appreciated!

(Or perhaps somehow negation in the context of subobjects of a given object is induced by some corresponding morphism from Ω\Omega to Ω\Omega?)

view this post on Zulip Reid Barton (Jan 12 2022 at 01:49):

David Egolf said:

(Or perhaps somehow negation in the context of subobjects of a given object is induced by some corresponding morphism from Ω\Omega to Ω\Omega?)

:this:

view this post on Zulip Reid Barton (Jan 12 2022 at 01:50):

It's not a "corresponding" morphism, though. There is just one negation operator ¬:ΩΩ\neg : \Omega \to \Omega.

view this post on Zulip Reid Barton (Jan 12 2022 at 01:51):

For any object XX, the subobjects of XX correspond to maps XΩX \to \Omega. If we compose a map f:XΩf : X \to \Omega with an operator g:ΩΩg : \Omega \to \Omega, we get a new map gf:XΩgf : X \to \Omega. The negation operator is the map ΩΩ\not : \Omega \to \Omega such that the corresponding operation on subobjects of XX is complementation, for any XX.

view this post on Zulip Todd Trimble (Jan 12 2022 at 01:52):

Yes, there is an important principle here: operations on subobject lattices Sub(X)Sub(X)Sub(X) \to Sub(X) that are natural in XX are in bijection with corresponding operations on Ω\Omega.

(I don't expect this to be understood right away by beginners, but it follows from the Yoneda lemma.)

But in the example we were looking at, Ω\Omega in Set2Set^2, it's possible to figure out what ¬:ΩΩ\neg: \Omega \to \Omega looks like as a commutative square (remember that morphisms in this topos are commutative squares), and since Ω\Omega itself is a function from a 3-element set to a 2-element set, this example is small enough that one can make this commutative square very explicit.

view this post on Zulip Reid Barton (Jan 12 2022 at 01:53):

This is a funny but very powerful way of encoding all of the complementation operations at once by a single map ¬:ΩΩ\neg : \Omega \to \Omega--it's not immediately obvious that this should be possible.

view this post on Zulip John Baez (Jan 12 2022 at 01:57):

It's funny in a way, but in another way we could expect it from the description in Set\mathsf{Set} where we say "xx is in the complement of SXS \subseteq X iff xx is not in SS."

view this post on Zulip John Baez (Jan 12 2022 at 01:58):

That "not" winds up being the negation operator ¬:ΩΩ\neg : \Omega \to \Omega.

view this post on Zulip John Baez (Jan 12 2022 at 01:58):

(I know Reid knows this, but I'm hoping this helps David a bit.)

view this post on Zulip Reid Barton (Jan 12 2022 at 01:58):

Right, internally it's the operation of negating a proposition. Externally, it might be a bit mysterious.

view this post on Zulip David Egolf (Jan 12 2022 at 02:01):

Thanks everyone, this is making a lot more sense. I'll work out the details soon-ish in Set2Set^2.
I'm getting the intuition that each subobject of an object corresponds to a "labelling" of that object, which is the corresponding map to Ω\Omega from the object. Then, the map ¬:ΩΩ\neg: \Omega \to \Omega swaps these labels, at least in SetSet. The subobject that corresponds to this swapped labelling of the object is then the negation of the subobject.

view this post on Zulip John Baez (Jan 12 2022 at 02:05):

Yes, you're right: just think about the category Set\mathsf{Set}. A subset of a set SS amounts the same as map from SS to Ω={T,F}\Omega = \{T,F\}, called the characteristic function of the subset. Taking the complement changes this characteristic function by composing it with ¬:ΩΩ\neg : \Omega \to \Omega.

view this post on Zulip John Baez (Jan 12 2022 at 02:07):

To understand lots of basic stuff in topos theory you just copy what works in Set\mathsf{Set}. The surprises come when things work differently.

view this post on Zulip John Baez (Jan 12 2022 at 02:09):

A lot of the surprises from the fact that ¬¬1Ω\neg \circ \neg \ne 1_{\Omega}, in general.

view this post on Zulip David Egolf (Jan 13 2022 at 22:18):

I didn't realize this when I started looking at topos stuff, but it's more immediately connected to applied category theory than I thought. In particular, knowing that the functor category SetCopSet^{C^{op}} is a topos when CC is a small category helps motivate the "schemas" discussed in Seven Sketches. This is because schemas correspond to small categories (seeking to describe data organization), and functors from schemas correspond to particular realizations of this data organization (e.g. a particular database). So we can expect to get a sort of logic on databases in this way, because the functor category of these databases will be a topos.

view this post on Zulip John Baez (Jan 13 2022 at 23:37):

Yes, these so-called presheaf categories SetCop\mathsf{Set}^{C^{\mathrm op}} are the main topoi used by us working applied category theorists. By the way, @Evan Patterson and @James Fairbanks wanted to work with categories like SetC\mathsf{Set}^{C} instead. It's no big deal, since one man's CC is another man's CopC^{\rm op}. An object in SetC\mathsf{Set}^{C} is sometimes called a copresheaf, but Evan and James found that strange term a bit disgusting for such a simple thing, so they started calling it a CC-set.

So, if you ever read their work, when they're talking about CC-sets those are objects in a topos... which the topos of presheaves on CopC^{\rm op}.

view this post on Zulip Todd Trimble (Jan 14 2022 at 00:35):

I'm think I've seen CC-sets before for this concept, somewhere...

view this post on Zulip John Baez (Jan 14 2022 at 00:43):

Okay, good. Maybe they didn't make up that term. Of course it's a generalization of GG-sets for a group GG, which is a really common expression, and MM-sets for a monoid MM, which I'd also seen. So it's quite natural.

view this post on Zulip Evan Patterson (Jan 14 2022 at 00:43):

Yeah, we didn't make it up, which made me feel somewhat better about using it. The term is used in the book on topos theory by Reyes, Reyes, and Zolfaghari, admittedly for presheaves rather than copresheaves.

view this post on Zulip John Baez (Jan 14 2022 at 00:44):

Ugh! The evil op!

view this post on Zulip John Baez (Jan 14 2022 at 00:44):

For groups you have "left and right GG-sets" as a way of talking about whether you put the op in or not.

view this post on Zulip Evan Patterson (Jan 14 2022 at 00:45):

I really wish people said "covariant and contravariant" instead of "left and right" GG-sets, CC-sets, etc., but that's another rant!

view this post on Zulip John Baez (Jan 14 2022 at 00:57):

You're not going to get me to stop saying "left and right" GG-set in the case of groups, since that's just how mathematicians talk, but I've never heard anyone say "left and right" CC-set and don't feel the urge to start.

view this post on Zulip Evan Patterson (Jan 14 2022 at 01:04):

Haha, fair enough. BTW, the book I referenced, despite being a bit idiosyncratic, is really helpful when learning topos theory because it does a lot of concrete calculations in presheaf toposes such as those of graphs and "evolutive sets". After the book went out of print, the authors put it online: https://marieetgonzalo.files.wordpress.com/2004/06/generic-figures.pdf

view this post on Zulip David Egolf (Jan 19 2022 at 17:51):

I wanted to note for anyone who may read this thread later - chapter 7 of Seven Sketches in Compositionality seems like an accessible resource for learning about toposes.