泛代数和代数数据类型-read.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
泛代数和代数数据类型-read

第3章 泛代数和代数数据类型 3.1 引 言 PCF语言可以看成由三部分组成:带函数和积类型的纯类型化(演算、自然数类型和布尔类型、不动点算子。如果用其它的基本数据类型代替自然数类型和布尔类型,如字符类型和串类型,则可以得到有类似类型结构(函数和二元组)的语言,但面向的是不同种类的数据的计算。如果想对PCF作这样的修改,必须决定命名基本的字符和串的一种方式,就象用0,1,2,…命名自然数一样,并选择以字符和串作为操作对象的基本函数,来代替(,Eq?和if…then…else…等。有了这些,就可以定义该语言的表达式的语法。然后,必须写一组等式公理去刻画这些函数,给出该语言的公理语义。一旦有了表达式的语法和公理语义,可以进一步可以选择归约公理,写程序,研究指称语义。 第3章到第5章分别对PCF这样的语言的三个组成部分进行透彻的研究。以达到全面系统了解这样的语言。本章研究像自然数类型和布尔类型这样的代数数据类型。 一个代数数据类型包括一个或多个值集,如自然数集、布尔值集、字符集或串集,再加上一组在这些集合上的函数。对代数数据类型的一个基本限制是其函数不能有函数变元,这就是“代数的”的含义。需要说明的一点是,对于属于一个代数的若干个集合,使用泛代数的标准术语。这样做的主要原因是,既维护和代数方面的文献的一致性,同时强调代数数据类型(由集合和相关的函数组成)和单纯的集合是有区别的。于是,基本“类型”符号,如nat,bool,char和string等,当它们用于代数表达式时,叫做类别(sort)。在代数数据类型理论中,类型和类别的区别是这样,类型有一组运算而类别没有。这个区分和第2章的术语是一致的,因为函数类型和积类型也有一组专门的运算,即(抽象,函数应用,配对和射影。 泛代数(universal algebra),也叫做等式逻辑(equational logic),是用于定义和研究代数数据类型的一般数学框架。在泛代数中,一个代数数据类型的公理语义由项之间的一组等式给出。代数数据类型的指称语义涉及的结构叫做代数,它由一组集合和一组函数组成,对应每个类别有一个集合,对应项中使用的每个函数符号有一个函数。代数项的操作语义由有向的代数等式给出,代数项的归约公理习惯称为重写规则。可以用泛代数定义和研究的数据类型有自然数、布尔值、表、有限集合、多重集合、栈、队列和树等。 本章研究泛代数和它在程序设计中定义常用数据类型时的作用。第2章介绍PCF时集中在公理语义和操作语义,而这一章主要关心公理语义(一组等式)和指称语义(一群代数)之间的联系,而另用单独一节研究操作语义。在研究代数时,大多数逻辑系统中一些公共的议题将被覆盖。本章的主要内容有: (1)代数项和它们在多类别代数中的解释; (2)等式规范(也叫代数规范)和等式证明系统; (3)等式证明系统的可靠性和完备性(公理语义和指称语义的等价); (4)代数之间的同态关系和初始代数; (5)数据类型的代数理论; (6)从代数规范导出的重写规则(操作语义)。 前四部分内容对泛代数的数学系统做一个简明介绍,随后一部分关于数据类型的代数理论的讨论指出了数学中传统的考虑和程序设计中代数数据类型使用之间的一些区别。本章最后一节考虑在代数项上的归约。它有两个应用,第一是分析等式规范的性质,第二是为代数项上的计算建立模型。 注意,本章研究的是泛代数,它是PCF这样的函数式语言的代数数据类型部分,在此不会出现函数作为变元或返回值的情况,因此对它的研究比(演算的研究要容易得多。先研究泛代数而后研究类型化(演算的指称语义的理由是,许多技术概念在泛代数中以更简单和易于理解的形式出现,因而易于讲授和学习。 在数据类型的代数理论中还有许多专题。这里所忽略的重要的专题有:层次规范、参数化规范、从一个规范求精到另一个规范、代数规范的实现的正确性。当讨论函数应用产生错误引起的问题时,解决这方面问题的更复杂的方法,如使用带部分函数或有序类别的代数,在此不考虑。有兴趣的读者可以参考有关文献。 3.2 代数、基调和项 3.2.1 代数 一个代数由叫做载体(carrier)的一个或多个集合、这些载体上的一组特征元素和一阶函数(或叫做代数函数) f : A1 ( …( Ak ( A 组成。例如 N ( ( N, 0, 1, +, (( 其载体N是自然数集合,特征元素0, 1(N,函数+, ( : N ( N ( N。一个载体的“特征”元素和它的其它元素的区别是,在代数项语言中给每个特征元素起一个名字。作为一种简单的说法,把0, 1(N这样的特征元素叫做零元函数。这样做并无深层的意思,仅是为了把特征元素和函数统一。 多个载体的例子如代数 Apcf ( (N, B, 0, 1, …, +, tru

文档评论(0)

zhaoxiaoj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档