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: deprecated: monoids

Topic: Monoids and toposes


view this post on Zulip Fabrizio Genovese (Apr 03 2020 at 23:21):

I'm very curious, in which way do monoids and toposes interact?

view this post on Zulip Fabrizio Genovese (Apr 03 2020 at 23:22):

For me monoids have always be very "classical" objects, or monoidal objects in a category, while I tend to think about toposes as logic/geometric objects

view this post on Zulip Fabrizio Genovese (Apr 03 2020 at 23:22):

So how does the relationship between the two work? :O

view this post on Zulip Morgan Rogers (he/him) (Apr 03 2020 at 23:23):

The category of right actions of a monoid on sets is the same as the category of presheaves on the monoid viewed as a category :tada:

view this post on Zulip Fabrizio Genovese (Apr 03 2020 at 23:23):

Oh!

view this post on Zulip Fabrizio Genovese (Apr 03 2020 at 23:23):

Is this the same thing that happens with Gsets being toposes?

view this post on Zulip Morgan Rogers (he/him) (Apr 03 2020 at 23:24):

Indeed! Except that it turns out that even more topos theoretic properties are relevant when you don't restrict yourself to groups

view this post on Zulip Morgan Rogers (he/him) (Apr 03 2020 at 23:27):

eg PSh(M) is local if and only if M has a right absorbing element (r such that rm = r for all m in M) :grinning_face_with_smiling_eyes:

view this post on Zulip Matteo Capucci (he/him) (Apr 04 2020 at 08:30):

Morgan Rogers said:

The current focus of my research in topos theory is to use toposes to understand monoids and vice versa. So I want to know what monoids you use or encounter in your research, monoids you want to understand better, and which are your favourites for whatever reason!

Hey Morgan, are you the guy we gave that talk at TICT2020 about the topos of M-sets?

view this post on Zulip Matteo Capucci (he/him) (Apr 04 2020 at 08:30):

(I liked it! Very interesting)

view this post on Zulip Morgan Rogers (he/him) (Apr 04 2020 at 09:43):

Indeed, that was me! I've been investigating topological monoids too

view this post on Zulip Esa Pulkkinen (Jul 07 2020 at 15:45):

That's interesting. Because I was implementing "Reversible graphs" from "Lawvere, Rosebrugh: Sets for Mathematics", which turn out to be right actions of a (non-trivial) four-element monoid on the two-element set. (P.S. my impl of reversible graphs is available here: https://esapulkkinen.github.io/cifl-math-library/).
I was actually surprised when I realized I didn't get the normal graph representation with two distinct sets for edges and vertices from that, because the edges and vertices are more tightly bound, so had to combine set of vertices with set of edges, which was strange. Instead I get operation "isVertex" to ask if an element of a set is a vertex and needed to construct filtering based on the corresponding fibers.. But could be I'm misunderstanding some fine point.

view this post on Zulip Jens Hemelaer (Jul 08 2020 at 11:48):

There are two different representations of reversible graphs from the point of view of topos theory. The reason is that different categories can have the same topos of presheaves on them.

For example, for the four element monoid that you implemented, the presheaves on this monoid can be identified with reversible graphs.
On the other hand, in the book "Sets for Mathematics" that you mention, there is also this category:
Screenshot-2020-07-08-at-13.32.31.png

(Note that not every arrow is drawn, there should be four endomorphisms of XX.)

Presheaves on this category can also be identified with reversible graphs. Here the identification is more obvious. The set associated to X0X_0 are the vertices, and the set associated to XX are the edges.

For each category, there is a "maximal" category such that presheaves on it are equivalent to presheaves on the original category: the Cauchy completion.

For monoids, the Cauchy completion is relatively easy to calculate. The objects are the idempotents of the monoid, and the morphisms ede \to d are the elements fMf \in M such that fe=f=dffe = f = df. This description appears in @[Mod] Morgan Rogers 's paper "Toposes of Discrete Monoid Actions".

view this post on Zulip Esa Pulkkinen (Jul 08 2020 at 13:59):

What I thought I should get is (in Haskell) this:

data Graph m a = Graph {
elements :: !(Set a),
action_endomorphism :: m -> Endo a }

Then using the monoid with four elements for "m", the graph can compute four operations on each element of the set (which I call "id", "source", "target", "inverse", which would be translations of the monoid endomorphisms under the presheave to the set). (some confusion edited out). I was not aware that the Cauchy completion procedure was intended there.

Ok I understood now that starting either from the monoid, or from the category produced by Cauchy completion of the monoid I get different results with respect to what sets exist and would be able to separate the vertices. But in either case the result would match the reversible graphs, but in practical implementation I need to choose if I want the vertices separately or in the same set than the edges. So they are both possible and both represent the reversible graphs - in practice, the vertices and edges both need some identification (e.g. names of elements of the sets) and if I want such identification to be similar for edges and vertices, then I would directly use the monoid in the presheave like in my implementation. And if that identification should be independent for those, then I should first split the vertices from the edges using the cauchy completion, then map the whole category with the presheave.

view this post on Zulip Jens Hemelaer (Jul 08 2020 at 20:05):

I don't understand enough Haskell for your code example above, but I agree that the two different ways of looking at it give two different Haskell implementations.