为什么 Leans `Propositions 得到特殊对待?
Why do Leans `Prop`ositions get special treatment?
自从我开始阅读交互式精益教程以来,一个问题一直困扰着我:Type
中单独的 Prop
层次结构的目的是什么?
据我现在的理解,我们有以下宇宙层次结构:
Type (n+1)
| \
| Sort (n+1)
| |
Type n | (?)
| \ |
... Sort n
| |
Type 0 ... (?)
| \ |
nat Prop
| |
0 p ∧ q
|
⟨hp, hq⟩
- 标有
?
的边缘是实际存在的还是我只是编造的(可能)?
- 从 swift 对 Agda 和 Idris 的调查来看,他们似乎没有区分
Sort n
和 Type n
。为什么精益要区分它们?
Prop
的奇怪之处在于它一方面像归纳类型(例如,它是封闭的,这意味着 p ∧ nat
没有意义),但在另一方面却像一种归纳类型一样使用另一方面(例如,通过为 p
构造证明 value 来显示要居住的 type p : Prop
)。我怀疑这与区别有关,但我无法表达清楚。有一些基础论文可以阅读吗?
nat-indexed universe 只有一个层次结构 Sort u
。来自 Chapter 3 of Theorem Proving in Lean:
In fact, the type Prop
is syntactic sugar for Sort 0
, the very bottom of the type hierarchy described in the last chapter. Moreover, Type u
is also just syntactic sugar for Sort (u+1)
.
在 Extended Calculus of Constructions 中引入了拥有一个谓语底层宇宙 Prop
和一个谓语层次结构 Type u
在它之上的想法。精益将 Sort
作为一个单一的广义层次结构引入,这样定义就可以覆盖所有使用 Sort u
的宇宙,而不需要为 Prop
和 Type u
.
单独定义
相比之下,Idris 和 Agda 中的底层宇宙并没有做任何特别的事情,因此它们对整个层次结构使用一个名称。
自从我开始阅读交互式精益教程以来,一个问题一直困扰着我:Type
中单独的 Prop
层次结构的目的是什么?
据我现在的理解,我们有以下宇宙层次结构:
Type (n+1)
| \
| Sort (n+1)
| |
Type n | (?)
| \ |
... Sort n
| |
Type 0 ... (?)
| \ |
nat Prop
| |
0 p ∧ q
|
⟨hp, hq⟩
- 标有
?
的边缘是实际存在的还是我只是编造的(可能)? - 从 swift 对 Agda 和 Idris 的调查来看,他们似乎没有区分
Sort n
和Type n
。为什么精益要区分它们?
Prop
的奇怪之处在于它一方面像归纳类型(例如,它是封闭的,这意味着 p ∧ nat
没有意义),但在另一方面却像一种归纳类型一样使用另一方面(例如,通过为 p
构造证明 value 来显示要居住的 type p : Prop
)。我怀疑这与区别有关,但我无法表达清楚。有一些基础论文可以阅读吗?
nat-indexed universe 只有一个层次结构 Sort u
。来自 Chapter 3 of Theorem Proving in Lean:
In fact, the type
Prop
is syntactic sugar forSort 0
, the very bottom of the type hierarchy described in the last chapter. Moreover,Type u
is also just syntactic sugar forSort (u+1)
.
在 Extended Calculus of Constructions 中引入了拥有一个谓语底层宇宙 Prop
和一个谓语层次结构 Type u
在它之上的想法。精益将 Sort
作为一个单一的广义层次结构引入,这样定义就可以覆盖所有使用 Sort u
的宇宙,而不需要为 Prop
和 Type u
.
相比之下,Idris 和 Agda 中的底层宇宙并没有做任何特别的事情,因此它们对整个层次结构使用一个名称。