问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

λ演算的非形式化的描述

发布网友 发布时间:2022-04-28 22:28

我来回答

1个回答

热心网友 时间:2022-06-24 04:16

在 lambda 演算中,每个表达式都代表一个只有单独参数的函数,这个函数的参数本身也是一个只有单一参数的函数,同时,函数的值是又一个只有单一参数的函数。函数是通过 lambda 表达式匿名地定义的,这个表达式说明了此函数将对其参数进行什么操作。例如,“加 2”函数 f(x) = x + 2 可以用 lambda 演算表示为 λ x. x + 2 (λ y. y + 2 也是一样的,参数的取名无关紧要) 而 f(3) 的值可以写作 (λ x. x + 2) 3。函数的作用 (application) 是左结合的:f x y = (f x) y。考虑这么一个函数:它把一个函数作为参数,这个函数将被作用在 3 上:λ x. x 3。如果把这个 (用函数作参数的) 函数作用于我们先前的“加 2”函数上:(λ x. x 3) (λ x. x+2),则明显地,下述三个表达式:
(λ x. x 3) (λ x. x+2) 与 (λ x. x + 2) 3 与 3 + 2
是等价的。有两个参数的函数可以通过 lambda 演算这么表达:一个单一参数的函数的返回值又是一个单一参数的函数 (参见 Currying)。例如,函数 f(x, y) = x - y 可以写作 λ x. λ y. x - y。下述三个表达式:
(λ x. λ y. x - y) 7 2 与 (λ y. 7 - y) 2 与 7 - 2
也是等价的。然而这种 lambda 表达式之间的等价性无法找到一个通用的函数来判定。
并非所有的 lambda 表达式都可以规约至上述那样的确定值,考虑
(λ x. x x) (λ x. x x)

