最小定点,最大定点

时间:2018-08-04 07:08:14

标签: haskell

在诸如Haskell之类的惰性非全部语言中,最小定点与最大定点如何重合。完整的部分订单的连续性与这有什么关系?

1 个答案:

答案 0 :(得分:5)

CPO(我们将类型解释为类型)中,任何递增的链都有一个最小的上限。

这是一个示例,该示例应传达直觉,为什么在CPO领域中,最小固定点和最大固定点重合。考虑以下函子,为简洁起见,滥用了列表符号:

data ListF a x = [] | a : x

其最大的固定点是Haskell列表的类型(可能是无限的,可能是部分的)。最低固定点呢?其中必须包含以下元素(省略{Fix构造函数):

0 : _|_
0 : 1 : _|_
0 : 1 : 2 : _|_
...

并且它们形成一条递增链,因此必须有一个最小上限,该上限必须是自然整数0 : 1 : 2 : ...的无限列表。因此,ListF的最小不动点包含无限个列表,因此与最大不动点重合。


正如评论中指出的那样,最大的固定点由类型[]给出的主张可能需要澄清。例如,由大型序号索引的列表的某些CPO“ BigList”不会带来更大的固定点吗?

首先可以证明[]满足最终ListF-coalgebra的定义。然后,最终的凝聚态的一个特性是它们在同构性之前都是唯一的。因此,由较大序数索引的列表将导致非同构CPO,因此不能成为最终的合并代数。

我可以停在那里,但是等一下,BigList仍然不是ListF的更大固定点吗?我的结论是将问题归结为术语错误,在形式上我们应该只讨论“最终定理”,而不是“最大定点”。

根据如何在CPO中定义函子的“不动点”以及CPO之间的(预)顺序的概念,您可能会发现BigListListF的不动点,它大于[],当您到达“最大固定点”时会遇到集合理论悖论,并且最终以正式化“最大固定点”的方式对Haskell从业者没有任何价值。因为您实际上想要的是最终结对子的优良特性。

(我想知道一种直接的方法来定义不包含BigList的“固定点”。)

因此,“最大固定点”一词也可能是“最终结代”的同义词。有些直觉会延续下去(“固定点”通常可以通过迭代来实现),有些则不能(在集合论的意义上不是“最大”)。