definition theorem proof example
An object of a Category is terminal if for every object there exists a unique morphism . Since this holds for all objects, terminal objects have a universal property. DaoFP writes the terminal object and its arrows ; in Haskell it is () (Unit); in logic it is truth (“true no matter what your assumptions are”).
Sources: 7 Sketches Definition 3.79, Example 3.80, Proposition 3.84, Remark 3.85, Examples 3.93, 3.96, Exercises 3.81–3.83; DaoFP §1.2 (“Yin and Yang”), §1.3, Exercises 3.1.3–3.1.4, §9.5; Kittenlab Lecture 9 (dual: initial objects), 12 (); CTfS Exercise 2.5.3.5, Definition 4.5.3.2, Examples 4.5.3.3–4.5.3.13, Example 5.1.2.1
Examples
- In any singleton : the unique function sends everything to (Example 3.80). Elements of are arrows (Global Element): “the terminal object behaves like an indivisible point; we can use it to probe other objects” (DaoFP).
- In a Preorder, a terminal object is a top element with for all (7S Exercise 3.81) — the empty Meet.
- In , the one-object category (7S Exercise 3.82); in , the graph with one vertex and one loop; in the one-point preorder.
- More examples (CTfS §4.5.3): the trivial monoid in and the trivial group in (also initial); itself in the power set ; in the preorder of propositions; in (everything divides ); every object of an indiscrete category. The free monoid on as a one-object category has neither initial nor terminal object (CTfS Exercise 4.5.3.12). has a terminal object iff the functor has a right adjoint (CTfS Example 5.1.2.1).
- Not every category has one: the discrete two-object category (7S Exercise 3.83).
- In a cocomplete locally small category, a weakly terminal set (a family such that every has some arrow to some ) yields a terminal object as a colimit — the key to the Adjoint Functor Theorem (DaoFP §9.5).
Uniqueness (Proposition 3.84)
All terminal objects are isomorphic. Let be terminal; there are unique , . Then must equal the unique map ; similarly . Moreover the isomorphism is unique (“unique up to unique isomorphism”, Remark 3.85; DaoFP Exercise 3.1.3, DaoFP Exercise 3.1.4), which is why we say “the terminal object”, “the product”, “the limit” — “to a category theorist, this is very nearly the same as saying all terminal objects are equal”.
Role
A terminal object is the Limit of the empty Diagram (Example 3.93; the tuple formula of Finite Limits in Set gives ). Every Limit is a terminal object in a category of cones — “they’re all just terminal objects in different categories”. Dual: Initial Object. Terminal objects are the unit of products and, in a Cartesian Category, the monoidal unit; any arrow from is mono and any arrow to is epi (DaoFP Exercises 2.4.1, 2.5.1).
Docs: FinSets · Limits & colimits · Graphs — Kittenlab Lecture 9
using Catlab
T = terminal(FinSet{Int}); ob(T) # FinSet(1)
X = FinSet(4)
delete(T, X) # the unique function X → 1 (a ConstantFunction)
# in Graph: the terminal graph has one vertex and one loop
terminal(Graph) |> apex#check CategoryTheory.Limits.IsTerminal
#check CategoryTheory.Limits.HasTerminal
#check CategoryTheory.Limits.terminal.from -- the unique morphism X ⟶ ⊤_ C
#check CategoryTheory.Limits.IsTerminal.uniqueUpToIso
example : CategoryTheory.Limits.IsTerminal (PUnit : Type) := CategoryTheory.Limits.Types.isTerminalPunit-- DaoFP §1.2: the terminal type () and the unique arrow to it
unit :: a -> ()
unit _ = ()
-- elements of a are arrows () -> a