我知道,大多数没有Y组合器原语的类型化的λ演算的复杂度是有界的,即只能表达有界复杂度的函数,随着类型系统表达能力的增强,界界也会变大。我记得例如,构造微积分最多可以表达双倍的指数复杂性。
我的问题是有关输入的lambda演算是否可以表示某个复杂度以下的所有算法,或者仅表示某些算法?例如,在Lambda Cube中是否存在任何形式主义无法表达的指数时间算法?被多维数据集的不同顶点完全覆盖的复杂性空间的“形状”是什么?
我知道,大多数没有Y组合器原语的类型化的λ演算的复杂度是有界的,即只能表达有界复杂度的函数,随着类型系统表达能力的增强,界界也会变大。我记得例如,构造微积分最多可以表达双倍的指数复杂性。
我的问题是有关输入的lambda演算是否可以表示某个复杂度以下的所有算法,或者仅表示某些算法?例如,在Lambda Cube中是否存在任何形式主义无法表达的指数时间算法?被多维数据集的不同顶点完全覆盖的复杂性空间的“形状”是什么?
Answers:
我会给出部分答案,希望其他人能填补空白。
在类型化的 calculi中,可以给通常的数据表示形式赋予类型(对于教堂(一元)整数为N a t,对于二进制字符串为S t r,对于布尔型为B o o l)并且想知道函数的复杂性是什么? /问题可以通过键入的术语来表示/确定。我仅在某些情况下才知道精确的方法,在简单类型的情况下,它取决于定义“可表示/可确定”时使用的约定。无论如何,我不知道存在双指数上限的任何情况。
首先,简要回顾一下Lambda Cube。通过在简单类型的演算(STLC)之上启用或禁用以下3种依存关系,可以获得其8个计算:
(术语对术语的依赖性始终存在)。
添加多态性债收益率系统F.在这里,您可以键入与教会整数,同样适用于二进制字符串和布尔值。芝证明这种类型的系统F而言Ñ 一吨 → Ñ 一吨代表完全相同的数值函数,其总体是二阶皮亚诺算术证明的。这几乎是每天的数学运算(尽管没有任何形式的选择),因此课程种类很多,Ackermann函数是其中的一种微小微生物,更不用说函数2 2。我不知道系统F中无法表示的任何“自然”数值函数。示例通常是通过对角线化或编码二阶PA的一致性或其他自指技巧(例如确定系统中的β-等式)构建的F本身)。当然,在系统F中,您可以在一元整数Nat和它们的二进制表示形式Str之间进行转换,然后测试例如第一位是否为1,因此可判定问题的类别(按类型Str→B表示)ool)同样巨大。
因此,包含多态性的Lambda多维数据集的其他3个计算至少与系统F具有相同的表现力。其中包括系统Fω(多态性+高阶),它可以精确地表示高阶PA中可证明的总函数,以及微积分。构造(CoC),它是多维数据集中最具表现力的演算(所有依赖项均已启用)。我不知道用算术理论或集合论来描述CoC的表现力,但是它一定很可怕:-)
我对仅通过启用从属类型(本质上是没有等式和自然数的马丁-洛夫类型理论),高阶类型或同时启用这两种类型所获得的演算一无所知。在这些演算中,类型很强大,但是术语无法获得这种能力,所以我不知道您会得到什么。从计算上来说,我认为您没有比简单类型具有更多的表现力,但我可能会误会。
因此,我们只剩下了STLC。据我所知,这是多维数据集唯一具有有趣(即不算大)复杂度上限的演算。关于TCS.SE,有一个尚未解决的问题,实际上情况有些微妙。
首先,如果您固定一个原子并定义N a t:= (X → X )→ X → X,则将得到Schwichtenberg的结果(我知道网上有某纸的英文译本,但我找不到它现在)告诉您类型N a t → N a t的函数正是扩展的多项式(使用if-then-else)。如果允许一些“松弛”,即您允许随意实例化参数X并考虑类型N a t [与任意 A可以表示更多。例如,任何指数塔(因此您可能远远超出了双指数)以及前任函数,但仍不减法(如果考虑二进制函数并尝试使用 N a t [ A ] → N a t键入它们 [ A ' ] → N a t)。因此,在STLC中可表示的数值函数类别有点奇怪,它是基本函数的严格子集,但与众所周知的任何事物都不对应。
与上述明显矛盾的是,Mairson 的这篇论文展示了如何对任意图灵机的转移函数进行编码,从中可以得到N a t [ A ] → B o o l类型的项(对于某些类型甲取决于中号),该赋予了教会整数ñ作为输入,模拟的执行中号从固定的初始配置开始为一些形式的步骤 2 2 ⋮ 2 ñ,
实际上,STLC在“统一”决策方面非常薄弱。让我们称类的语言由类型的简单地键入的术语可判定的小号吨- [R [ 甲] → 乙ö ø 升一段甲(如上面,则允许在打字任意“松弛”)。据我所知,缺少C S T的精确表征。然而,我们知道Ç 小号牛逼 ⊊ 大号我ñ 牛逼我中号Ë(确定性线性时间)。包含和严格的事实都可以通过非常简洁的语义论证来显示(在有限集类别中使用STLC的标准指称语义)。前者是特瑞(Terui)最近放映的。后者本质上是Statman的旧结果的重新表述。在的问题的例子是多数(给出一个二进制串,告诉它是否包含严格更1S比0)。
(更多)后来的附加内容:我刚刚发现上面我称为的类确实具有精确的表征,而且非常简单。在1996年的一篇精美论文中,Hillebrand和Kanellakis证明了:
定理。 (常规语言在{ 0 ,1 })。
(这是他们论文中的定理3.4)。
我发现这令人惊讶地加倍:我对结果本身感到惊讶(我从来没有想到过可以对应于如此“整洁”的东西)以及它鲜为人知。Terui的L I N T I M E上限的证明也使用Hillebrand和Kanellakis所使用的相同方法(在有限集类别中解释简单类型的λ微积分),这也很有趣。换句话说,Terui(和我本人)可以很容易地重新发现这个结果,如果不是因为我们对C S T是一个“怪异”的类而感到满意:-)
(顺便说一下,我对MO关于“未知定理”的这个问题的回答感到惊讶)。
达米亚诺(Damiiano)在出色的回答中提出了一个问题的答案:
我对仅通过启用从属类型(本质上是没有等式和自然数的马丁-洛夫类型理论),高阶类型或同时启用这两种类型所获得的演算一无所知。在这些演算中,类型很强大,但是术语无法获得这种能力,所以我不知道您会得到什么。
如果添加归纳类型和大消除,我不知道构造的强制性演算的强度是什么。