我所知道的大多数类型理论都是谓语,我的意思是
Void : Prop
Void = (x : Prop) -> x
不能很好地类型的大多数定理证明,因为这PI类型属于同一宇宙中Prop
和它不是的情况下Prop : Prop
。这使它们成为谓语,而不允许像上面这样的命令性定义。但是,事实上,很多“黑板语言”(例如System F或CoC)都是必不可少的。实际上,这种隐含性对于定义语言中最初未包含的大多数构造至关重要。
我的问题是,鉴于它在定义逻辑结构方面的力量,为什么会希望放弃泛滥?我听过几个人的话说,难以控制会搞砸“计算”或“归纳法”,但我很难找到具体的解释。
forall P : Type, {P} + {~P}
,因为这+ impredicative一套意味着无关的证明(与nat
是不是证明无关)。例如参见coq.inria.fr/library/Coq.Logic.ClassicalUniqueChoice.html和coq.inria.fr/library/Coq.Logic.Berardi.html