首页> 中国专利> 一种多类型MSVL语言解释系统及多类型MSVL语言解释方法

一种多类型MSVL语言解释系统及多类型MSVL语言解释方法

摘要

一种多类型MSVL语言解释系统其包括,变量类型声明模块、变量存储模块、算术表达式处理模块、赋值操作处理模块、强制类型转换命令处理模块及框架命令处理模块。在投影时序逻辑中及其程序设计语言MSVL中扩展了多种内置数据类型,增强了MSVL的描述能力,拓展了MSVL的应用领域,使MSVL可以更加灵活广泛地对多数据类型的系统进行建模和验证。本发明将变量的论域定义为取值和类型组成的二元组,将变量和常量的解释定义为二元组,使得每一个变量的类型作为变量的固有性质,提高变量引用的效率。针对于变量和常量的论域以及解释的扩展,给出相关函数和操作符的语义,使扩展类型后与类型相关的函数和运算符与现有的MSVL语句相兼容。

著录项

  • 公开/公告号CN103150199A

    专利类型发明专利

  • 公开/公告日2013-06-12

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201310120181.7

  • 申请日2013-04-08

  • 分类号

  • 代理机构北京科亿知识产权代理事务所(普通合伙);

  • 代理人汤东凤

  • 地址 710071 陕西省西安市太白南路2号西安电子科技大学

  • 入库时间 2024-02-19 19:15:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-03-02

    授权

    授权

  • 2013-07-17

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20130408

    实质审查的生效

  • 2013-06-12

    公开

    公开

说明书

技术领域

本发明属于计算机系统形式化建模与验证技术领域,主要涉及形式化方法对 多数据类型的系统进行建模与验证,具体是一种扩展内置数据类型的MSVL建模 和验证方法和系统,可用于对多数据类型的系统进行建模与验证。

技术背景

时序逻辑作为一种系统建模与验证的形式化工具,已广泛应用于软件工程、 数字电路设计等领域。时序逻辑主要有三大分支:线性时序逻辑(LTL),分支时 序逻辑(CTL)以及区间时序逻辑(ITL)。投影时序逻辑(PTL)对ITL进行了扩 展,基于区间时序逻辑,投影时序逻辑包括无限模型,过去操作,和一个新的投 影操作来处理并发计算。它适用于描述带有时间区间的软硬件系统性质,可以处 理顺序、并发、投影等结构,具有较强、较灵活的表达力。时序逻辑语言MSVL 是PTL的一个可执行子集,是一个集建模(Modeling)、仿真(Simulation)和 验证(Verification)为一体的时序逻辑程序设计语言。时序逻辑程序设计语言 MSVL可以将程序的书写、性质描述和验证统一在时序逻辑的框架中进行,对软硬 件系统使用时序逻辑程序设计语言进行建模,对系统期望的性质采用时序逻辑公 式来描述,将模型和性质统一在时序逻辑的框架中,从而实现对软硬件系统的形 式化验证。

目前,许多现有的软硬件系统都是由主流程序设计语言C、C++编写实现的, 通过开发一些语言转换工具,将C、C++编写的程序转换为MSVL程序,自动实现 MSVL对C语言编写的系统进行描述。然后再利用命题投影时序逻辑对该系统的性 质进行刻画,即可以实现对该系统的建模和验证。目前,我们在语言转换工具方 面的工作已经取得了一定的进展和成果,由于主流的程序设计语言如C、C++以及 Java等语言,都提供了丰富的内置数据类型,如字符型,整型、浮点型等基本类 型,丰富而复杂的内置数据类型使得程序设计语言能够灵活处理不同数据类型的 系统。

