Bartosz Milewski, in the section Terminal Object of Chapter 5 underlines the following
Notice that in this example the uniqueness condition is crucial, because there are other sets (actually, all of them, except for the empty set) that have incoming morphisms from every set. For instance, there is a Boolean-valued function (a predicate) defined for every type:
yes :: a -> Bool yes _ = True
But
Bool
is not a terminal object. There is at least one moreBool
-valued function from every type:no :: a -> Bool no _ = False
Insisting on uniqueness gives us just the right precision to narrow down the definition of the terminal object to just one type.
And all this come after the section Initial Object, where a similar observation is not made.
Therefore I have the feeling that I might be missing a key difference between initial and terminal objects.
From my understanding the uniqueness is crucial also for initial objects, because I could observe that there are other sets (actually, all of them) that have an outgoing morphisms to every set (except the empty set), but there would be in general more than one such a morphism (except for the one going to ()
.
So my question is: is there any difference between initial and terminal objects, beside the direction of the arrows that connect them to the other objects, that Bartosz is probably trying to underline with the quoted text?
I know that question like What does the author mean? can be a bit ill posed, as we are not in his mind, but I guess who knows category theory can throw at least some plausible hypothesis.
A terminal object in a category C is an object 1 of C satisfying the following universal property: for every object x of C, there exists a unique morphism !:x→1. The terminal object of any category, if it exists, is unique up to unique isomorphism. If the terminal object is also initial, it is called a zero object.
Terminals come into three major categories: General cargo. Unitized cargo that can be carried in batches and handled by three specialized terminal types; break-bulk terminals, neo bulk terminals (e.g. car terminals), and container terminals.
In the category of sets, the empty set is initial. It takes a little effort to wrap your head around the idea of a unique function defined on the empty set. It's the function that takes nothing to nothing! It's unique, because a function can't map nothing to something.
that have an outgoing morphisms to every set (except the empty set)
That's the key part. The requirement is that there be outgoing morphisms to every set full stop. The existance of one set where this breaks down is enough to undermine it. That's why, indeed, the initial object in Set
is already well-defined without even requiring uniqueness: the empty set is the only set that has an outgoing arrow to the empty set.
Meanwhile, every non-empty set has incoming arrows from truely every set including the empty one, but only for one-element sets is this arrow unique.
Here's the direct quote from the book: "The initial object is the object that has one and only one morphism going to any object in the category." Notice the only one part.
BTW, I was also careful not to say "any other object," because there also is a unique morphism from the initial object to itself: it's always the identity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With