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.
I'm very curious, in which way do monoids and toposes interact?
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
So how does the relationship between the two work? :O
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:
Oh!
Is this the same thing that happens with Gsets being toposes?
Indeed! Except that it turns out that even more topos theoretic properties are relevant when you don't restrict yourself to groups
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:
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?
(I liked it! Very interesting)
Indeed, that was me! I've been investigating topological monoids too
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.
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 .)
Presheaves on this category can also be identified with reversible graphs. Here the identification is more obvious. The set associated to are the vertices, and the set associated to 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 are the elements such that . This description appears in @[Mod] Morgan Rogers 's paper "Toposes of Discrete Monoid Actions".
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.
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.