自上世纪70年代,大量的时序逻辑程序设计语言相继被提出。时序逻辑是 一种用于描述和验证实时系统实时性的重要方法,很多基于时序逻辑的编程语言 都可以描述和证明同一逻辑框架下的程序。Cactus基于分支时间时序逻辑, XYZ/E,THLP,Chronolog,Tempura以及Tokio基于区间时序逻辑,TLA也是一 种基于时序逻辑行为的描述语言。和上述形式化方法相比,MSVL在建模验证并行 系统等方面具有显著的优势。因为MSVL是一个时序逻辑编程语言,有建模,仿 真和验证三种功能。MSVL中含有丰富的时序操作符和语句,因此可以用于描述系 统的顺序、并发、非确定、非终止、自治、同步通信等特征。同时,MSVL还包括 赋值、条件、循环等语句,具有命令式程序设计语言的特征。使用MSVL语言, 可以完成模型检测中系统建模、性质描述、性质验证等一系列工作,在投影时序 逻辑的基础上,实现一种统一的模型检测方法。作为一种形式化的工具,MSVL语 言已被广泛应用于各种领域的建模与验证中。但是MSVL的数据类型比较单一, 内置基本数据类型仅为整型,不包括浮点型和字符型,存在局限性。因此在投影 时序逻辑和MSVL中扩展数据类型并开发相关的支持工具(例如模型检测器)以 及理论证明均是计算机系统形式化建模与验证技术领域的客观需要,本发明正是 在这方面进行的研究和创新。目前MSVL的基本内置数据类型仅限于整型,描述 能力和表达能力弱,应用不够灵活,不能够根据系统的实际需求提供相应的其他 数据类型,适应面太窄,这严重地限制了MSVL的描述能力和应用领域。因此本 发明的主要内容是扩展MSVL中的基本内置数据类型,实现MSVL对复杂数据类型 构造的系统的建模与验证。

发明内容

本发明针对现有技术中数据类型单一,应用范围窄的技术问题,提供一种在 程序设计语言MSVL中扩展了浮点,字符以及字符串多种内置数据类型的多类型 MSVL语言解释系统及MSVL语言解释方法。

为了实现上述目的,本发明提供了一种多类型MSVL语言解释系统,其包括,

变量类型声明模块,其设置有变量类型声明命令以及类型声明定义,所述变 量类型声明命令以MSVL变量声明语句的形式规定了变量的类型,MSVL包括了 int,float,char以及string四种变量声明语句,扩展类型后MSVL中变量和常 量的论域定义为DOMAIN,DOMAIN中的元素被定义为二元组,二元组的第一个 分量表示变量的取值,而第二个分量标记了变量的类型;

变量存储模块,其设置有变量类型标记和变量取值,所述变量类型标记根据 变量声明语句记录该变量的类型,变量存储变量的取值限制在其类型所对应的论 域内;

算术表达式处理模块,其用于多种类型的数据构造的算术表达式进行运算, 其设置有:加法、减法、乘法、除法和取模运算的定义和处理模块,定义模块规 定了各项算术运算的定义域和值域,算术运算的处理模块对操作数属于定义域的 表达式进行解释,返回结果为相应值域中的一个常量;

赋值操作处理模块,其对赋值操作进行处理,赋值操作符左操作数是变量, 右操作数是算术表达式,调用算术表达式处理模块对右操作数进行解释,然后将 运算结果赋给变量;

强制类型转换命令处理模块,其对算术表达式进行强制类型转换,强制类型 转换命令以MSVL强制类型转换语句的形式修改变量的解释结果的类型和取值; 以及,

框架命令处理模块,其控制变量在未赋值的情况下,自动继承上一状态的取 值。

本发明还提供一种多类型MSVL语言解释方法,其包括以下步骤,

步骤1、用MSVL语言中的类型声明语句对变量进行声明,规定变量的类型, 并且依据变量的所声明的类型及其语义,将所述变量保存在MSVL符号表中;

步骤2、对变量和常量进行引用,对引用变量和常量的形式进行判断,如果 变量和常量是算术表达式中的操作数,则调用算术表达式处理模块对算术表达式 进行运算;如果变量出现在赋值操作中,则调用赋值操作处理模块完成对变量的 赋值操作;如果变量由框架命令声明,则调用框架命令处理模块对变量增加框架 性质;如果有强制类型转换操作,则调用强制类型转换命令处理模块以MSVL强 制类型转换语句的形式修改变量的类型和取值。

