lambda演算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
= λf. λx.((3f )(f (f x)))
//3 = λf. λx.f (f (f x))
= λf. λx.(( λf. λx.f (f (f x))))f )(f (f x))
//将f 和(f (f x))应用于f 和x上
= λf. λx.(f (f (f (f (f x)))))
//正好等于5的邱奇数定义
邱奇-图灵论题(又称邱奇-图灵猜想,邱奇论题,邱奇猜想,图灵论题) 是一个关于可计算性理论的假设。该假设论述了关于函数特性的,可有效 计算的函数值(用更现代的表述来说–在算法上可计算的)。简单来说,邱 奇-图灵论题认为“任何在算法上可计算的问题同样可由图灵机计算”。 20世纪上半叶,对可计算性进行公式化表示的尝试有:
龙国星海 (山海螄)
λ 演算
March 23, 2016 9 / 17
λ演算
λ演算的定义 归约
在 λ 演算中有许多方式都可以定义自然数,但最常见的还是邱奇数
Church数 邱奇编码是把数据和运算符嵌入到λ演算内的一种方式,它是使用λ符 号的自然数的表示法。这种方法得名于阿隆佐·邱奇,他首先以这种方 法把数据编码到λ演算中。
0 ≡ λf. λx.x 1 ≡ λf. λx.f x 2 ≡ λf. λx.f (f x) 3 ≡ λf. λx.f (f (f x)) n ≡ λf. λx.f nx
在λ演算中,计算系统用数f 作为参数并以f 的n次幂为返回值的 函数
龙国星海 (山海螄)
λ 演算
March 23, 2016 11 / 17
λ演算
λ演算的定义 归约
PLUS 3 2 = λm. λn. λf. λx.((mf )((nf )x))3 2
//将3和2应用于m,n这两个自由变量
= λf. λx.((3f )((2f )x))
//((2f )x) = (λf. λx.(f (f x))f x) = f (f x)
λ 演算
March 23, 2016 4 / 17
α变换
λ演算的定义 归约
α-变换规则表达的是,被绑定变量的名称是不重要的。比如说λx.x和λy.y是 同一个函数。尽管如此,这条规则并非像它看起来这么简单,关于被绑定 的变量能否由另一个替换有一系列的限制。 α-变换规则陈述的是,若V与W均为变量,E是一个λ表达式,同 时E[V:=W]是指把表达式E中的所有的V的自由出现都替换为W,那么 在W不是 E中的一个自由出现,且如果W替换了V,W不会被E中的λ绑定 的情况下,有 λV.E == λW.E[V:=W] 这条规则告诉我们,例如λx.(λx.x) x这样的表达式 和λy.(λx.x) y是一样的。
龙国星海 (山海螄)
λ 演算
March 23, 2016 15 / 17
λ演算与图灵机的计算能力等价
λ演算与图灵机计算能力等价性证明
图灵机可计算一切直觉上能行可计算的函数。 λ演算之通用在于,任何一个可计算函数都能用这种形式来表达和求 值。因而,λ演算的计算能力是等价于图灵机的。
龙国星海 (山海螄)
龙国星海 (山海螄)
λ 演算
March 23, 2016 5 / 17
β归约
λ演算的定义 归约
β-归约规则表达的是函数作用的概念。它陈述了若所有的E’的自由出现在E [V:=E’]中仍然是自由的情况下,有 ((λV.E) E’) == E [V:=E’] 成立。 ==关系被定义为满足上述两条规则的最 小等价关系(即在这个等价关系中减去任何一个映射,它将不再是一个等 价关系)。对上述等价关系的一个更具操作性的定义可以这样获得:只允许 从左至右来应用规则。不允许任何β归约的λ表达式被称为β范式。并非所 有的λ表达式都存在与之等价的范式,若存在,则对于相同的形式参数命名 而言是唯一的。此外,有一个算法用户计算范式,不断地把最左边的形式 参数替换为实际参数,直到无法再作任何可能的规约为止。这个算法当且 仅当λ表达式存在一个范式时才会停止。Church-Rosser定理说明了,当且仅 当两个表达式等价时,它们会在形式参数换名后得到同一个范式。
龙国星海 (山海螄)
λ 演算
March 23, 2016 7 / 17
λ演算
λ演算的定义 归约
λ表达式的唯一形式:x, λy · e, f (a) 例如:
f (x, y) = x + y
λx · λy · x + y 函数求值: f (2, 3)可以表示为:
(λx · λy · x + y)2 3
具体的程序就是一个列表,也叫做规则表,是这样的:
当前内部状态s q0 q1 q2
输入数值i 1 0 0
输出动作o 前移
往纸上写 后移
下一时刻的内部状态s q1 qn qy
Table: 图灵机规则表
龙国星海 (山海螄)
λ 演算
March 23, 2016 13 / 17
λ演算
λ演算与图灵机的计算能力等价
龙国星海 (山海螄)
λ 演算
March 23, 2016 12 / 17
λ演算
λ演算与图灵机的计算能力等价
它工作的时候是这样的:从读写头在纸带上读出一个方格的信息,并 且根据它当前的内部状态开始对程序进行查表,然后得出一个输出动 作,也就是是否往纸带上写信息,还是移动读写头到下一个方格。程 序也会告诉它下一时刻内部状态转移到哪一个。
1 美国数学家阿隆佐·邱奇创建了称为λ演算的方法来定义函数。
2 英国数学家阿兰·图灵创建了可对输入进行运算的理论机器模型,现在 被称为通用图灵机。
3 邱奇以及数学家斯蒂芬·科尔·克莱尼和逻辑学家J. Barkley Rosser一起 定义了一类函数,这种函数的值可使用递归方法计算。
邱奇-图灵论题的非正式表述说:如果某个算法是可行的,那这个算法同样
λ演算表达了两个计算机计算中最基本的概念“代入”和“置 换”。“代入”我们一般理解为函数调用,或者是用实参代替函数中的 形参;“置换”我们一般理解为变量换名规则。“代入”就是用λ演算 中的β−归约概念。而“替换”就是λ演算中的α-变换。函数的作用是 左结合的:
f xy = (f x)y
龙国星海 (山海螄)
λ 演算
龙国星海
山海螄
March 23, 2016
龙国星海 (山海螄)
λ 演算
March 23, 2016 1 / 17
目录
1 邱奇-图灵论题 2 λ演算的定义
归约 3 λ演算与图灵机的计算能力等价
龙国星海 (山海螄)
λ 演算
March 23, 2016 2 / 17
邱奇-图灵论题
邱奇-图灵论题
龙国星海 (山海螄)
λ 演算
March 23, 2016 6 / 17
η-变换
λ演算的定义 归约
前两条规则之后,还可以加入第三条规则,η-变换,来形成一个新的等价 关系。η-变换表达的是外延性的概念,在这里外延性指的是,两个函数对 于所有的参数得到的结果都一致,当且仅当它们是同一个函数。η-变换可 以令λx .f x和f相互转换,只要x不是f中的自由出现。下面说明了为何这条 规则和外延性是等价的: 若f与g外延地等价,即:f a == ga对所有的lambda表达式a成立,则当取a为 在f 中不是自由出现的变量x时,我们有f x == gx,因此λx.f x == λx.gx, 由η-变换f == g。所以只要η-变换是有效的,会得到外延性也是有效的。 相反地,若外延性是有效的,则由beta-归约,对所有 的y有(λx.f x)y == f y,可得λx.f x == f ,即η-变换也是有效的。
开始向右扫描。读到 1 或 0,通过进入不同的状态记住读到的是 1 还 是 0,把已读过的字符记成已读状态。 然后往右找 + ,找到后,再往右找 1 或 0,还是把读过的字符标记成 已读状态。找到后凭借进入不同的状态记住已读到的两个加数分别是 什么。
然后再往右找 =,找到后在 = 右边第一个非 0 或 1 的空位写下记住 的两个加数的和
(λy · 2 + y)3 2+3
如上已经完成了普通加法,这样就结束了
龙国星海 (山海螄)
λ 演算
March 23, 2016 8 / 17
λ演算
λ演算的定义 归约
λ演算系统中合法的字符如下: x1, x2, x3, · · · xn变元 → 归约 ⇔ 等价
λ, (, ) 所有能够在λ演算系统中出现的合法符号只有以上四种,其他符号都是非 法的。例如λx · x + 2,如果没有其他对于+符号的说明,那么这就是一个 非法的λ演算表达式。同时,自然数 2 也需要定义。
λ 演算
March 23, 2016 16 / 17
λ演算与图灵机的计算能力等价
THE END 不足之处,请批评指正
龙国星海 (山海螄)
λ 演算
March 23, 2016 17 / 17
龙国星海 (山海螄)
λ 演算
March 23, 2016 10 / 17
λ演算
λ演算的定义 归约
Church数是在Church编码下的自然数的表示法。表示自然数n的高阶函 数是把任何其他函数 f 映射到它的n重函数复合 f n = f ◦ f ◦ · · · ◦ f 的 函数。 Church数0,1,2,3....在λ演算下的定义为:
可以被图灵机,以及另外两个理论所实现。
龙国星海 (山海螄)
λ 演算
March 23, 2016 3 / 17
λ演算
λ演算的定义
λ演算(lambda calculus)是一套用于研究函数定义、函数应用和递归 的形式系统。它由阿隆佐·邱奇和他的学生斯蒂芬·科尔·克莱尼在20世 纪30年代发明的。
λ演算可以被称为最小的通用程序设计语言。它包括一条变换规则 (变量替换)和一条函数定义方式。
简单说完成加法的图灵机的输入字符集是0、1和+。带字符集是0、1、 +、=、还有空白符。
图灵机程序计算加法的过程: 一开始带上内容是一个二进制加式,比如2+3,读写头在右边的 1 上。
龙国星海 (山海螄)
λ 演算
March 23, 2016 14 / 17
λ演算
λ演算与图灵机的计算能力等价
首先,图灵机将读写头运动到更右一个位置,写下 =,然后运动到原 始位置。
//3 = λf. λx.f (f (f x))
= λf. λx.(( λf. λx.f (f (f x))))f )(f (f x))
//将f 和(f (f x))应用于f 和x上
= λf. λx.(f (f (f (f (f x)))))
//正好等于5的邱奇数定义
邱奇-图灵论题(又称邱奇-图灵猜想,邱奇论题,邱奇猜想,图灵论题) 是一个关于可计算性理论的假设。该假设论述了关于函数特性的,可有效 计算的函数值(用更现代的表述来说–在算法上可计算的)。简单来说,邱 奇-图灵论题认为“任何在算法上可计算的问题同样可由图灵机计算”。 20世纪上半叶,对可计算性进行公式化表示的尝试有:
龙国星海 (山海螄)
λ 演算
March 23, 2016 9 / 17
λ演算
λ演算的定义 归约
在 λ 演算中有许多方式都可以定义自然数,但最常见的还是邱奇数
Church数 邱奇编码是把数据和运算符嵌入到λ演算内的一种方式,它是使用λ符 号的自然数的表示法。这种方法得名于阿隆佐·邱奇,他首先以这种方 法把数据编码到λ演算中。
0 ≡ λf. λx.x 1 ≡ λf. λx.f x 2 ≡ λf. λx.f (f x) 3 ≡ λf. λx.f (f (f x)) n ≡ λf. λx.f nx
在λ演算中,计算系统用数f 作为参数并以f 的n次幂为返回值的 函数
龙国星海 (山海螄)
λ 演算
March 23, 2016 11 / 17
λ演算
λ演算的定义 归约
PLUS 3 2 = λm. λn. λf. λx.((mf )((nf )x))3 2
//将3和2应用于m,n这两个自由变量
= λf. λx.((3f )((2f )x))
//((2f )x) = (λf. λx.(f (f x))f x) = f (f x)
λ 演算
March 23, 2016 4 / 17
α变换
λ演算的定义 归约
α-变换规则表达的是,被绑定变量的名称是不重要的。比如说λx.x和λy.y是 同一个函数。尽管如此,这条规则并非像它看起来这么简单,关于被绑定 的变量能否由另一个替换有一系列的限制。 α-变换规则陈述的是,若V与W均为变量,E是一个λ表达式,同 时E[V:=W]是指把表达式E中的所有的V的自由出现都替换为W,那么 在W不是 E中的一个自由出现,且如果W替换了V,W不会被E中的λ绑定 的情况下,有 λV.E == λW.E[V:=W] 这条规则告诉我们,例如λx.(λx.x) x这样的表达式 和λy.(λx.x) y是一样的。
龙国星海 (山海螄)
λ 演算
March 23, 2016 15 / 17
λ演算与图灵机的计算能力等价
λ演算与图灵机计算能力等价性证明
图灵机可计算一切直觉上能行可计算的函数。 λ演算之通用在于,任何一个可计算函数都能用这种形式来表达和求 值。因而,λ演算的计算能力是等价于图灵机的。
龙国星海 (山海螄)
龙国星海 (山海螄)
λ 演算
March 23, 2016 5 / 17
β归约
λ演算的定义 归约
β-归约规则表达的是函数作用的概念。它陈述了若所有的E’的自由出现在E [V:=E’]中仍然是自由的情况下,有 ((λV.E) E’) == E [V:=E’] 成立。 ==关系被定义为满足上述两条规则的最 小等价关系(即在这个等价关系中减去任何一个映射,它将不再是一个等 价关系)。对上述等价关系的一个更具操作性的定义可以这样获得:只允许 从左至右来应用规则。不允许任何β归约的λ表达式被称为β范式。并非所 有的λ表达式都存在与之等价的范式,若存在,则对于相同的形式参数命名 而言是唯一的。此外,有一个算法用户计算范式,不断地把最左边的形式 参数替换为实际参数,直到无法再作任何可能的规约为止。这个算法当且 仅当λ表达式存在一个范式时才会停止。Church-Rosser定理说明了,当且仅 当两个表达式等价时,它们会在形式参数换名后得到同一个范式。
龙国星海 (山海螄)
λ 演算
March 23, 2016 7 / 17
λ演算
λ演算的定义 归约
λ表达式的唯一形式:x, λy · e, f (a) 例如:
f (x, y) = x + y
λx · λy · x + y 函数求值: f (2, 3)可以表示为:
(λx · λy · x + y)2 3
具体的程序就是一个列表,也叫做规则表,是这样的:
当前内部状态s q0 q1 q2
输入数值i 1 0 0
输出动作o 前移
往纸上写 后移
下一时刻的内部状态s q1 qn qy
Table: 图灵机规则表
龙国星海 (山海螄)
λ 演算
March 23, 2016 13 / 17
λ演算
λ演算与图灵机的计算能力等价
龙国星海 (山海螄)
λ 演算
March 23, 2016 12 / 17
λ演算
λ演算与图灵机的计算能力等价
它工作的时候是这样的:从读写头在纸带上读出一个方格的信息,并 且根据它当前的内部状态开始对程序进行查表,然后得出一个输出动 作,也就是是否往纸带上写信息,还是移动读写头到下一个方格。程 序也会告诉它下一时刻内部状态转移到哪一个。
1 美国数学家阿隆佐·邱奇创建了称为λ演算的方法来定义函数。
2 英国数学家阿兰·图灵创建了可对输入进行运算的理论机器模型,现在 被称为通用图灵机。
3 邱奇以及数学家斯蒂芬·科尔·克莱尼和逻辑学家J. Barkley Rosser一起 定义了一类函数,这种函数的值可使用递归方法计算。
邱奇-图灵论题的非正式表述说:如果某个算法是可行的,那这个算法同样
λ演算表达了两个计算机计算中最基本的概念“代入”和“置 换”。“代入”我们一般理解为函数调用,或者是用实参代替函数中的 形参;“置换”我们一般理解为变量换名规则。“代入”就是用λ演算 中的β−归约概念。而“替换”就是λ演算中的α-变换。函数的作用是 左结合的:
f xy = (f x)y
龙国星海 (山海螄)
λ 演算
龙国星海
山海螄
March 23, 2016
龙国星海 (山海螄)
λ 演算
March 23, 2016 1 / 17
目录
1 邱奇-图灵论题 2 λ演算的定义
归约 3 λ演算与图灵机的计算能力等价
龙国星海 (山海螄)
λ 演算
March 23, 2016 2 / 17
邱奇-图灵论题
邱奇-图灵论题
龙国星海 (山海螄)
λ 演算
March 23, 2016 6 / 17
η-变换
λ演算的定义 归约
前两条规则之后,还可以加入第三条规则,η-变换,来形成一个新的等价 关系。η-变换表达的是外延性的概念,在这里外延性指的是,两个函数对 于所有的参数得到的结果都一致,当且仅当它们是同一个函数。η-变换可 以令λx .f x和f相互转换,只要x不是f中的自由出现。下面说明了为何这条 规则和外延性是等价的: 若f与g外延地等价,即:f a == ga对所有的lambda表达式a成立,则当取a为 在f 中不是自由出现的变量x时,我们有f x == gx,因此λx.f x == λx.gx, 由η-变换f == g。所以只要η-变换是有效的,会得到外延性也是有效的。 相反地,若外延性是有效的,则由beta-归约,对所有 的y有(λx.f x)y == f y,可得λx.f x == f ,即η-变换也是有效的。
开始向右扫描。读到 1 或 0,通过进入不同的状态记住读到的是 1 还 是 0,把已读过的字符记成已读状态。 然后往右找 + ,找到后,再往右找 1 或 0,还是把读过的字符标记成 已读状态。找到后凭借进入不同的状态记住已读到的两个加数分别是 什么。
然后再往右找 =,找到后在 = 右边第一个非 0 或 1 的空位写下记住 的两个加数的和
(λy · 2 + y)3 2+3
如上已经完成了普通加法,这样就结束了
龙国星海 (山海螄)
λ 演算
March 23, 2016 8 / 17
λ演算
λ演算的定义 归约
λ演算系统中合法的字符如下: x1, x2, x3, · · · xn变元 → 归约 ⇔ 等价
λ, (, ) 所有能够在λ演算系统中出现的合法符号只有以上四种,其他符号都是非 法的。例如λx · x + 2,如果没有其他对于+符号的说明,那么这就是一个 非法的λ演算表达式。同时,自然数 2 也需要定义。
λ 演算
March 23, 2016 16 / 17
λ演算与图灵机的计算能力等价
THE END 不足之处,请批评指正
龙国星海 (山海螄)
λ 演算
March 23, 2016 17 / 17
龙国星海 (山海螄)
λ 演算
March 23, 2016 10 / 17
λ演算
λ演算的定义 归约
Church数是在Church编码下的自然数的表示法。表示自然数n的高阶函 数是把任何其他函数 f 映射到它的n重函数复合 f n = f ◦ f ◦ · · · ◦ f 的 函数。 Church数0,1,2,3....在λ演算下的定义为:
可以被图灵机,以及另外两个理论所实现。
龙国星海 (山海螄)
λ 演算
March 23, 2016 3 / 17
λ演算
λ演算的定义
λ演算(lambda calculus)是一套用于研究函数定义、函数应用和递归 的形式系统。它由阿隆佐·邱奇和他的学生斯蒂芬·科尔·克莱尼在20世 纪30年代发明的。
λ演算可以被称为最小的通用程序设计语言。它包括一条变换规则 (变量替换)和一条函数定义方式。
简单说完成加法的图灵机的输入字符集是0、1和+。带字符集是0、1、 +、=、还有空白符。
图灵机程序计算加法的过程: 一开始带上内容是一个二进制加式,比如2+3,读写头在右边的 1 上。
龙国星海 (山海螄)
λ 演算
March 23, 2016 14 / 17
λ演算
λ演算与图灵机的计算能力等价
首先,图灵机将读写头运动到更右一个位置,写下 =,然后运动到原 始位置。