输入的lambda演算可以在给定的复杂度以下表示所有*算法吗?


21

我知道,大多数没有Y组合器原语的类型化的λ演算的复杂度是有界的,即只能表达有界复杂度的函数,随着类型系统表达能力的增强,界界也会变大。我记得例如,构造微积分最多可以表达双倍的指数复杂性。

我的问题是有关输入的lambda演算是否可以表示某个复杂度以下的所有算法,或者仅表示某些算法?例如,在Lambda Cube中是否存在任何形式主义无法表达的指数时间算法?被多维数据集的不同顶点完全覆盖的复杂性空间的“形状”是什么?


我认为答案是肯定的:我们可以表达限时通用图灵机。
卡夫(Kaveh)2014年

3
您确定双指数上限吗?如果我没记错的话,CoC是Lambda多维数据集中最具表现力的“角落”,这意味着它包括系统F(即多态 -calculus),它远远超出了双指数...无论如何,答案肯定是是的,例如在这里查看我的答案。如果您愿意,我可以发布更详细的答案。λ
Damiano Mazza 2014年

1
抱歉,我误解了您的问题,您不是在问某些类型的λ calculi,而是在询问Lambda Cube 的类型λ calculi。恐怕那里没有有趣的复杂性,它们都太具有表现力,尽管我知道仅针对System F和System 的准确答案。ω
Damiano Mazza

4
Ackermann函数可以用构造的演算来表达,因此,那只是双指数是不正确的。
Andrej Bauer 2014年

我想我在Coq'Art书中读到了有关这方面的内容,但我很可能会误会。谢谢!
jkff 2014年

Answers:


19

我会给出部分答案,希望其他人能填补空白。

在类型化的 calculi中,可以给通常的数据表示形式赋予类型(对于教堂(一元)整数为N a t,对于二进制字符串为S t r,对于布尔型为B o o l)并且想知道函数的复杂性是什么? /问题可以通过键入的术语来表示/确定。我仅在某些情况下才知道精确的方法,在简单类型的情况下,它取决于定义“可表示/可确定”时使用的约定。无论如何,我不知道存在双指数上限的任何情况。λNatStrBool

首先,简要回顾一下Lambda Cube。通过在简单类型的演算(STLC)之上启用或禁用以下3种依存关系,可以获得其8个计算:λ

  • 多态性:术语可能取决于类型;
  • 相关类型:类型可能取决于术语;
  • 高阶:类型可能取决于类型。

(术语对术语的依赖性始终存在)。

添加多态性债收益率系统F.在这里,您可以键入与教会整数,同样适用于二进制字符串和布尔值。芝证明这种类型的系统F而言Ñ Ñ 代表完全相同的数值函数,其总体是二阶皮亚诺算术证明的。这几乎是每天的数学运算(尽管没有任何形式的选择),因此课程种类很多,Ackermann函数是其中的一种微小微生物,更不用说函数2 2Nat:=X.(XX)XXNatNat。我不知道系统F中无法表示的任何“自然”数值函数。示例通常是通过对角线化或编码二阶PA的一致性或其他自指技巧(例如确定系统中的β-等式)构建的F本身)。当然,在系统F中,您可以在一元整数Nat和它们的二进制表示形式Str之间进行转换,然后测试例如第一位是否为1,因此可判定问题的类别(按类型StrB表示)ool)同样巨大。22nβNatStrStrBool

因此,包含多态性的Lambda多维数据集的其他3个计算至少与系统F具有相同的表现力。其中包括系统(多态性+高阶),它可以精确地表示高阶PA中可证明的总函数,以及微积分。构造(CoC),它是多维数据集中最具表现力的演算(所有依赖项均已启用)。我不知道用算术理论或集合论来描述CoC的表现力,但是它一定很可怕:-)ω

我对仅通过启用从属类型(本质上是没有等式和自然数的马丁-洛夫类型理论),高阶类型或同时启用这两种类型所获得的演算一无所知。在这些演算中,类型很强大,但是术语无法获得这种能力,所以我不知道您会得到什么。从计算上来说,我认为您没有比简单类型具有更多的表现力,但我可能会误会。

因此,我们只剩下了STLC。据我所知,这是多维数据集唯一具有有趣(即不算大)复杂度上限的演算。关于TCS.SE,有一个尚未解决的问题,实际上情况有些微妙。