在上述技术方案的基础上,MSVL中变量定义为一个二元组,该二元组的第 一个分量表示变量的取值,第二个分量标记变量的类型,变量声明命令以MSVL 语句的形式限制了变量类型,类型声明的定义按如下方式进行:

intx=Δx=<nil,IT>

floaty=Δy=<nil,FT>

charc=Δc=<nil,CT>

strings=Δs=<nil,ST>

其中,int,float,char以及string分别为MSVL中的整型、浮点型、字符 型和字符串型的类型声明语句,nil表示当前状态上变量的取值不确定。

在上述技术方案的基础上,所述算术表达式的处理方法按以下流程进行:

步骤1、对算术表达式的两个操作数进行判断,如果是常量或者变量,直接 解释获取其类型和取值,则执行步骤3,如果操作数为算术表达式,则执行步骤 2;

步骤2、分别对两个操作数调用算术表达式处理模块对操作对象进行处理, 如果返回一个论域内的常量,执行步骤3,否则执行步骤5;

步骤3、对两个操作数是否属于所进行的算术运算的定义域,如果两个操作 数都属于所进行算术运算的定义域,执行步骤4,否则执行步骤5;

步骤4、依据所进行算术运算的运算规则,构造一个新的常量作为运算返回 结果,执行步骤6;

步骤5、语义不满足,向用户提示化简结果为false;

步骤6、算术表达式的处理流程结束。

在上述技术方案的基础上,所述多类型MSVL包括了(int),(float)以及 (string)三种强制类型转换语句,整型强制类型转换命令的调用形式如下:

(int)e (float)e (string)e

操作对象为算术表达式,返回值为相应论域内的常量:其中(int)的定义域 为FLOAT∪CHAR,值域为INT,(float)e的定义域为INT∪CHAR,值域为 FLOAT,(string)的定义域为INT∪FLOAT∪CHAR,值域为STR。

在上述技术方案的基础上,强制类型转换命令的处理方法按以下流程进行:

步骤1、调用算术表达式处理模块对操作对象进行处理,如果算术表达式合 法,则返回所述论域DOMAIN内的常量,否则执行步骤4;

步骤2、对该常量进行判断,如果常量属于该强制类型转换命令的定义域, 那么执行步骤3,否则执行步骤4;

步骤3、构造一个新的常量,其类型设置为强制类型转换命令所对应的类型, 依据不同的强制转换命令设置该常量的取值,将该常量作为强制类型转换结果返 回,执行步骤5;

步骤4、语义不满足,向用户提示化简结果为false;

步骤5、强制类型转换命令的处理流程结束。

在上述技术方案的基础上,赋值语句处理模块对赋值操作x=e进行处理, 规定赋值操作符左操作数x是变量,右操作数e是算术表达式,对于赋值操作符 的执行,流程如下:

步骤1、首先对于变量x和算术表达式e进行解释,判断x和e的类型是否 相等,如果类型相等,执行步骤2,否则执行步骤5;

步骤2、如果变量x和表达式e的类型相等,判断表达式e的取值是否为论 域DOMAIN中的一个常量,如果是,执行步骤3,否则执行步骤5;

步骤3、那么对变量x的取值进行判断,如果变量x的取值为nil时,将e 的取值赋给x,等式x=e满足,赋值操作执行成功;否则执行步骤4;

步骤4、如果x的取值不为nil,那么判断x的取值是否等于e的取值,如果 相等,那么等式x=e满足,赋值操作执行成功赋值操作的执行流程结束;如果 取值不相等,进行步骤5;

步骤5、I[x]≠I[e],向用户提示等式x=e是不满足的。

在上述技术方案的基础上,在扩展了内置数据类型后,MSVL中的变量被 解释为取值和类型两个部分,在每一个状态上,对于加框架的变量的处理按照如 下流程进行:

