smn定理和curring是相同的概念吗?


12

我正在研究smn定理,这个概念使我想起了弯曲。

来自维基百科有关smn定理的文章:

定理说,对于给定的编程语言以及正整数m和n,存在一种特定的算法,该算法接受具有m + n个自由变量以及m个值的程序的源代码作为输入。该算法生成的源代码可以有效地替换前m个自由变量的值,而其余变量则保持自由。

从有关currying的文章中:

凭直觉,柯里说:“如果修复一些参数,您将得到其余参数的函数”

对我来说似乎是相同的想法。我不确定的唯一原因是,我在smn上遇到的材料没有提及currying(反之亦然),因此我想咨询一下以确保我确实得到它。


确实。一些可计算性证明具有淡淡的味道。的SMN定理非常粗略地允许假装的递归函数索引是否lambda项,以使得给定我们可以通过精心设计非正式X = λ ÿ ϕ ix y 并声称g是原始递归。甚至第二个递归定理证明(利用smn)也是变相的Church的定点组合器,隐藏在s 后面ϕi(,)g(x)=#λy.ϕi(x,y)gs()用途。这里的关键点是,即使定义了枚举来枚举TM(或Java或...),我们仍然可以假装有lambda!ϕi

好吧,smn会创建一个存在性语句,而咖喱函数的存在会提供 “编译器”。但是想法是一样的。
拉斐尔

Answers:


15

是的,是同一回事。

咖喱是来自微积分的一个概念。这是A × B CA B C )之间的转换。可以认为这是“如果我们具有两个类型为AB的参数的函数,则可以固定第一个参数(类型为A的函数,然后将得到其余参数的类型为B的函数)”。实际上,这种变换是同构的。这是通过(类型)λ-微积分的数学模型(笛卡尔封闭类别)在数学上精确实现的。λA×BCA(BC)ABABλ

有一组编号集。有编号组是一对,其中是一组和ν Ñ是一个局部满射,即,从数字地图上,其也可以被不确定。如果ν Ñ = X,那么我们说Ñ是一个代码X。在可计算性理论中,有许多示例。每当我们用数字编码一些信息时,我们就会得到一个编号集。例如,有一个标准编号(A,νA)AνA:NAAνA(n)=xnx的局部可计算函数,从而使 φ Ñķ 是通过由编码部分可计算函数计算出的数 Ñ当施加到 ķ。(结果可能是不确定的。)φφñķñķ

F一种ν一种νññFν一种ķ=νφñķķν一种φñFϕñF

λ


PË[R一种ν一种

1
是的,这两个类别是等效的,第三个等效版本是适度集合的版本(查找“适度集合和程序集”)。
安德烈·鲍尔
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.