证明依赖类型检查是可判定的证明技术


10

我处于一种情况下,我需要证明对于我正在研究的依赖类型演算,类型检查是可以决定的。到目前为止,我已经能够证明该系统正在高度规范化,因此定义相等性是可判定的。

在我阅读的许多参考文献中,类型检查的可判定性被列为强规范化的必然结果,我相信在这种情况下会如此,但是我想知道如何才能真正显示出这一点。

特别是,我坚持以下几点:

  • 仅仅因为类型良好的术语会高度归一化,并不意味着该算法不会在非类型良好的输入上永远循环
  • 由于逻辑关系通常用于显示强规范化,因此在进行类型检查术语时,没有方便的递减度量。因此,即使我的类型规则是针对语法的,也无法保证应用规则最终会终止。

我想知道,有没有人能很好地证明依赖类型语言的类型检查可判定性证明?如果是小的核心演算,那很好。任何讨论证明可判定性的证明技术的东西都将是很棒的。


7
常规的双向类型检查算法在未先检查术语(或类型)是否类型正确(或格式正确)之前,都不会尝试对其进行规范化。您不必担心标准化未键入的术语。
安德烈·鲍尔

7
关于应用规则:除类型转换外,所有术语和类型规则都会降低目标。因此,我们需要控制类型转换,这是通过使用双向方法来完成的。
安德烈·鲍尔

Answers:


9

虽然在类型检查的情况下效果很好,但是这里确实确实有一个细微之处。我将在这里写下该问题,因为它似乎出现在许多相关的线程中,并尝试解释为什么在“标准”依赖类型理论中进行类型检查时一切正常。因为无论如何这些问题都会出现):

事实1:如果是的派生,那么对于某种和每个子项,都有的派生。,有一些类型,上下文和推导的。DΓt:ADΓA:ssutBΔDΔu:B

这个好事实很难证明,并且被一个非常讨厌的反事实所抵消:

事实2:在一般情况下,和是不是子推导!DD dD

这在某种程度上取决于类型系统的精确表述,但是实际上实施的大多数“操作”系统确实符合事实2。

这意味着,在对派生进行归纳推理时,您不能“传递给子术语”,也不能得出关于您要证明某事的术语类型的归纳陈述是正确的。

当试图证明看似无害的语句时,这一事实非常刺耳,例如,具有类型转换的系统等同于具有无类型转换的系统。

但是,在类型推断的情况下,您可以通过对术语的结构进行归纳来给出同时的类型和排序(类型的推断)推断算法,这可能涉及到Andrej建议的类型导向算法。对于给定的术语(和上下文,您要么失败要么找到,使得和。您无需使用归纳假设来找到后者)推导,因此尤其可以避免上述问题。tΓA,sΓŤ一个Γ一个s

关键情况(也是唯一真正需要转换的情况)是应用程序:

infer(t u):
   type_t, sort_t <- infer(t)
   type_t' <- normalize(type_t)
   type_u, sort_u <- infer(u)
   type_u' <- normalize(type_u)
   if (type_t' = Pi(A, B) and type_u' = A' and alpha_equal(A, A') then
      return B, sort_t (or the appropriate sort)
   else fail

每次对normalize的调用都以类型明确的条件完成,因为这是infer的成功的不变条件。


顺便说一句,在实现时,Coq没有可判定的类型检查,因为它fix在尝试对语句进行类型检查之前对语句主体进行了标准化。

无论如何,正常类型的名词的界线是如此天文数字,以至于在这一点上可判定性定理在大多数情况下都是学术性的。实际上,只要有耐心,就可以运行类型检查算法,如果还没有完成,则尝试其他方法。


我发现您的回答非常有用,谢谢。我有两个问题:1.什么是“操作系统”?有什么选择?2.您能否更清楚地说明该示例:这意味着什么(我们试图证明什么事实?)“具有类型转换的系统等效于具有无类型转换的系统。”?谢谢!
卢卡斯卢

1
一种操作系统(在实践中在例如Coq或Agda软件中实现的操作系统)的替代方案是一个理论系统,该系统可用于证明元理论特性,但在实践中效率低下或不便使用。证明操作系统和理论系统的等效性通常是系统设计的重要组成部分。我在这里进一步讨论:cstheory.stackexchange.com/a/41457/3984
cody

我认为值得一提的是Lennart Augustsson的“ 更简单,更简单”!。这是类型检查的最小Haskell实现,并且是对依赖类型的lambda演算的一些推断。有一些代码与科迪的代码非常接近infer(t u):;要找到它,请搜索“ tCheck r (App f a) =”。对于更完整但仍然简单的实现,您可以检查Morte'stypeWith
卢卡斯卢

1
@ŁukaszLew类型化VS无类型转换的问题是公知的未解决的问题,其涉及2种型制剂的理论,并而最近解析:pauillac.inria.fr/~herbelin/articles/...
科迪

是什么意思?üŤ
jonaprieto
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.