- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
形式语义教材Ch1基本理论.doc
第一章理论基础
§ 1.1引言
1941年Church创建了 Lambda演算理论。它是一个形式系统,Af作为计算模型,如同 Turing机可作为计算模彻一样。Lambda演算形式系统主要由两部分纟11成:其一是合法表 达式的形式系统,其二是变换规则的形式系统.
Lambda演算系统可有多种。其主要区别在于构成Lambda演算形式系统的两个组成 部分的具体定义上。不同的Lambda演算系统会得到一些不同的定理。Lambda演算系统 如同Turing机系统一样,可描述任何一部分递归函数的计算过程。因此,Lambda演算系统 也可视为一种算法语言系统。其?屮的Lambda表达式相当于语言的一个程序。程序如何 执行,由Lambda演算系统的机制來确定。Lambda演算理论是函数式语言的基础,也是指 称语义学的理论基础。
§ 1.2 Lambda 演算
纯Lambda表达式(以后简称X表达式)是最小的一种表达式,主要由变量名和抽象符 号入以及括号等符号构成。若用X表示变量,用Exp表示纯Lambda表达式之集,则Exp 集的定义如下。
■定义1.2.1. X表达式
x EExp,其中x是变量名。
若 EieExp, E2EExp,贝ij El E2 [Expy
若 E eExp, x是变量,WJXx.E GExp。 ⑷若 E EExp,贝(J (E ) EExp。
若用BNF表示法,则可描述如下(x EVar, E EExp ):
E ::=x | E1E2 | Xx.E |(E)
从上述定义可知纯表达式是非常小的表达式,以致于不能再小。但它将成为人_演 算系统的基础。那么一个作为计算模型的形式系统应具备什么样的条件呢?很显然它起
码应具备二个条件:其一是它有很强的功能,以致于能够描述复杂的计算过程;其二是它应 非常小,以致于其语义是非常清楚的。当然实用性的系统,则应根据需求扩充相应的内容, 但其前提是它们可变换为纯?1_表达式的形式。
在我们这里Lambda演算系统主要是作为函数式语言和指称语义描述语言的基础。
没L为被描述的语言,L0为描述L语义的语言,则我们称L0为元语言。显然,元语言不能 是很复杂的,否则又可提山L0语言的语义是什么?因此,元语言的基础应非常简单。而所 使用的实际元语言则应从简单语言逐步扩充而来,而且其语义是很清楚的。
在我们的人_表达式屮没有常量部分,而且变量是广义的,即它代表的也可以是一函 数。称形如(E1E2)的表达式为施用型表达式,称形如Xx.E的表达式为抽象型表达式。表 达式(E1E2)相当于通常的函数调用f(E),其中f是函数名。现在不一样的是E1不一定是 一个函数名,可以是S杂的表达式,但必须是抽象表达式或代表函数的变量名,如 (ZX.f(X))((?iY.Y)20 ),其中有三个施用型子表达式;
▲(入Y.Y)20 ▲ f(X) ▲ (XX.f(X))( (XY.Y)20 )
抽象表达式主要是用來表示无名蚋数。通常的方法是首先定义蚋数名,然后再使用它, 因此函数都有名,而抽象表达式则表示一无名函数。假设有函数说明fuiKf(X)=X+l,则显 然也可把上述函数的定义写成:f=XX.X+l,并且也能方便地表示哪个是函数名,哪个是形参 名,哪部分是函数体,其中X表示其后的变量为形参变量。这种说明是定义了一个函数名 f。如果不想定义函数名,那么应该怎么办?这好办,只要直接用表达式XX.X+1即可了。这 就是抽象表达式的直接出因。我们称Xx.E中的E表达式为上述抽象表达式的体部分。
为了简单起见,以后将(XY)简写成XY。严格说的话,不能写成XY形式,因为这种写 法,使实现系统将无法识别XY是一个标识符还是两个标识符。但如果假没变量名均由一 个字母组成,则写成XY形式也能够分辨出来是X和Y的两个名字。因此我们以后在一 般情况下将写成XY的形式。
■定义1.2.2.(记法约定)
(1) El E2 E3...En
=(((El E2)E3)…)En (左结合规则)
(2)入xl..A.xn.E
=Xx 1 .(...(Xxn.En)...))
(3)入xl x2...xn.E
=Xxl.Xx2....X.xn.E
(4) Xxl..A.xn.E1 E2…En
=Xxl...X.xn.(El E2...En)
Xx.x(Xx.xx)(Xx.xx) x(入x.xy)例1.2.1.下面是一些简单的表达式例:
Xx.x
(Xx.xx)(Xx.xx) x(入x.xy)
入 xy.x 人 xy.y
入 xy.x(y) xy
单从表达式看,看不出任何意义,因力其中既没有常量也没有函数名,不知道是如何计 算的。但不久我们将会看到这样一个非常简单的系统能够描述杂的计算和推理过程。
■定义1.2.3.子表达式
设E是表达式
原创力文档


文档评论(0)