(λ x. x x x) (λ x. x x x)
然后试图把第一个函数作用在它的参数上。 (λ x. x x) 被称为 ω 组合子 (combinator),((λ x. x x) (λ x. x x)) 被称为 Ω,而 ((λ x. x x x) (λ x. x x x)) 被称为 Ω2,以此类推。
若仅形式化函数作用的注记而不允许 lambda 表达式,就得到了组合子逻辑 (combinatory logic)。 形式化地,我们从一个标识符 (identifier) 的可数无穷集合开始,比如 {a, b, c, ..., x, y, z, x1, x2, ...},则所有的 lambda 表达式可以通过下述以 BNF 范式表达的上下文无关文法描述:
<expr> ::= <identifier>
<expr> ::= (λ <identifier> . <expr>)
<expr> ::= (<expr> <expr>)
头两条规则用来生成函数,而第三条描述了函数是如何作用在参数上的。通常,lambda 抽象 (规则 2) 和函数作用 (规则 3) 中的括号在不会产生歧义的情况下可以省略。如下假定保证了不会产生歧义:(1) 函数的作用是左结合的,和 (2) lambda 操作符被绑定到它后面的整个表达式。例如,表达式 ((λ x. (x x)) (λ y. y)) 可以简写成 (λ x. x x) λ y.y。
类似 λ x. (x y) 这样的 lambda 表达式并未定义一个函数,因为变元 y 的出现是自由的,即它并没有被绑定到表达式中的任何一个 λ 上。变元出现次数的绑定是通过下述规则 (基于 lambda 表达式的结构归纳地) 定义的:
在表达式 V 中,V 是变元,则这个表达式里变元 V 只有一次自由出现。
在表达式 λ V . E 中 (V 是变元,E 是另一个表达式),变元自由出现的次数是 E 中变元自由出现的次数,减去 E 中 V 自由出现的次数。因而,E 中那些 V 被称为绑定在 λ 上。
在表达式 (E E' ) 中,变元自由出现的次数是 E 和 E' 中变元自由出现次数之和。
在 lambda 表达式的集合上定义了一个等价关系 (在此用 == 标注),“两个表达式其实表示的是同一个函数”这样的直觉性判断即由此表述,这种等价关系是通过所谓的“alpha-变换规则”和“beta-消解规则”。
α-变换
Alpha-变换规则表达的是,被绑定变量的名称是不重要的。比如说 λx.x 和 λy.y 是同一个函数。尽管如此,这条规则并非像它看起来这么简单,关于被绑定的变量能否由另一个替换有一系列的*。
Alpha-变换规则陈述的是,若 V 与 W 均为变元,E 是一个 lambda 表达式,同时 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 是一样的。
β-消解
Beta-消解规则表达的是函数作用的概念。它陈述了若所有的 E' 的自由出现在 E [V/E' ] 中仍然是自由的情况下,有
((λ V. E ) E' ) == E [V/E' ]
成立。
== 关系被定义为满足上述两条规则的最小等价关系 (即在这个等价关系中减去任何一个映射,它将不再是一个等价关系)。
对上述等价关系的一个更具操作性的定义可以这样获得:只允许从左至右来应用规则。不允许任何 beta 消解的 lambda 表达式被称为范式。并非所有的 lambda 表达式都存在与之等价的范式,若存在,则对于相同的形式参数命名而言是唯一的。此外,有一个算法用户计算范式,不断地把最左边的形式参数替换为实际参数,直到无法再作任何可能的消解为止。这个算法当且仅当 lambda 表达式存在一个范式时才会停止。Church-Rosser 定理 说明了,当且仅当两个表达式等价时,它们会在形式参数换名后得到同一个范式。
η-变换
前两条规则之后,还可以加入第三条规则,eta-变换,来形成一个新的等价关系。Eta-变换表达的是外延性的概念,在这里外延性指的是,两个函数对于所有的参数得到的结果都一致,当且仅当它们是同一个函数。Eta-变换可以令 λ x . f x 和 f 相互转换,只要 x 不是 f 中的自由出现。下面说明了为何这条规则和外延性是等价的:
若 f 与 g 外延地等价,即,f a == g a 对所有的 lambda 表达式 a 成立,则当取 a 为在 f 中不是自由出现的变量 x 时,我们有 f x == g x,因此 λ x . f x == λ x . g x,由 eta-变换 f == g。所以只要 eta-变换是有效的,会得到外延性也是有效的。
相反地,若外延性是有效的,则由 beta-消解,对所有的 y 有 (λ x . f x) y == f y,可得 λ x . f x == f,即 eta-变换也是有效的。 在 lambda 演算中有许多方式都可以定义自然数,但最常见的还是Church 整数,下面是它们的定义:
0 = λ f. λ x. x
1 = λ f. λ x. f x
2 = λ f. λ x. f (f x)
3 = λ f. λ x. f (f (f x))
以此类推。直观地说,lambda 演算中的数字 n 就是一个把函数 f 作为参数并以 f 的 n 次幂为返回值的函数。换句话说,Church 整数是一个高阶函数 -- 以单一参数函数 f 为参数,返回另一个单一参数的函数。
(注意在 Church 原来的 lambda 演算中,lambda 表达式的形式参数在函数体中至少出现一次,这使得我们无法像上面那样定义 0) 在 Church 整数定义的基础上,我们可以定义一个后继函数,它以 n 为参数,返回 n + 1:
SUCC = λ n. λ f. λ x. f (n f x)
加法是这样定义的:
PLUS = λ m. λ n. λ f. λ x. m f (n f x)
PLUS 可以被看作以两个自然数为参数的函数,它返回的也是一个自然数。你可以试试验证
PLUS 2 3 与 5
是否等价。乘法可以这样定义:
MULT = λ m. λ n. m (PLUS n) 0,
即 m 乘以 n 等于在零的基础上 n 次加 m。另一种方式是
MULT = λ m. λ n. λ f. m (n f)
正整数 n 的前驱元 (predecessesor) PRED n = n - 1 要复杂一些:
PRED = λ n. λ f. λ x. n (λ g. λ h. h (g f)) (λ u. x) (λ u. u)
或者
PRED = λ n. n (λ g. λ k. (g 1) (λ u. PLUS (g k) 1) k) (λ l. 0) 0
注意 (g 1) (λ u. PLUS (g k) 1) k 表示的是,当 g(1) 是零时,表达式的值是 k,否则是 g(k) + 1。 习惯上,下述两个定义 (称为 Church 布尔值) 被用作 TRUE 和 FALSE 这样的布尔值:
TRUE = λ u. λ v. u
FALSE = λ u. λ v. v
断言是指返回布尔值的函数。最基本的一个断言 ISZERO,当且仅当其参数为零时返回真:
ISZERO = λ n. n (λ x. FALSE) TRUE
断言的运用与上述 TRUE 和 FALSE 的定义,使得 if-then-else 这类语句很容易用 lambda 演算写出。 递归是一种以函数自身迭代自身变元的算法,一般是通过函数自身来定义函数的方式实现。表面看来 lambda 演算不允许递归,其实这是一种对递归的误解。考虑阶乘函数 f(n) 一般这样递归地定义:
f(n) = 1, 若 n = 0; n·f(n-1), 若 n>0. FACT = λ n. n (λ u. MULT n (FACT (PRED n))) 1
用 Y-组合子 在 λ语言 中合法地定义:
FACT = Y (λ g. λ n. n (λ u. MULT n (g (PRED n))) 1)
Y = λ f. ((λ x. f (x x)) (λ x. f (x x)))

