在阅读Bartosz Mileski的卓越文章《程序员的范畴论》时,我卡在了第二个练习上,该练习涉及偏序集中的积。给定一个偏序集,
b e
↗ ⤭ ↘
a → c f → h
↘ ⤭ ↗
d g
如何以范畴论的方式定义一个产品?两个对象的积是什么?余积呢?
在阅读Bartosz Mileski的卓越文章《程序员的范畴论》时,我卡在了第二个练习上,该练习涉及偏序集中的积。给定一个偏序集,
b e
↗ ⤭ ↘
a → c f → h
↘ ⤭ ↗
d g
如何以范畴论的方式定义一个产品?两个对象的积是什么?余积呢?
b e -- this one is a
↗ ⤭ ↘
a → c f → h
↘ ⤭ ↗
d g -- this one is b
从简单来说,首先想到的一个对象,它总是小于或等于其他任何对象的,就是最小的对象,在这种情况下是a
。
现在,a
是否是e
和g
的乘积的有效候选对象?让我们来检查一下乘积的定义:
从a
到e
是否存在一个态射?是的,存在,并且可以写成pₐ = ce . ac
(读作:“首先是从a到c的箭头,然后是从c到e的箭头”)。
从a
到g
是否存在一个态射?是的,也存在,并且可以写成qₐ = cg . ac
。
到目前为止一切顺利,唯一剩下的问题是,是否这是“最佳”候选对象,即是否不存在其他对象,我们可以在a
和另一个候选对象之间构建唯一的同构?
从图中可以看出,对象c
也符合所需的条件,其中p = ce
和q = cg
。
a
到c
的态射。这意味着c
必须是最佳候选,因为我们现在可以定义一个态射m = ac
,使得pₐ = p . m = ce . ac
和qₐ = q . m = cg . ac
。min(a, b)
,因为每个对象都必须与任何其他对象相关(Wolfram称之为三分律)。
a
和b
的最小对象。在完全排序中,这对应于两个对象的最大值。你可以自己算出来。
eh
和gh
是从e
(或g
)到h
的映射。 - ThreeFx