MLTT中类型推断和类型检查的可判定性


9
  1. 在马丁- LOF的类型的直觉理论:表语部分证明了类型检查是可判定受到感分型摆在首位,通过证明用于封闭分型术语标准化定理。另一方面,我已经看到它写在多个地方(维基百科,Nördstrom等),(故意的)MLTT的类型检查是可以确定的。它们是否隐含地限制了可键入的术语?a:一个一个

  2. 如果我们不限于可输入的术语,那么关于内涵式MLTT中类型推断或类型检查的可判定性是否已知?例如,也许有一个决策过程可以识别无法键入的术语,例如通过规范化为与任何构造函数都不对应的形式,或者通过显示对于任何无法键入的术语都没有非周期性的减数顺序。

    我在文献中找不到很多东西。

Answers:


9

当然是决策问题

给定(预)任期 一个 有没有类型 一个 这样 一个一个 在MLTT中是可派生的?

有时写 一个  (并称为类型推断问题)是可以确定的,也就是说,是否一个键入是否正确或无法获得答案。确实,所有基于MLTT的证明检查器都实现了该决策算法的某些版本!

显然,非空上下文中的问题(Γ一个  )也是可以决定的,通常您需要解决后者才能解决前者。

这应该回答问题1和2的算法并没有涉及正火一个,这通常是个坏消息,因为无法确定无类型术语是否可以归一化。但是,类型检查算法的确涉及规范化类型,这些类型通过构造良好的类型本身来实现。

结果,对类型正确的术语进行规范化是确定类型推断问题的必要条件。

您可能需要查看Nordström,Petersson和Smith的介绍。


我不知道用于规范类型理论的类型推断算法的任何一般性描述,尽管Pollack 在Pure Type Systems的Typechecking中给出了相当不错的概述(尽管现有技术已得到改进)。


预先类型(术语指的是一种类型)怎么样?也可能需要澄清它们的状态。
安德烈·鲍尔

谢谢科迪,您是指由ALF和Coq等证明助手实现的类型检查算法吗?据我了解,这些是针对它们的MLTT特定变体的算法(CIC为Coq,ALF则为其他),但是我不清楚如何将它们用于类型检查'73的特定MLTT。特别是,如果宇宙的层次结构或其他细节差异可能会改变任何东西……
Josh Chen,

...或者算法是否足以涵盖这些差异?我很难找到如此笼统的结果;我在文献搜索中似乎发现的所有内容都是非常具体的结果,通常是专门针对某些证明助手的基础理论量身定制的。
乔什·陈

1
@JoshChen算法的核心是非常通用的,因为它们涉及类型导向的搜索,并与对良好类型的术语的规范化步骤交替进行,如Andrej所解释。不幸的是,尽管我将部分引用添加到我的答案中,但是我不知道该算法的一般描述。
科迪

1
@JoshChen他们没有弄清楚,但是他们可能是在为“ curry-style”术语指代类型,对于这些类型而言,推断是不确定的。我进入更详细的位置:cs.stackexchange.com/a/12957/988
科迪

8

我想通过一般观察来补充科迪的答案,以表达我对类型检查算法为何起作用的理解。

对于种类繁多的类型理论,除非我们事先确定术语类型正确,否则我们绝不会尝试对术语进行规范化,从而进行类型检查或推断。同样,除非已经确定类型是类型,否则我们绝不会尝试对类型进行规范化。因此,我们可以确定标准化将终止(需要单独的证明)。

人们必须查看特定的算法,看看它们确实以这种方式工作,但是确实可以。我只是想说明是什么使它们打勾。或更妙的是,这就是它们停止滴答的原因。

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.