Lambda演算如何精确地捕捉可计算性的直观概念?


12

我一直在试图绕过 -calculus 的内容,原因和方式,但是我无法理解“它为什么起作用”?λ

“直观地”,我得到了Turing Machines(TM)的可计算性模型。但是这个抽象只是让我感到困惑。λ

让我们假设,TM不存在-那么如何才能“直观”地相信 -calculus捕获这种可计算性概念的能力。对所有事物拥有一堆功能及其可组合性如何暗示可计算性?我在这里想念什么?我读过阿隆佐·丘奇(Alonzo Church)的论文,但我仍然感到困惑,并希望对此有更“模糊的理解”。λ


您在重写系统和语法方面是否存在相同的问题?在lambda演算中,基本操作非常简单:函数抽象,通过替换进行函数应用以及计算是beta归一化。换句话说,作为合理的计算模型,我看不出您的问题。
卡夫

2
我从未见过有人怀疑lambda微积分可定义函数是可计算的。从历史上看,问题是这些是否是唯一可直观计算的函数,这与您似乎提出的问题完全不同。
卡夫

1
我发现有帮助的一件事是Raymond M Smullyan的书“嘲笑一只知更鸟”,该书将功能替换为魔法森林中的鸟类(这是一本好书)
dspyz

1
Smullyans的书是关于组合逻辑的
Trismegistos 2015年

Answers:


21

你陪伴很好 库尔特·哥德尔(KurtGödel)批评演算(以及他自己的一般递归函数理论)不是令人满意的可计算性概念,因为它不直观,或者不能充分解释正在发生的事情。相反,他发现图灵对可计算性的分析以及随之而来的机器概念完全令人信服。所以,不用担心。λ

另一方面,要对可计算性模型的工作原理有所了解,最好在其中编写一些程序。但是,尽管它很有趣(以与走火相同的方式),但您不必用纯 -calculus来做。您可以使用 -calculus 的现代后代,例如Haskell。λλλ


4
如果走火如您所说的那样有趣,那么我必须尝试一下。
Radu GRIGore 2015年

安德烈(Andrej),您知道这些参考吗?Godel不接受Chruch的模型来捕获所有可交换函数,但是我不记得看到任何地方他对这个模型提出了更多批评。据我所知,他对丘吉尔的lambada演算模型的批评与对他自己的戈德尔-赫伯兰德一般递归函数的批评相提并论。
卡夫

3
我认为您想要K. Godel:“关于不确定性结果的一些评论”,所罗门·费弗曼(Solomon Feferman),约翰·道森(John Dawson)和史蒂芬·克莱恩(Stephen Kleene)编辑,库尔特·哥德尔:科特作品集。i 牛津大学出版社。305--306(1972)。参见books.google.si/…–
安德烈·鲍尔

6

您在其中编程!看一下教堂的编码。您会看到几乎可以执行所有算术,这也许会让您相信它非常强大。我想看看清单上的操作。您可以根据对数据结构执行最重要操作的函数来定义大多数数据结构。

例如,列表的编码是将其折叠的折叠功能。请注意,这不是Church的编码,而是我从Percie的类型和编程语言中获得的编码。Church的对编码不会给我们递归,我们必须使用某种递归组合器将其重新添加回自己。

因此,列表需要两个参数,一个用于执行折叠的函数,以及一个在某个点插入到折叠中的初始值。

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

现在我们可以给定一个加法函数来定义一个求和(请参见上面的教堂编码)

sum xs = xs add 0

我们可以做更多的事情并定义一个地图函数

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

如果您仍然不相信此处正在进行计算,并且想要确保可以执行任何计算,请检查定点组合器。有时想一下会有点伤脑筋,所以我不确定我会称其为直觉,但是如果您使用一些参数手动对其进行评估,则可以看到发生了什么。

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.