λ演算的非形式化的描述

(λ x. x x) 被称为 ω 组合子 (combinator),((λ x. x x) (λ x. x x)) 被称为 Ω,而 ((λ x. x x x) (λ x. x x x)) 被称为 Ω2,以此类推。若仅形式化函数作用的注记而不允许 lambda 表达式,就得到了组合子逻辑 (combinatory logic)。 形式化地,我们从一个标识符 (identifier...

什么是波分复用(WDM)技术?

波分复用(WDM)技术是一种在光纤通信中广泛应用的技术,它允许在同一根光纤中同时传输多个不同波长的光信号。这些光信号在发送端通过复用器合并,然后在光纤中传输,最后在接收端通过解复用器分离并恢复成原始信号。WDM技术极大地提高了光纤的传输容量,是现代光通信网络扩容的重要手段。通过这项技术,光纤通信系统能够支持更高的数据传输速率和更多的信道,满足日益增长的通信需求。波分复用(WDM)技术是一种在同一光纤中并行传输多个波长的光信号的技术,可以显著提高光纤网络的传输容量和效率。光派通信在波分传输设备领域拥有丰富的产品线和行业经验,能够为客户提供高质量的DWDM、CWDM等波分设备产品和解决方案,满足不同...

范畴论历史注记

范畴逻辑作为直觉逻辑中类型论的一个明确分支,在计算机科学的函数式编程和域理论中发挥作用,它在笛卡尔闭范畴中为λ演算提供了非形式化的描述。至少可以说,范畴论为这些相关领域中抽象的共同特征提供了精确的表达方式。

算法是指解决问题的一种方法或一个过程

即使在当前,依然常有直觉想法难以定义为形式化算法的情况。要素 数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:1、算术运算:加减乘除等运算。2、逻辑运算:或、且、非...

算法的描述方法

1、算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。2、算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得...

最小生成树kruskal算法

算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。形式化算法的概念部分源自尝试解决希尔伯特提出的...

类型的概述

而代数方法(algebraic approach)是一种非常好的建立类型的形式化规范的方法。代数中的一个类型对应于一系列元素,在它们之上定义代数操作。同时在此基础上二阶λ演算已经被用于继承和模板所支持的模型。在上面两种方法中,类型被认为是一系列满足确定约束条件的元素,更抽象的方式可以把一个类型当作规定一...

表达式表达式的意义

一个表达式必须是形式正确的,即每个运算符都必须有正确的操作数,并且在适当的上下文中使用,例如,2+3就是一个合法的合式表达式,而*2+则不符合算术运算的一般格式,因此是不合法的。表达式及其赋值的概念是20世纪30年代由数学家阿隆佐·邱奇和Stephen Kleene在他们的λ演算中首次形式化。这一理论的...

算法具有五个特性,分别是

形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特・哥德尔、Jacques Herbrand和斯蒂芬・科尔・克莱尼分别于1930年、1934年和1935年提出的递归函数,阿隆佐・邱奇于1936年提出的λ演算,1936年Emil Leon ...

什么是计算机学科?包括哪两个方面?其核心概念有哪些?

37. 远程教学;38. 多数据库系统集成技术研究;39. 以Intention形式化为核心的BDI建模;40. 以机器人足球为标准问题的MAS体系结构与合作规划;41. MAS中的策略协作学习;42. 基于多主体技术的Internet信息检索和用户建模43. 机器学习44. 计算智能:* 遗传算法的理论和应用;* 免疫模型与算法的基本原理...

算法的确定性指的是组成算法的每条

形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques Herbrand和斯蒂芬·科尔克莱尼分别于1930年、1934年和1935年提出的递归函数。阿隆佐邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦图灵1937年...

形式化教育和非形式化教育的区别 非形式化教育和形式化教育 直线非标准形式化标准形式 非形式化的特点 非形式化教育的概念 非形式化教育的特征 非形式化 什么是非形式化方法 前制度化制度化非制度化区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
命真的能算出来吗 电脑键盘怎么改按键 梦见到牙科牙科把牙都弄碎了 荣耀20/20 Pro系统更新优化了哪些相机功能? 如何写网评(体制内)? 网评文章怎么写!把握这5个字就齐活 雷克萨斯rx270可以播放dvd吗 雷克萨斯rx270轮胎 2024时事素材 | 3月时事【作文纸条】 excel打开 run-time error ‘91’ 身上长痘痘是怎么回事啊? 求助Matlab蚁群算法求一般函数极值的算法 手机连不上小米空气净化器2 模拟退火算法解决路径优化 的源代码 身上老是出油~背上长痘痘~是什么原因~怎么办? 求教:蚁群算法选择最短路径问题 小米空气净化器2手机无法连接怎么办? matlab中GA对多参数优化问题 继续蚁群算法 身上长暗疮是什么原因? matlab 多目标优化的实际例子 新手入门教程:MindManager怎么使用? 为什么身上长暗疮?? 身上多处长暗疮,怎么回事 php eta算法的扩展在哪里下载 没毕业可以回本地考教师资格证面试吗? 没毕业能考教师资格证吗? 考教师资格证有地域*吗?我的户口迁来学校了,但还没毕业,我可以在家乡报考教师资格证吗? 重庆市内以及周边有哪些地方好耍的呢? 离重庆比较近的省会有哪些 小米空气净化器2无法连接wifi 在机器学习中有哪些典型的Online算法 1500米远柴油发电机供电能不能实现?大家帮我看一看,最好结合实际经验,不要仅有数字理论 小米空气净化器2无法连接WIFI,求助 matlab蚁群算法路径优化 蚁群算法求解TSP问题遇到“索引超出矩阵维度。”的问题跪求大神能解答 小米空气净化器2经常离线,什么情况 身上长痘是什么原因 小米空气净化器2s怎么连接手机 xgboost的python包有多少参数 身上老是出油背上长痘痘是什么原因? 昨晚安庆上空飞机是怎么回事 华为手机怎么取消游戏免打扰?就是在游戏中收到信息有提示。 急求蚁群算法解决 VRPTW问题的matlab代码,最好是ACS或者MMAS的! 身上长痘痘是什么原因 蚁群算法求解最短路的C#代码 为什么巢湖上空天天有战斗机在飞 是不是安庆军用机场的? 小米空气净化器2怎样连接wifi? 身上长痘痘是什么原因? 安庆市军用飞机频繁飞出为什么?