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.
When we learn about category theory, we typically view it as a structuralist way of approaching math. For instance, in Set, the elements of a set are abstract points and so two sets with the same number of elements, regardless of what those elements represent, are isomorphic (essentially the same). This contrasts with material set theory and material sets, in which membership is well defined and the elements of sets are sets themselves.
That said, I recently thought of a way of potentially doing material set theory in category theory! First, consider a set is actually a kind of category- more precisely, a set can be viewed as a discrete category where the only morphisms are the identities on the objects, which represent the elements of that set. Now consider a functor from a discrete category to a category C: the functor represents an assignment of an object in C to each element of the discrete category. In essence, it is a relabeling of the abstract points of the set with more "concrete" structures, those being the objects in C, and so we can view the functor itself as a set of objects of C. If we let C = Set, then we get a functor assigning each element/object of our set/discrete category to a set in Set, and thus we end up with a "set of sets". We can then take a presheaf category [Discrete, Set] to be a "category of sets of sets". Of course, we can do this process over and over again: [Discrete, [Discrete, Set]] is a category of sets of sets of sets, and so on. The morphisms in such categories of material sets are not functions, but rather seem to be hierarchical maps between all layers of these material sets. Still, I believe one can define membership of a set S into a set of sets T internally to a category of sets of sets by considering S as [S], a set of sets with one element that is S (so for instance we would make the set [A, B, C] into the set of sets [[A, B, C]]) and then identify an injection (monomorphism?) of [S] into T. In addition, there's probably some functor from these categories back to Set that "forgets" the set structure of the elements of the top level set and returns them to being abstract points again.
I'm just curious about whether I've stumbled into anything important or relevant. Has this construction been done before, what are its uses and limitations, and what are some of its properties? Also, how do size issues factor in (since after all we are constructing sets of sets, and Russell's paradox deals with a particular set of sets, so it's probably bound to come into play in some fashion!)
What does "Discrete" represent in your description? Is it a single fixed discrete category? Or is it a category of discrete categories?
I will point out that a functor from a set S, considered as a discrete category, to Set, gives a function whose codomain is S: the fibre over a element of S is the value of the functor at that element.
I suspect that the second stage of what you have described gives another such map, and together these define a certain tree structure (of low height: branches of length no more than 2). The idea that material sets can be considered as certain tree structures goes back to when people in the 1970s were thinking about how to model the class of pure sets using a topos.
@Morgan Rogers (he/him) It would be a single fixed discrete category. I wasn't sure how one would be able to define a category of all sets of sets, only categories of sets of sets with some number of elements (which would be given by the number of objects of the discrete category). Maybe there's some way of defining it through a Grothendieck construction, since those are good at combining categories together in coherent ways. Perhaps it could be expressed as the Grothendieck construction of a pseudofunctor from Set to Cat that sends a set Disc to the category [Disc, Set]? However I'm sure there's some size issue involved there, so let me know if this even makes any sense to do!
@David Michael Roberts That's interesting! Is this interpretation of a functor from a discrete category complementary or contradictory to my interpretation of it being a set of sets? Also, I've never heard of sets being considered as tree structures, would you have any more info on this?
https://ncatlab.org/nlab/show/pure+set#membership_trees
This goes back to Cole (near impossible to find), Mitchell (https://doi.org/10.1016/0022-4049(72)90006-0) and Osius (https://doi.org/10.1016/0022-4049(74)90032-2). You can see a treatment in @Mike Shulman 's https://arxiv.org/abs/1808.05204, section 8.
If you have a function p: X -> Y between sets, then you can consider Y to "be" the multiset of the sets {X_y}. The conditions people place on the map p to correspond to an actual set (and not a multiset) more-or-less tell you that the fibres X_y = p^{-1}(y) are distinct, in some appropriate way. If you subsequently have a functor X --> Set, then you get a further function q: W -> X, and then the fibres W_x of this are sets. And then you can consider {W_x | x \in X_y} as being the set of sets corresponding to X_y (again, really a multiset, but it can have conditions to pin it down to a set), and then you have encoded a little bit of the -tree attached to Y, namely each y labels a set X_y, and then each x \in X_y labels a set W_x.
One needs to do a bit of work to connect this to both what you are describing (but I think one might hit the limits of what is workable at some point) and the more standard viewpoint as described in Mike's article. But I hope the idea is reasonable.
John Onstead said:
Also, I've never heard of sets being considered as tree structures, would you have any more info on this?
The idea is is that in Zermelo-Fraenkel set theory and other forms of "material" set theory, a set is determined by its members, which are also sets, and thus determined by their members, and so on... so we get a rooted tree where the root is , its children are its elements, their children are their elements, and so on, with the leaves all being copies of the empty set. In material set theory this is what a set is.
This all is very interesting, I've had a bit of a look so far and will be examining this further. The way of depicting material sets in graph form is a very natural and intuitive way of representing them, and it seems from the papers (from what I saw so far, and from my limited understanding) that it opens up connections when it comes to discussing internal logic- that is, relating the internal structural set theories of certain topoi to corresponding material formulations. Thus it makes more sense why this would be the "standard viewpoint" as opposed to the construction I outlined.
I thought a bit about the function vs graph/tree way of representing sets. The connection might be related to some form of "graph" of a function- not in the usual sense (the pullback) but rather a directed graph. For a function A -> B one can imagine a graph whose vertices are the elements of both A and B and the edges have an element in A as their source and an element in B as their target if the function maps that element of A to that element of B. In a category theory way, it is the graph s,t: A -> A + B such that s is the inclusion of A into A + B and t is the composition of the function A -> B we are "graphing" with the inclusion of B into A + B. In this case, one can imagine any set A as a graph by getting the "graph" of the constant function A -> *. The vertices that are elements of A represent precisely the elements of A, and the single vertex for * represents the set A itself and so the "root" of the tree, so the arrows from the elements of A to * in this graph represent the inclusions. One can add another layer to the tree by considering a function into A from another set, in which case one can draw the three-way "graph" (of course, where this function follows the appropriate distinction condition as mentioned) and then continue for arbitrarily long chains of functions. I'm hoping this makes sense and that I did indeed properly understand everything!