The primary difficulty in learning category theory is the need for lots of good examples; more than anything else in math, category theory is tremendously abstract, and without building intuition from examples, it’s just a bunch of arrows and dots. Besides familiar examples, like those from set theory, algebra and topology, it’s often helpful to look at minimal examples—examples which show the categorical structure, with as little “residual” structure as possible.
A wonderful source of minimal examples is order theory—since there is at most one arrow between any two objects in a preorder category, all diagrams commute in a preorder. As a result, we get to see what happens to categories (and functors) without worrying whether the morphisms in question behave nicely. But I’m getting ahead of myself—let’s look at some basic order theory from the classical perspective, and then see how it translates to category theory.
A preorder on a set is a reflexive, transitive relation. That is, for all , we have and for all such that and , we have . Observe that a preorder is not necessarily anti-symmetric: we can have and without having . Since is clearly an equivalence relation, we can quotient a pre-order to arrive at a relation which is additionally anti-symmetric: if and , then .
A (weak) partial order on a set is a reflexive, transitive, anti-symmetric relation (and a set with a partial order is called a poset). Partial orders show up basically everywhere, and I assume if you’ve read this far you already know what they are, so I won’t bore you with examples, but of course many of the most important examples are collections of sets, where the ordering relation is . Importantly, in many of these typical examples, we will take the closure of some element with respect to some ambient structure–e.g. the closure of a subspace, or the generated subalgebra (which is “closed” under the algebraic operations in question). These closure operators all have three important properties:
- They are monotone: if then .
They are extensive: .
They are idempotent: We always have . In English, the closure of a closed set is closed.
Abstracting to a general partial order, we have that a closure operator on a poset is a function which is monotone, extensive, and idempotent; we call closed when (equivalently, when for some ). If the underlying poset is for some set , we usually call it a closure operator on . The most common (explicit) examples of closure operators come from algebra: given, say, a group (in fact, any algebraic structure will do) , the subsets of form a poset under . It’s easy to see that the operation taking a subset to its generated subalgebra is a closure operator.
Let’s focus in on this group example: the subgroup generated by is the set of all elements , for some natural number , where each is either in , or is for some . In particular, each element of can be represented by some finite number of elements of . That is, each is in some where is a finite subset of . In other words, we have for all
A closure operator on a set (i.e., on the powerset lattice) is called finitary or algebraic when this happens—that is, when (*) is satisfied by all subsets of . It might be interesting to generalize this to an arbitrary poset, but I won’t do that here.
Ok. Time to look at all this from a categorical perspective. The first point is that from any pre-order we can define a category: We take as objects the elements of , and when , we have a unique arrow . The arrow is usually left unnamed, since there’s at most one for any pair of objects. Reflexivity ensures the existence of (as the unique arrow ), while transitivity ensures composites (where is the unique arrow guaranteed by .) Categories with at most one arrow between any pair of objects are called, naturally enough, poset categories.
Fact: Any diagram which we can draw in a poset commutes, since any parallel arrows are equal.
A category is skeletal when isomorphic objects are equal. A skeletal precategory is a poset—That is, if is a preorder, and whenever there are arrows and , then . (Exercise: anti-parallel arrows are mutually inverse in any pre-order.)
Finally, some motivation for this whole post: one of the takeaways from a first course in (classical) universal algebra is that algebraic structures and closure operators give the same information—every (algebraic) closure operator (on a powerset lattice) gives rise to an algebraic structure, and vice versa. It’s well-known that monads capture the notion of algebra in a categorical way, and finitary monads correspond precisely to algebraic theories. So, there should be some close relationship between closure operators and monads. Besides the obvious one via algebraic theories, there’s another one:
A monad on a poset is precisely a closure operator. This result is pretty fundamental, and it shows up in just about every category theory book, but somehow I missed it until pretty recently. (I’m new at this!)
A monad on a category is a functor together with natural transformations and satisfying certain diagrams—since we’ll be dealing only with posets, we don’t care what these diagrams are.
Let’s see how this plays out on a poset :
- is a functor: we must have implies . That is, is monotone
- There is a natural transformation . Such a natural transformation is given by an arrow for all . That is, for all we have . That is, is extensive.
- There is a natural transformation . As in the last point, this becomes for all we have . That is, is idempotent.
So, there we have it: a monad is precisely a closure operator. But we’re not done yet: an algebra for a monad on is an object together with an arrow satisfying diagrams (that we again don’t care about). That is, in a poset, an algebra for a monad is an element with —a closed element!
My original plan was to finish this off with some discussion of finitary monads, but I think what’s here is enough for now. Perhaps another time I’ll get back to it.