首先,如果您固定一个原子并定义N a t= X X X X则将得到Schwichtenberg的结果(我知道网上有某纸的英文译本,但我找不到它现在)告诉您类型N a tN a t的函数正是扩展的多项式(使用if-then-else)。如果允许一些“松弛”,即您允许随意实例化参数X并考虑类型N a t [XNat:=(XX)XXNatNatX与任意 A可以表示更多。例如,任何指数塔(因此您可能远远超出了双指数)以及前任函数,但仍不减法(如果考虑二进制函数并尝试使用 N a t [ A ] N a t键入它们 [ A ' ] N a t)。因此,在STLC中可表示的数值函数类别有点奇怪,它是基本函数的严格子集,但与众所周知的任何事物都不对应。Nat[A]NatANat[A]Nat[A]Nat

与上述明显矛盾的是,Mairson 的这篇论文展示了如何对任意图灵机的转移函数进行编码,从中可以得到N a t [ A ] B o o l类型的项(对于某些类型取决于中号),该赋予了教会整数ñ作为输入,模拟的执行中号从固定的初始配置开始为一些形式的步骤 2 2 2 ñMNat[A]BoolAMnM

222n,
固定塔的高度。这并不表明每个基本问题都可以由STLC确定,因为在STLC中无法将表示M输入的二进制字符串(类型为)转换为用于表示M in 的配置的类型。 Mairson的编码。因此,编码某种程度上是“非均匀的”:您可以从固定输入中模拟基本长的执行,对每个输入使用不同的术语,但是没有一个术语可以处理任意输入。StrMM

实际上,STLC在“统一”决策方面非常薄弱。让我们称类的语言由类型的简单地键入的术语可判定的小号- [R [ ] ö ø 一段(如上面,则允许在打字任意“松弛”)。据我所知,缺少C S T的精确表征。然而,我们知道Ç 小号牛逼大号ñ 牛逼中号ËCSTStr[A]BoolACSTCSTLINTIME(确定性线性时间)。包含和严格的事实都可以通过非常简洁的语义论证来显示(在有限集类别中使用STLC的标准指称语义)。前者是特瑞(Terui)最近放映的。后者本质上是Statman的旧结果的重新表述。在的问题的例子是多数(给出一个二进制串,告诉它是否包含严格更1S比0)。LINTIMECST


(更多)后来的附加内容:我刚刚发现上面我称为的类确实具有精确的表征,而且非常简单。在1996年的一篇精美论文中,Hillebrand和Kanellakis证明了:CST

定理。 (常规语言在{ 0 1 })。CST=REG{0,1}

(这是他们论文中的定理3.4)。

我发现这令人惊讶地加倍:我对结果本身感到惊讶(我从来没有想到过可以对应于如此“整洁”的东西)以及它鲜为人知。Terui的L I N T I M E上限的证明也使用Hillebrand和Kanellakis所使用的相同方法(在有限集类别中解释简单类型的λ微积分),这也很有趣。换句话说,Terui(和我本人)可以很容易地重新发现这个结果,如果不是因为我们对C S T是一个“怪异”的类而感到满意:-)CSTLINTIMEλCST

(顺便说一下,我对MO关于“未知定理”的这个问题的回答感到惊讶)。


3
阅读完答案后只能再次看到该名称。我认为您比我自己的教授已经教了我更多的知识。互联网是一件美丽的事情。谢谢。
MaiaVictor,2015年

@Damiano Mazza。喜欢您的答案,但是“均匀性”的概念不是那么简单,不是吗?
安德里亚·阿斯佩蒂

嗨,@安德里亚,谢谢。这里的“统一性”是这样一个事实,即您使用适用于所有可能输入的单个程序来决定一种语言,而不是通过无限系列的程序来决定一种语言,而每个程序只能处理固定长度的输入(或,更糟糕的是,每个输入都有一个程序,如Mairson的论文所述)。均匀性是在常态演算(λ组术语都太强大用于非均匀接近,除非人们考虑的限制,如线性/亲和),所以在某种意义上它是“平凡的”。但是,也许我不明白您的评论……λλ
Damiano Mazza'3

12

达米亚诺(Damiiano)在出色的回答中提出了一个问题的答案:

我对仅通过启用从属类型(本质上是没有等式和自然数的马丁-洛夫类型理论),高阶类型或同时启用这两种类型所获得的演算一无所知。在这些演算中,类型很强大,但是术语无法获得这种能力,所以我不知道您会得到什么。

ω

λPλPω

如果添加归纳类型和大消除,我不知道构造的强制性演算的强度是什么。


谢谢@Neel!我想现在我们已经掌握了全貌。
Damiano Mazza 2014年

7

我将尝试补充Damiano的出色答案。

λF HA2

TLTL

L

  • FHA2

  • TPAF

λPTIME

总的来说,这是一个很大的研究途径,因此我将仅参考以前的答案之一


3
cf. 斯蒂芬·库克(Stephen Cook)和阿拉斯代尔·厄克哈特(Alasdair Urquhart)的“ 可行性构造算术的函数解释 ”,1993年,涉及复杂性理论的变体。
卡夫(Kaveh)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.