我不是专家,但是我将通过一个示例分享到目前为止我所了解的内容。
让我们考虑使用CoC的布尔类型,使用其标准编码:
我们可能期望能够证明
实际上,这很快就从我们在CiC中具有依赖消除/归纳原理
B=Πτ:∗τ→τ→τtt=λτ:∗,x:τ,y:τ. xff=λτ:∗,x:τ,y:τ. y
Πb:Bb=tt∨b=ff(∗)
Bind:ΠP:B→∗P(tt)→P(ff)→Πb:BP(b)
但是,我们不能真正期望(*)在所有CoC模型中都适用!直观地,的值应该大致是函数的函数族,
为每种类型分配解释中的值。但这不会强制为的值之间的一个。例如,我们可以(非正式地)有
B{fτ}τττ→τ→τfτtt,ff
fN(n)(m)=n+m
为了确保的值是唯一可能的值,我们需要将自己限于参数模型。确实(我认为)可以从与多型相关的自由定理证明性质。tt,ff(∗)B
但是,据我了解,CoC并不排除参数不成立的临时模型。在某些情况下,只是错误的。根据健全性,在存在对等模型的情况下,我们得出结论在CoC中不存在。因此,CoC中也没有术语。(∗)(∗)Bind