【发布时间】:2015-01-28 01:57:40
【问题描述】:
我想知道任何人都可以笼统地向我解释一下 Lambda 演算和图灵机等价的一些证明以及证明的一般方法。尽可能通俗易懂。
【问题讨论】:
标签: functional-programming lambda-calculus turing-machines computability
我想知道任何人都可以笼统地向我解释一下 Lambda 演算和图灵机等价的一些证明以及证明的一般方法。尽可能通俗易懂。
【问题讨论】:
标签: functional-programming lambda-calculus turing-machines computability
用非常基本的术语来说,你只需证明两件事:
当然,这里涉及到一些手动操作,因为您还需要考虑输入/输出的操作差异,但我们在这里不涉及。
在实践中,以上两个定理得到了建设性的证明,即通过实际给出一种将一个变成另一个的机械方式。所以基本上你给了两个编译器,以及一个证明 他们的正确性。
为了获得良好的直觉,请考虑 lambda 演算和寄存器机器之间的类似等价定理。在这种情况下,摆脱了真实计算机的有限性,无类型 lambda 演算的解释器是一个方向的证明。我在这里指的是一个真实的、有形的程序,你可以运行它;例如通过从函数式编程语言的编译器中删除类型检查器(它必然会嵌入一些类型化的 lambda 演算。
所以下次你运行 GHC 时,想想这个定理!
【讨论】:
我相信门逻辑(硬件)、Lambda 演算(数学/抽象)和图灵机(抽象图像)从不同的角度来看是相同的操作。 门逻辑是移位的位/电流。您可以自己手动实现(实验套件、面包板、硬件)或使用逻辑门模拟器(软件)对其进行测试。 Lambda 演算 是一个 形式 和 数学 概念,用于证明您机械地执行的操作将始终具有相同的输出/结果。 图灵机只是一种更抽象的方式来解释这一点,没有数学也没有盖茨。告诉你奶奶冯诺依曼架构,把数学、电气和软件工程留在实验室。在门逻辑中,您将创建一个锁存器,该锁存器将根据输入保持位/状态。在 lambda 演算中,每一位都是一个符号,而 lambda 本身就是转换/归约的符号。在图灵机中,位是寄存器。我通过 Principia Mathematica、Tractatus-Logico Philosophicus 和 Lambda Calculus 学到了这一点:最短的解释是最糟糕的,因为最抽象。您将需要时间观察树木,让它们变成森林。
【讨论】: