您好、欢迎来到现金彩票网!
当前位置:神州彩票app下载 > 公理语义 >

代数语义学

发布时间:2019-04-30 21:13 来源:未知 编辑:admin

  形式语义学的一个分支,用代数方法研究计算机语言的语义。它把计算机语言形式地定义为满足某种公理体系的抽象代数结构,然后利用这种代数结构的性质来证明用该语言编写的程序的正确性。

  代数语义学始于对抽象数据类型的研究。数据类型是计算机语言中的重要组成部分。但在60年代中期以前一直缺少科学的定义。它被认为仅仅是一些数据的集合,这种观点不能反映数据类型的内在数学特性,因而不能用来检验程序的正确性。1967年问世的SIMULA67语言,第一次提出类程的概念,把数据和被允许施行于这些数据之上的运算结合起来,它是现代抽象数据类型的开始,但当时未引起足够重视。70年代初,软件危机促使人们去研究编写和验证正确的程序的理论和技术。在当时出现的一些新语言中,进一步把数据类型的特性与它的具体表示及实现方式分开来,提高了它的抽象程度。在这种思想指导下,用代数结构描述数据类型的语法,用公理体系描述数据类型的语义,就形成了完整的抽象数据类型,并出现了研究这种结构的代数语义学。

  基调和Σ代数用S表示由一组称为类子的元素构成的集合,用O表示由一组运算符构成的集合,则O中每一元素均可表示为:

  其中Si∈S(1≤i≤k+1),箭头左边是运算的变元,右边是运算的结果。变元可以为空集,此时它是零元运算符。对偶Σ=(S,O)称为基调,它确定数据类型的基本语法结构。

  Σ代数是一种非齐性代数。非齐性代数是比克霍夫和李普森在1970年作为对以前的齐性代数的推广而提出的。在这种代数里,元素集被分成几个互不相交的子集。每个代数运算均以特定的子集为其定义域和值域。非齐性代数是代数语义学的主要工具。

  例如,为了定义数据类型“整数堆”,需要三种类子:S1=bag,S2=int,S3=bool和四个运算符

  的一个同态映射, 如果把它看成态射,则对应于同一基调的所有Σ代数构成一个范畴。

  如果存在一个Σ代数,表为Σ1,它属于以某个Σ为基调的范畴C,使得对C中的每个Σ代数Σi都存在一个唯一的同态映射φi:Σ1─→Σi,则称Σ1为C中的初始代数。如果存在另一个Σ代数Σ2,使得对C中每个Σj,都存在一个唯一的同态映射φj:Σj─→Σ2,则称Σ2为C中的终结代数。初始代数和终结代数在同构意义下都是唯一的。

  在上面所说的情况下,这两种代数都是存在的。若载体集A中的任何元素彼此都不等价,即可得初始代数,又称项代数。如果每个类子Si只对应一个元素ɑi,即可得终结代数。

  就是这个范畴中的初始代数,它被用来定义抽象数据类型的语义。初始代数只是抽象数据类型(

  程序设计语言的代数语义把一个程序设计语言看成是抽象数据类型,就可以用代数方法来描述它的语义。具体作法是:使每个语法符号对应S中的一个类子,每个语法规则对应O中的一个运算。又使语义关系对应公理系统E。但这样做还有一个困难,即上下文条件难以表达。为此要把同态映射扩充为弱同态,即允许同态映射由部分函数实现。在一定的条件下,弱同态意义下的终结代数是存在的,并等价于程序的最小不动点语义。[1]

  互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。

  登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。

http://39-5963.net/gongliyuyi/77.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有