我已经完成了精益教程的前 3 章,并且已经完成了一些命题逻辑的证明。
现在我试着回过头来问自己一些愚蠢的问题。
我的理解是:
- 术语可以有类型:
constant A : Type
.A
是一个术语,Type
是 的类型A
。 - 术语可以变成类型:
constant a : A
. - 一个术语的类型可以取决于另一个术语的类型
constant B : A -> Type
:constant B' : Π (a : A), Type
但是这种理解显然是错误的,因为这段代码没有进行类型检查:
constant A : Type
constant a : A
constant B : A -> Type
constant B' : Π (a : A), Type
constant C : Π (b : B), Type
constant C' : Π (B : A), (Π (b : B), Type)
constant C'' : B -> Type
开头的所有行constant C
,即第 9、11 和 13 行都会抛出错误error: type expected at B
为什么?我怀疑并非所有术语都可以成为类型。我怀疑类型依赖于其他类型的术语不能成为 types。为什么?