Lambda微积分是一种特定类型的术语写作系统吗?


13

现在我们可以看到,教会 与相关简单的类型化演算。的确,为了减少对Lambda微积分的误解,他似乎解释了Simple Typed Lambda微积分。

现在,当约翰·麦卡锡(John McCarthy)创建Lisp时,他以Lambda微积分为基础。这是他发表“符号表达式的递归函数及其由机器进行的计算,第一部分”时承认的。您可以在这里阅读

现在我们知道Mathematica的核心是一个类似Lisp的系统,但它不是完全基于Lambda微积分,而是基于术语重写系统

作者此声明:

Mathematica从根本上来说是一个术语重写系统,比Lisp背后的Lambda微积分更笼统。

似乎Lambda微积分只是一个更一般的类别的一小部分。(相当大的想法使人大开眼界)。我正在尝试阅读更多有关此内容的信息。

我的问题是:Lambda微积分是一种特定类型的术语写作系统吗?

Answers:


15

答案是,这取决于术语重写系统的含义

在引入术语重写系统(TRSes)的概念时,它描述了现在称为一阶TRSes的形式,它只是一组形式的计算规则

lr

其中和是形式的一阶项lr

t:= x  f(t1,,tn)

其中是变量,是取自任意但固定的集合的函数符号,称为签名,它也为每个固定多个参数。xfΣfΣ

规则有几个常见的限制,例如但我们无需在此赘述。Var(r)Var(l)

根据这个定义,通常的演算,与规则: 不能被表达,如构造“ ” 结合的发生在(虽然应用程序很好)。一种可能的解决方案是将每个术语转换为另一种不涉及绑定的术语,并且该方法比重写系统本身的理论还要老。β

(λx.t) ut[u/x]
λxtλ

一种方法是著名的组合器演算,它是带有签名的重写规则和 和 SKΣ={S, K,app}

app(app(K,x),y)x
app(app(app(S,x),y),z)app(app(x,z),app(y,z))

还有另一种更直观的编码,其中包含带有de Bruijn索引和显式替换的lambda项,但我在这里不再赘述。


尽管具有一阶编码,但很显然,通过将TRS的概念扩展为包括具有构造函数的构造函数,可以更好地解决演算的减少行为所带来的技术问题。通常用术语“ 高阶重写系统”来指代。现在采用以下形式的条款λ

t := x(t1,,tn)  f(x11xi11.t1,,x1nxinn.tn)

再次是,但现在每个都绑定在。签名需要指定每个参数绑定多少个变量。现在我们可以将表示为。只需做一些工作,就可以定义适当的替换概念。X Ĵ一个b 小号X λ X ŤfΣxjitiabs(x.t)λx.t

在这里,关于什么构成重写规则尚无共识。一个问题是,我们希望重写是可确定的,因此,左手边是否与术语匹配就必须是可确定的。但这通常被认为是模数,据认为是可决定的,但是只有极其复杂和缓慢的算法(而是无法确定的!)。ββηβ

因此,左侧被限制在某些不错的子集中,通常是“密勒模式”。尽管有一些令人讨厌的惊喜,但针对一阶案例的许多结果是普遍的。

仅采用一阶系统,并将和应用程序添加到术语结构中,以及临时的和归约也很常见。这产生了相当合理的系统,但付出了(一定的)普遍性。β ηλ βη

当然,通常的演算可以直接在这些系统中编写。例如规则:βλβ

app(abs(x.y(x)),z)y(z)

Nipkow和Prehofer 在此对定义和基本结果进行了相当不错的概述。


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.