步骤1、对于每一个加框架的变量,记录其上一个状态的类型标记和取值。 在当前状态上,将变量的类型标记设置为上一个状态上该变量的类型标记,并且 将该变量的取值置为nil,即不确定,执行步骤2;

步骤2、调用变量赋值模块,遍历当前状态上的所有赋值语句,如果变量是 某个赋值操作符的左操作数,执行步骤3,否则执行步骤4;

步骤3、利用赋值操作符处理模块完成对该变量的赋值,执行步骤5;

步骤4、在当前状态上没有被赋值,那么变量的取值自动继承该变量上一个 状态的取值,执行步骤5;

步骤5、加框架变量的处理流程结束。

与现有技术相比较,本发明提出的多类型MSVL语言解释系统和多类型 MSVL语言解释方法可以增强投影时序逻辑程序设计语言MSVL的表达能力,使 得MSVL可以更加灵活广泛地对多数据类型的系统进行建模和验证。与现有方法 相比,本发明优点如下所示:

(1)在投影时序逻辑和MSVL中扩展内置数据类型,增强了MSVL的表达能力, 使得MSVL可以对带有浮点、字符和字符串数据的系统进行描述,拓展了投影时 序逻辑和MSVL建模和验证的系统范围。

(2)将变量和常量的论域定义为取值和类型组成的二元组,并且将变量的解 释定义为二元组,使得每一个变量的类型作为该变量的固有性质,提高了变量进 行运算和赋值的效率。

(3)针对于变量和常量的论域以及解释的扩展,本发明给出了赋值操作符、 算数运算符、强制类型转换函数的语义,使得扩展类型后与类型相关的函数和运 算符与现有的MSVL语句相兼容。

(4)重新定义加框架语句frame的语义,对于加框架的变量,自动继承上一 个状态的类型,提高了赋值操作和算术运算操作的效率。

附图说明

图1为本发明一种多类型MSVL语言解释系统的组成示意图;

图2为本发明中赋值操作符执行的流程图;

图3为本发明中框架操作符执行的流程图。

具体实施方式:

一种多类型MSVL语言解释系统,在现有MSVL语言解释系统中引入了浮 点型和字符型两种内置数据类型,可实现对多数据类型的系统进行自动化建模与 验证,参见图1,多类型MSVL语言解释系统包括变量类型声明模块,其设置有 变量类型声明命令以及类型声明定义,所述变量类型声明命令以MSVL变量声 明语句的形式规定了变量的类型,MSVL包括了int,float,char以及string四 种变量声明语句,扩展类型后MSVL中变量和常量的论域定义为DOMAIN, DOMAIN中的元素被定义为二元组,二元组的第一个分量表示变量的取值,而 第二个分量标记了变量的类型;

变量存储模块,其设置有变量类型标记和变量取值,所述变量类型标记根 据变量声明语句记录该变量的类型,变量存储变量的取值限制在其类型所对应的 论域内;

算术表达式处理模块,其用于多种类型的数据构造的算术表达式进行运算, 其设置有:加法、减法、乘法、除法和取模运算的定义和处理模块,定义模块规 定了各项算术运算的定义域和值域,算术运算的处理模块对操作数属于定义域的 表达式进行解释,返回结果为相应值域中的一个常量;

赋值操作处理模块,其对赋值操作进行处理,赋值操作符左操作数是变量, 右操作数是算术表达式,调用算术表达式处理模块对右操作数进行解释,然后将 运算结果赋给变量;

强制类型转换命令处理模块,其对算术表达式进行强制类型转换,强制类 型转换命令以MSVL强制类型转换语句的形式修改变量的解释结果类型和取值; 以及,

框架命令处理模块,其控制变量在未赋值的情况下,自动继承上一状态的 取值。

下面介绍基于本发明多类型MSVL语言解释系统的一种多类型MSVL语言 解释方法,可用于对多数据类型的系统进行建模与验证,多类型MSVL语言解 释方法按以下流程进行:

步骤1、用MSVL语言中的类型声明语句对变量进行声明,规定变量的类 型,并且依据变量的所声明的类型及其语义,将所述变量保存在MSVL符号表 中;

