如何显示不存在具有依赖类型的系统中的类型(即,公式不可证明)?


15

对于没有依赖类型的系统,例如Hindley-Milner类型系统,这些类型对应于直觉逻辑的公式。在那里,我们知道它的模型是Heyting代数,特别是为了证明一个公式,我们可以限制为一个Heyting代数,其中每个公式都由一个开放子集表示。R

例如,如果我们想表明,没有人居住,我们构建了一个映射φ从公式的子集开放ř通过定义: φ α α.α(α)ϕR 然后 ϕ α

ϕ(α)=(,0)
这表明原始公式无法得到证明,因为我们有一个模型,该模型不成立,或者等效地(根据Curry-Howard同构),无法使用该类型。
ϕ(α)=int([0,))=(0,)ϕ(α(α))=(,0)(0,)=R0.

另一种可能性是使用Kriepke框架


对于依赖类型的系统,是否有任何类似的方法?像Heyting代数或Kripke框架的一般化?

注意:我不是在要求决策程序,我知道不可能有任何程序。我只是在寻求一种可以证明公式不可证明的机制-说服某人它不可证明。

Answers:


13

公式不可证明基本上可以通过两种方式完成。幸运的是,我们也许可以在类型理论中证明该公式暗含了一个已知的不可证明的公式。另一种方法是找到一个公式无效的模型,这可能很难。例如,花了很长时间才找到依赖类型理论的类群模型,这是第一个使身份证明的唯一性无效的模型

问题“什么是依存类型理论模型?” 有一个比较复杂的答案。如果忽略替换的某些属性,则模型是局部笛卡尔封闭类别,这可能是最简单的答案。如果需要“真实”模型,则有多种选择,请参见nLab页面上有关依赖类型理论的分类模型。无论如何,答案总是有点复杂,因为从属类型理论是一个相当复杂的形式系统。

如果我只建议发表一篇有关该主题的文章,那么我可能会推荐罗伯特·西利(Robert Seely)的原始论文“局部笛卡尔封闭类别和类型理论”。如果我要提出另一个建议,那可能就是解释Seely论文中需要纠正的内容,例如Martin Hoffman的“关于局部笛卡尔封闭类别中类型理论的解释”

该领域最近的一项重要进展是认识到同伦理论模型也是依赖类型理论的模型,请参见homotopytypetheory.org参考。这提供了很多可能性,但是现在必须学习同伦理论来掌握模型。


2
这个答案很不错,尽管它忽略了可能最简单的证明类型不被居住的方法:归纳形式!特别是,很容易证明通过这种归纳法不能在构造微积分中居住被排除的中间物。当然,您还需要证明每个术语都可以放入相同类型的正常形式中,并且确实涉及模型构造……
cody 2012年

@cody:很好,普通表格可能非常有用。
安德烈·鲍尔

@cody:“然后您需要证明每个术语都可以放入相同类型的普通形式中”:不是“良好”类型系统的元理论的标准部分(只要您不这样做)有公理),还是“好”逻辑(在这种情况下,就是消除淘汰)?这样您就可以重用现有的证明,对吗?
Blaisorblade 2014年

@Blaisorblade:当然,您只需要证明一次消除切割即可。可能要指出的是,在正常形式上使用归纳法而不是模型构造是一种乞求问题的方式:您已经在构建一个模型,以表明每个术语都可以放入正常形式。从某种意义上说,您是在“规范形式模型”中工作,而不是严格执行语法工作。
科迪

我明白了-我在考虑“证明工作”,而我想您正在思考如何实施整个证明。但是,您再次使我提出疑问,在给定诸如术语模型之类的结构的情况下,句法和语义方法之间的区别。所以我问了一个单独的问题:cstheory.stackexchange.com/q/21534/989
Blaisorblade 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.