类别中初始对象和终端对象之间的区别

Difference between initial and terminal objects in a category

Bartosz Milewski,在 Chapter 5Terminal Object 部分强调以下内容

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 more Bool-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.

所有这些都出现在 部分 Initial Object 之后,其中类似的观察是制作。

因此我觉得我可能遗漏了初始对象和终端对象之间的一个关键区别。

根据我的理解,唯一性对于初始对象也很重要,因为我可以观察到还有其他集合(实际上是所有集合)对每个集合(除了空集)都有外向态射,但是有通常会有多个这样的态射(除了 ().

所以我的问题是:除了将它们连接到其他对象的箭头方向之外,初始对象和最终对象之间是否有任何区别,Bartosz 可能试图用引用的文本下划线?

我知道像 作者的意思是什么? 这样的问题可能有点不适,因为我们不在他的脑海中,但我想谁知道范畴论可以抛出至少有一些似是而非的假设。

that have an outgoing morphisms to every set (except the empty set)

这是关键部分。要求是每个集合 句号 都有输出态射。一组出现故障的情况足以破坏它。这就是为什么 Set 中的初始对象实际上已经是 well-defined 甚至不需要唯一性的原因:空集是 唯一的 集合,它具有指向空集。

与此同时,每个 non-empty 集都有真正来自每个集的传入箭头,包括空集,但仅对于 one-element 个集,此箭头是唯一的。

这是书中的直接引述:“初始对象是具有一个且只有一个态射的对象,该态射指向类别中的任何对象。”请注意 只有一个 部分。

顺便说一句,我也很小心不要说“任何 other 对象”,因为从初始对象到它自身也有一个唯一的态射:它总是恒等式。