步骤2、对变量和常量进行引用,对引用变量和常量的形式进行判断,如果 变量和常量是算术表达式中的操作数,则调用算术表达式处理模块对算术表达式 进行运算;如果变量出现在赋值操作中,则调用赋值操作处理模块完成对变量的 赋值操作;如果变量由框架命令声明,则调用框架命令处理模块对变量增加框架 性质;如果有强制类型转换操作,则调用强制类型转换命令处理模块以MSVL 强制类型转换语句的形式修改变量的类型和取值。

本发明的实现在于重新定义变量和常量的论域:为了在投影时序逻辑中扩展 得到整型,浮点型以及字符型等内置数据类型,需要在投影时序逻辑中给出如下 基本的集合定义:

整数集合:Z={...,-1,0,1,....}

非负整数集合:N={0,1,2,3,...}

浮点数集合:

F={y1.y2|y1∈Z∧y2∈N∧|y1.y2|*10i=|y1|*10i+y2∧i=sizeof(y2)}

数字集合:DIGIT={0,1,2,3,4,5,6,7,8,9}

字母集合:ALPHA={a,...,z,A,....,Z}

符号集合:SYMBOL={!,,#,$,%,^,&,*,(,),...}

字符集合:C=DIGIT∪ALPHA∪SYMBOL

字符串集合:S=C*

布尔集合:B={true,false}

其中sizeof(x)表示x的位数。而当一个变量或者常量的取值属于不同的集合 时,为了区别常量和变量,也应该对该变量或常量的类型进行约束,每一个变量 或常量需要有一个类型标志,变量类型标志的论域定义如下:

T={IT,FT,CT,ST,NULL}

其中,IT为整型的标志,FT为浮点型的标志,CT为字符型的标志,而ST 为字符串类型的标志,NULL表示该变量或常量的类型不确定。

在投影时序逻辑和MSVL中,变量和常量的论域中的元素都是一个二元组, 包括取值和类型两个部分。基于上述集合整型、浮点型、字符型和字符串型变量 和常量的论域定义如下:

整型变量和常量的论域:INT=(Z∪{nil})×{IT}

浮点型变量和常量的论域:FLOAT=(F∪{nil})×{FT}

字符型变量和常量的论域:CHAR=(C∪{nil})×{CT}

字符串型变量和常量的论域:STR=(S∪{nil})×{ST}

投影时序逻辑中,基本变量和常量的论域DOMAIN的定义如下:

DOMAIN=INT∪FLOAT∪CHAR∪STR∪{<nil,NULL>}

本发明的实现在于重新定义变量和常量的解释:

将一个基本变量x(x∈V)在DOMAIN(DOMAIN=Value×Type)上的解释定 义为二元组<IVal,IType>,用来表示在状态sk上对变量的解释,用表示在状 态sk上对变量取值的解释,用表示在状态sk上对变量类型的解释。

是对变量x赋一个在D中的取值,类型扩展后:

D=Z∪F∪C∪S∪{nil}

为对变量x定义一个变量类型,而变量类型的取值在集合T中:

T={IT,FT,CT,ST,NULL}

将一个变量x在DOMAIN(DOMAIN=Value×Type)上的解释定义为二元组 <IVal,IType>,对静态变量在一个区间上的解释,规定静态变量的在时序区间上 的所有状态上保持不变:

I[a]=sk[a]=Ivk[a]=<IValk[a],ITypek[a]>=<Ivali[a],ITypei[a]>

而动态变量的取值在时序区间上是不同的:

I[x]=sk[x]=Ivk[x]=<IValk[x],ITypek[x]>

本发明将变量和常量的论域定义为取值和类型组成的二元组,并且将变量的 解释定义为二元组,使得每一个变量的类型作为该变量的固有性质,提高了变量 进行运算和赋值的效率。

本发明的实现在于:MSVL中变量定义为一个二元组,该二元组的第一个分 量表示变量的取值,第二个分量标记变量的类型,变量声明命令以MSVL语句 的形式限制了变量类型,类型声明的定义按如下方式进行:

intx=Δx=<nil,IT>

floaty=Δy=<nil,FT>

charc=Δc=<nil,CT>

strings=Δs=<nil,ST>

其中,int,float,char以及string分别为MSVL中的整型、浮点型、字符 型和字符串型的类型声明语句,利用类型声明语句对一个变量进行声明,实际上 是将该变量定义为一个包括取值和类型的二元组,二元组的第一个分量记录了该 变量在当前状态上的取值,变量的初始取值为nil,即变量的取值不确定,二元 组的第二个分量记录了变量的类型,而变量的类型则取决于于定义它的语句,IT 为整型标志,FT为浮点型标志,CT为字符型标志,而ST为字符串类型标志。

引入类型后,每个变量都是先声明后引用,声明规定了变量的类型,这样在 其他语句中引用时,可以直接对变量进行解释获取变量的类型,从而提高了程序 的执行效率。

在投影时序逻辑程序设计语言中扩展了内置数据类型后,表达式的定义为:

算术表达式可以是常量、变量的取值或函数返回值。扩展类型后的表达式包 括整型表达式、浮点型表达式、字符型表达式、字符串表达式。

e::=a|x|Οx|Θx|f(e1,...,em)

布尔表达式的递归定义如下:

如果e1和e2是算术表达式,那么下列结构属于关系表达式:

e1>e2,e1≥e2,e1<e2,e1≤e2,e1=e2,e1≠e2

一个关系表达式是一个布尔表达式;

布尔常量“true”和“false”是布尔表达式。

如果b1和b2是布尔表达式,那么下列结构也是布尔表达式:

算术表达式处理模块针对数据类型的扩展,对于不同的类型,定义该类型上 的可以进行的算术运算操作,算术表达式处理模块对算术表达式的加法、减法、 乘法、除法和取模运算进行处理。其中模运算的定义域为INT×INT,值域为INT。 加法、减法、乘法和除法运算的定义域为(INT×INT)∪(FLOAT×FLOAT),值 域为INT∪FLOAT。算术运算返回结果为相应值域中的一个常量。算术表达式 的处理方法按以下流程进行:

步骤1、对算术表达式的两个操作数进行判断,如果是常量或者变量,直接 解释获取其类型和取值,则执行步骤3,如果操作数为算术表达式,则执行步骤 2;

步骤2、分别对两个操作数调用算术表达式处理模块对操作对象进行处理, 如果返回一个论域内的常量,执行步骤3,否则执行步骤5;

步骤3、对两个操作数是否属于所进行的算术运算的定义域,如果两个操作 数都属于所进行算术运算的定义域,执行步骤4,否则执行步骤5;

步骤4、依据所进行算术运算的运算规则,构造一个新的常量作为运算返回 结果,执行步骤6;

步骤5、语义不满足,向用户提示化简结果为false;

步骤6、算术表达式的处理流程结束。

本发明的实现还在于:强制类型转换命令处理模块对算术表达式进行强制 类型转换,强制类型转换命令以MSVL强制类型转换语句的形式修改变量的类 型和取值,返回值为相应转换类型的常量。MSVL包括了(int),(float)以及 (string)三种强制类型转换语句。整型强制类型转换命令的调用形式如下:

(int)e (float)e (string)e

操作对象为算术表达式,返回值为相应论域内的常量:其中(int)的定义域 为FLOAT∪CHAR,值域为INT,(float)e的定义域为INT∪CHAR,值域为 FLOAT。(string)的定义域为INT∪FLOAT∪CHAR,值域为STR。强制类型转 换命令的处理方法按以下流程进行:

步骤1、调用算术表达式处理模块对操作对象进行处理,如果算术表达式合 法,则返回所述论域DOMAIN内的常量,否则执行步骤4;

步骤2、对该常量进行判断,如果常量属于该强制类型转换命令的定义域, 那么执行步骤3,否则执行步骤4;

步骤3、构造一个新的常量,其类型设置为强制类型转换命令所对应的类型, 依据不同的强制转换命令设置该常量的取值,将该常量作为强制类型转换结果返 回,执行步骤5;

步骤4、语义不满足,向用户提示化简结果为false;

步骤5、强制类型转换命令的处理流程结束。

本发明的实现还在于:赋值语句处理模块对赋值操作进行处理,规定赋值 操作符左边必须是变量,右边必须是表达式。赋值操作符是等价语句的一个特例。 在扩展了内置数据类型后,对于变量x以及表达式e的解释都变成了值和类型两 部分。参见图2,对于一个赋值操作符的执行,流程如下:

赋值语句处理模块对赋值操作x=e进行处理,规定赋值操作符左操作数x是 变量,右操作数e是算术表达式,对于赋值操作符的执行,流程如下:

步骤1、首先对于变量x和算术表达式e进行解释,判断x和e的类型是否 相等,如果类型相等,执行步骤2,否则执行步骤5;

步骤2、如果变量x和表达式e的类型相等,判断表达式e的取值是否为论 域DOMAIN中的一个常量,如果是,执行步骤3,否则执行步骤5;

步骤3、那么对变量x的取值进行判断,如果变量x的取值为nil时,将e 的取值赋给x,等式x=e满足,赋值操作执行成功;否则执行步骤4;

步骤4、如果x的取值不为nil,那么判断x的取值是否等于e的取值,如果 相等,那么等式x=e满足,赋值操作执行成功赋值操作的执行流程结束;如果 取值不相等,进行步骤5;

步骤5、I[x]≠I[e],向用户提示等式x=e是不满足的。

针对于变量和常量的论域以及解释的扩展,本发明给出了赋值操作符、算 数运算符、强制类型转换函数的语义,使得扩展类型后与类型相关的函数和运算 符与现有的MSVL语句相兼容。

在扩展了内置数据类型后,MSVL中的变量被解释为取值和类型两个部分, 在每一个状态上,参见图3,对于加框架的变量的处理按照如下流程进行:

步骤1、对于每一个加框架的变量,记录其上一个状态的类型标记和取值。 在当前状态上,将变量的类型标记设置为上一个状态上该变量的类型标记,并且 将该变量的取值置为nil,即不确定,执行步骤2;

步骤2、调用变量赋值模块,遍历当前状态上的所有赋值语句,如果变量是 某个赋值操作符的左操作数,执行步骤3,否则执行步骤4;

步骤3、利用赋值操作符处理模块完成对该变量的赋值,执行步骤5;

步骤4、在当前状态上没有被赋值,那么变量的取值自动继承该变量上一个 状态的取值,执行步骤5;

步骤5、加框架变量的处理流程结束。

本发明重新定义加框架语句frame的语义,对于加框架的变量,自动继承 上一个状态的类型,提高了赋值操作和算术运算操作的效率。

综上,本发明扩展了投影时序逻辑,定义了变量和常量的论域,并且重新定 义了变量的解释;本发明在投影时序逻辑程序设计语言MSVL中扩展了内置数据类 型,定义了变量的类型声明语句,赋值操作符、算术运算符及相关函数和框架语 句的语义,使得扩展类型后与类型相关的函数和运算符与现有的MSVL语句相兼 容。

本发明提出的多类型MSVL语言解释系统和方法,在投影时序逻辑中及其 程序设计语言MSVL中扩展了多种内置数据类型,增强了MSVL的描述能力,拓展 了MSVL的应用领域,使得MSVL可以更加灵活广泛地对多数据类型的系统进行建 模和验证。本发明将变量的论域定义为取值和类型组成的二元组,并且将变量和 常量的解释定义为二元组,使得每一个变量的类型作为变量的固有性质,提高了 变量引用的效率。针对于变量和常量的论域以及解释的扩展,本发明给出了相关 函数和操作符的语义,使得扩展类型后与类型相关的函数和运算符与现有的 MSVL语句相兼容。对于加框架的变量,自动继承上一个状态的类型提高了赋值 操作的效率。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号