is the Category whose objects are preorders and whose morphisms are monotone maps. Identities are monotone and composites of monotone maps are monotone (Proposition 1.70, 7S Exercise 1.71), so this is a category.
Sources: 7 Sketches Proposition 1.70, §3.2.4; Kittenlab Lecture 5; CTfS Exercise 4.1.1.6, Example 4.1.1.7, Proposition 4.1.2.6, Exercises 4.1.2.9–4.1.2.12, Example 5.1.3.3
Proposition (Kittenlab). is a full Subcategory of — with the caveat that “preorder as a set with a relation” is only isomorphic to a thin category, not literally one; category theory ignores this distinction, since a subcategory is really any category with an injective functor into .
- has products (Product Preorder) and the Opposite Preorder gives an involution.
- Isomorphisms in are isomorphisms of preorders.
- is equivalent to the category of -categories and -functors (7 Sketches §2.3.2).
- Choosing the morphisms is part of the definition (CTfS Example 4.1.1.7). For the preorders that have all binary joins there are (at least) three reasonable categories: no morphisms but identities; all monotone maps (the full subcategory of ); or only the join-preserving maps. The category theorist’s instinct is the last one: “if we are so interested in joins, perhaps we want joins to be preserved”.
- Preorders vs. graphs (CTfS Proposition 4.1.2.6, Exercises 4.1.2.9–4.1.2.12): drawing an arrow for each is a functor ; reachability (” iff there is a path”) is a functor with , and (Reflexive Transitive Closure). As a left adjoint preserves coproducts but not products: for the product graph has no path , although in (CTfS Example 5.1.3.3).
- Related: / (partial orders) and (total orders); the forgetful functor has left adjoint Discrete Preorder and right adjoint Codiscrete Preorder.
#check CategoryTheory.Preord -- bundled preorders, morphisms = OrderHom
#check CategoryTheory.PartOrd
#check CategoryTheory.Lin
#check CategoryTheory.preordToCat -- Preord ⥤ Cat (fully faithful)-- objects: types with a Preorder instance; morphisms: Monotone a b
instance Category Monotone where -- from Control.Category
id = Monotone id
Monotone g . Monotone f = Monotone (g . f)