在范畴论中,两个空集合可以彼此同构吗?



我是Haskell初学者,我想做一个函数来确定两个列表之间是否可以有同构。 我认为如果它们的长度相同> 0,答案是肯定的。

但是空集呢? 空集之间可以有同构吗?

谢谢。

在 Haskell 中,我们通常将类型视为类别中的对象,而不是单个值。询问列表(值)是否与其他列表同构是没有意义的,除非我们定义一个"自定义"类别,其中列表是对象。在后一种情况下,答案取决于我们如何定义类别。

无论如何,在集合范畴中,给定任何集合A,正好有一个函数(态射)从空集合{}f : {} -> AA。这是具有空域的唯一函数,恰好与空集重合。为了帮助理解这一点,请记住,函数f : X -> Y是一组对

f = {(x0,y0),(x1,y1),....}
with x0,x1,... in X, and y0,y1,... in Y

这样

for any x in X there is a unique y in Y satisfying (x,y) in f

X = {}时,我们不能选择x0,x1,... in X,所以唯一的选择是有f = {},即"空对集"。该f是一个函数,因为条件简化为

for any x in {} .......

这是一个空洞的真理,因为对空集的普遍量化总是正确的。

因此,对于任何A,只有一个函数f : {} -> A。即使A = {}也是如此,在这种情况下f : {} -> {}也是一个同构。事实上,我们有f = id(因为没有其他函数!)和f . f = f = id(因为没有其他函数!),所以f是它自己的逆函数。

当然,这取决于类别!

在标准类别 SET 中,对象是集合,箭头 A -> B 是将 B 元素与 A 的每个元素相关联的函数,表示空集的任何两个对象之间肯定存在同构 - 事实上,它们是同一个对象!

人们还可以想象一个类别,其中集合用额外的代数结构丰富(因此有一个从这个类别到 SET 的可感知健忘函子),其中附加代数结构允许区分两个对象,尽管健忘函子将它们都映射到空集,在这种情况下,它们之间可能没有同构。

相关内容

  • 没有找到相关文章

最新更新