类型理论中是否有一个很好的非终止和终止证明概念?


10

建构型理论及其在咖喱霍华德对应关系下的基本解释仅包括全部可计算的功能。在文献中,有人说过使用“计算类型理论”来表示功能程序中的非终止,但是在我遇到的论文中,这似乎并不是该理论的主要动机(例如Benton提到了非确定性,连续性和例外,而没有对非终止进行太多的详细介绍),因此,我还没有找到一篇使用计算类型理论对非终止进行有力解释的论文。

具体来说,我正在寻找一种方式,给定的代表类型的可能是非终止计算的类型牛逼,应该有一些概念证明,证明X 牛逼终止型的^ h X ,使得给定的X Ť p ħ X 中,我们可以建立一个术语XAT(A)x:T(A)H(x)x:T(A)p:H(x)x~:A

我这样做的动机是,我希望最终能够在形式上将计算复杂性理论中的概念更正式地联系起来。具体而言,我对作为形式理论建设性类型的力量通过使用暂停神谕会获得什么感兴趣,因此,为了做到这一点,我当然需要对可能的非终止有一个正式的概念,并证明需要暂停。在类型理论框架内将其与之并存。


3
fAB dom(f)xAdom(f)(x)fx

3
您是否在寻找延迟单子
Andrej Bauer

AB

Answers:


11

因为类型理论在形式化中的主要应用之一是研究编程语言和一般的计算,所以很多思想已经出现在表示可能不终止的程序的方式上。

我不会在这里进行完整的调查,但是我将尝试指出不同方向的主要重点。

  • F x yfxf(x)=yx(y,F x y)(¬y,F x y)

    一种更复杂的方法是“ Bove-Capretta”方法(请参阅类型理论中的建模递归),该方法为每个递归函数定义了一个“可访问谓词”,该谓词对给定计算是有限的这一事实进行编码。要定义给定输入可访问的额外参数,要在不使用此谓词的情况下定义函数,您需要证明输入的所有可能组合都是可访问的。

  • A

    codata Delay A =
    | Now : A -> Delay A
    | Later (Delay A)
    

    这编码了可能Later以结果结尾的可能无限的令牌流(计算的“滴答声”)Now a。不终止等同于与程序双重相似

    loop =以后的循环和终止可以通过以下归纳谓词来定义Delay A

    data Terminates : Data A -> Prop =
    | Term_now : forall x, Terminates (Now x)
    | Term_later : forall d, Terminates d -> Terminates (Later d)
    

    我认为,agda-istas对此有很多话要说,他们称之为偏爱性单子论(例如Danielsson)。

  • “部分类型理论”方法:这是一种更多的实验性方法(该理论仍在研究中),但是正在开发一些类型理论来应对这样一个事实,即我们实际上想要两种功能用类型论写:证明术语和程序。事实证明,很难就这些问题获得合理的理论(并保持理论的一致性),但是Casinghino 等人在此进行了认真的尝试,而Kimmel 等人进行了类似的尝试。

我敢肯定还有其他我不知道的方法,如果有人要填写此列表,我会很高兴。

Π10

通常在隐式计算复杂性的保护下,类型理论与复杂性理论之间还有其他非常有益的相互作用。


有趣,感谢您的信息!我相信部分类型理论方法可能在精神上与我所寻找的最接近-至少,Kimmel论文似乎在某种程度上专门提供了我所寻找的内容(请参阅“ tcast”的输入规则) )。
内森·贝戴尔
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.