阅读Bartosz'优秀的Category theory for Programmers,我陷入了第二个练习,这个练习处理的是posets中的产品。鉴于一个明信片,
b e
↗ ⤭ ↘
a → c f → h
↘ ⤭ ↗
d g
如何在分类意义上定义产品?什么是两个对象的产品分类?那副产品呢?
答案 0 :(得分:18)
让我们首先看一下产品的定义:
对象
a
和b
的产品是配置有态射c
和p :: c -> a
的对象q :: c -> b
,对于任何其他对象{{} 1}}(使用态射c'
和p' :: c' -> a
),存在一个态射q' :: c' -> b
,m :: c' -> c
和p' = p . m
。
请记住,poset中的态射基本上描述的是"小于或等于"。
现在,两个对象q' = q . m
和c
之间的产品a
必须是小于或等于b
和a
的对象。例如,我们从您的图表中选择b
为a
和e
为b
:
g
琐碎的是,第一个想到始终小于或等于任何其他对象的对象是最小的对象,在本例中为 b e -- this one is a
↗ ⤭ ↘
a → c f → h
↘ ⤭ ↗
d g -- this one is b
。
现在a
是a
和e
产品的有效候选人吗?让我们检查一下产品的定义:
g
到a
是否存在态射?是的,这是存在的,可以写成e
(读作:"首先是箭头从a到c,然后是箭头从c到e")。
是否存在从pₐ = ce . ac
到a
的过敏症?是的,这也存在,可以写成g
。
到目前为止,唯一的问题是,这是否是最好的'候选人在某种意义上是否存在其他对象,以便我们可以在qₐ = cg . ac
和另一个候选人之间构建一个独特的同构?
查看图表,我们可以看到对象a
也符合c
和p = ce
所需的条件。
剩下要做的就是根据上面的定义对这两个对象进行排名。我们看到存在从q = cg
到a
的态射。这意味着c
必须是最佳候选者,因为我们现在可以定义态射c
,使m = ac
和pₐ = p . m = ce . ac
。
因此,poset中两个对象的乘积实际上是最大的对象,它既小于两者(也称为最大下界)。值得注意的是,在总排序中,这对应于函数qₐ = q . m = cg . ac
,因为每个对象必须与任何其他对象相关(Wolfram称之为trichotomy law)。
与产品定义类似,副产品对应于大于或等于min(a, b)
和a
的最小对象。在总排序中,这对应于两个对象的最大值。你可以自己解决这个问题。