CN116150005B - 基于扩展Lustre语言的模型形式化验证方法 - Google Patents
基于扩展Lustre语言的模型形式化验证方法 Download PDFInfo
- Publication number
- CN116150005B CN116150005B CN202310066963.0A CN202310066963A CN116150005B CN 116150005 B CN116150005 B CN 116150005B CN 202310066963 A CN202310066963 A CN 202310066963A CN 116150005 B CN116150005 B CN 116150005B
- Authority
- CN
- China
- Prior art keywords
- lustre
- model
- language
- extended
- kind2
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- VQLYBLABXAHUDN-UHFFFAOYSA-N bis(4-fluorophenyl)-methyl-(1,2,4-triazol-1-ylmethyl)silane;methyl n-(1h-benzimidazol-2-yl)carbamate Chemical compound C1=CC=C2NC(NC(=O)OC)=NC2=C1.C=1C=C(F)C=CC=1[Si](C=1C=CC(F)=CC=1)(C)CN1C=NC=N1 VQLYBLABXAHUDN-UHFFFAOYSA-N 0.000 title claims abstract description 102
- 238000012795 verification Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000006243 chemical reaction Methods 0.000 claims abstract description 62
- 238000013499 data model Methods 0.000 claims abstract description 33
- 238000001914 filtration Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 230000000007 visual effect Effects 0.000 claims description 4
- 238000003491 array Methods 0.000 claims description 2
- 238000007689 inspection Methods 0.000 abstract description 4
- 238000011161 development Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于扩展Lustre语言的模型形式化验证方法,属于代码溯源领域。本发明通过构建抽象语法树,遍历语法树提取数据模型同时完成语言转换,根据数据模型规则检查通过后,将转换后的模型和属性输入Kind2工具进行属性的形式化验证;通过构建抽象语法树,可将扩展Lustre模型和属性转换为易访问的树型结构,同时完成扩展Lustre模型和属性的语法语义检查;遍历抽象语法树抽取中间模型的同时可完成语言转换;通过语言转换模块可将扩展Lustre语言模型转换为Kind2工具识别的语言格式,从而复用现有成熟的Kind2模型检测器实现形式化验证。该方法主要是利用模型转换方法完成扩展Lustre模型的规则检查和语言转换,从而将扩展Lustre语言的模型形式化验证方法应用于自研OnModel工具。
Description
技术领域
本发明属于代码溯源领域,具体涉及一种基于扩展Lustre语言的模型形式化验证方法。
背景技术
随着嵌入式软件功能日趋复杂,各种软件缺陷和漏洞难以避免,这就是常说的“软件可信任”问题。软件的“可信”是指软件系统的动态行为及其结果总是符合人们的预期。尤其是航空、航天、交通等安全关键领域,软件缺陷带来的生命和财产损失不可估量。传统保证软件可信的手段是软件测试技术,但是软件测试技术只能发现软件的错误,而无法证明软件的正确。在模型驱动开发领域更是如此,软件设计模型作为模型驱动开发的基础,其有效性和一致性若无法保障,势必影响软件质量。形式化验证方法被认为是保证软件质量的重要手段。
在机载软件开发领域,基于模型的软件开发已经成为了重要的研制方向,同时模型的形式化验证逐渐成为研究热点。2011年,针对模型的开发和验证,美国航空无线电技术委员在DO-178C系列中补充了DO-331(基于模型开发&验证)和DO-333(形式化方法)。
SCADE是唯一支持DO-178C适航标准同时支持形式化验证的商业工具。在国内外,SCADE在航空、航天、轨道交通、核电等领域广泛应用。SCADE工具所用的Scade建模语言是形式化的同步语言,Scade建模语言融合了Lustre和Esterel的语言特性,在Lustre语言的基础上扩展了状态机特性,能同时描述数据流和控制流。
目前国外以Lustre为建模语言的形式化验证工具比较完善,如Kind,Kind2,Pkind,Jkind等,但是工具所用模型语言为Lustre,且工具之间的Lustre语言标准不统一。国内形式化验证工具仍较少,在一已发表的论文“冉丹,陈哲,孙毅,杨志斌.基于程序转化的SCADE模型检测[J].计算机科学,2021,48(12):125-130.”中,冉丹等提出一种基于程序转化的SCADE模型检测,通过将Scade程序转换为Lustre程序,可复用现有较成熟的模型检测工具。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于扩展Lustre语言的模型形式化验证方法,以解决国外以Lustre为建模语言的形式化验证工具比较完善,但是工具所用模型语言为Lustre,且工具之间的Lustre语言标准不统一,国内形式化验证工具仍较少的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于扩展Lustre语言的模型形式化验证方法,该方法包括如下步骤:
S1:设计扩展Lustre语言的文法规则,并通过巴科斯范式(Backus-Naur Form,BNF)表示,将扩展Lustre语言文本转化为易访问的树型结构,即抽象语法树;
S2:遍历抽象语法树,进行数据模型抽取,遍历的同时进行语言转换;
S3:遍历数据模型对OnModel工具定义的模型和属性规则进行规则检查,输出Lustre文件;
S4:将Lustre文件输入Kind2工具进行形式化验证,并处理Kind2工具返回的形式化验证结果。
进一步地,所述步骤S1具体包括:
S11:根据扩展Lustre语言规范设计ANTLR语法文件,包括:文法规则和词法规则,并使用BNF表示;
S12:输入文法文件,通过ANTLR软件自动生成抽象语法树及其监听器和访问器,通过继承访问器接口的实现自定义树节点的visit方法,形成抽象语法树的自定义遍历器。
进一步地,所述步骤S11中,文法输入文件中的基本文法结构和要转换的文法结构,包括:包(package)结构、类型(type_block)结构、操作符(user_op_decl)结构、表达式(expr)结构。
进一步地,定义顶层结构为包,包通过package关键字声明,end为结尾,通过visibility表示包的可见性,包包含0或多个声明,声明部分包含包、类型和操作符;定义类型结构,类型通过type关键字声明,基本类型包括:bool、char、int8、uint8、int16、uint16、int32、uint32、int64、uint64、float32、float64、数组和结构体;定义操作符结构,包括:操作符的类型、输入输出以及操作符体的结构,其中操作符体包括:等式,等式的左侧为变量名,右侧为表达式,操作符中涉及的各种基础算子在表达式中定义;定义表达式expr的结构,包括需要进行语言转换的四种算子,分别是pre、fby、<>、XOR。
进一步地,所述步骤S2具体包括:
S21:通过自定义遍历器遍历抽象语法树,并以键值对的形式保存所有变量的变量名和变量类型,并过滤掉抽象语法树中的终结符,形成结构化和层次化的数据模型;
S22:遍历的同时根据转换算法对树节点中的数据类型、算子、结构、状态机、属性进行语言转换。
进一步地,所述步骤S21具体包括:遍历抽象语法树,将抽象语法树中所有输入、输出、局部变量按照<ID,Type>的键值对形式进行存储,ID表示变量名,Type表示变量类型,并过滤掉终结符,形成包含<ID,Type>的键值对和过滤后的树结构的数据模型,终结符包括:RETURNS、SEMI、ASSIGN和END。
进一步地,所述步骤S22中,类型转换包括:Kind2所支持的数据类型为bool、int、real三种,而OnModel工具所用扩展Lustre语言参考SCADE语言对数据类型进行了细化,支持:int8、int16、int32、int64、uint8、uint32、uint64、float32、float64;因此需要将整型类型int8、int16、int32、int64、uint8、uint16、uint32、uint64、char转换为int类型,浮点型类型float32、float64转换为real类型,bool类型保持不变;所述步骤S22中,算子转换包括:将运算中对符号表示不一致的算子进行了替换,and/or/not替换为&&/||/!、lsl/lsr替换为lsh/rsh,将Kind2中未覆盖的算子进行等价语义替换,未覆盖的算子包括:异或xor、不等于<>和fby。
进一步地,所述步骤S22中,结构转换包括:针对扩展Lustre模型中存在的包结构:package id<code>end和open id;Kind2中Kind2中无包结构,将不同包中的代码转移到同一个包下,同时对包中的所有全局变量、局部变量和节点名称添加id前缀,同时删除原有语句;属性转换包括:将属性表达式添加check关键字。
进一步地,所述步骤S3具体包括:遍历数据模型,根据OnModel工具预定义的模型规则和属性规则进行规则检查,保证扩展Lustre模型和属性的正确性,规则检查通过后,输出经过语言转换且符合Kind2输入规范的Lustre文件。
进一步地,所述步骤S4具体包括:将Lustre文件输入到Kind2工具中,解析Kind2的返回的JSON结果,并解析为JSON数据格式返回到OnModel建模平台
(三)有益效果
本发明提出一种基于扩展Lustre语言的模型形式化验证方法,本发明基于扩展Lustre语言的模型形式化验证方法至少具有以下有益效果其中之一或其中一部分:
(1)根据扩展Lustre语言设计了文法规则,并通过巴科斯范式(Backus-NaurForm,BNF)表示,在构建抽象语法树的同时可完成扩展Lustre模型的语法检查;
(2)构建了结构化和层次化的数据模型,遍历数据模型可同时完成规则检查和语言转换;
(3)在语言转换部分完成了类型转换、算子转换、结构转换和属性转换;
(4)在OnModel建模平台中成功应用了Kind2工具,完成扩展Lustre语言的模型形式化验证。
本发明复用现有成熟的Kind2模型检测器实现形式化验证,该方法利用模型转换方法完成扩展Lustre模型的规则检查和语言转换,从而将扩展Lustre语言的模型形式化验证方法应用于自研OnModel工具。
附图说明
图1为OnModel形式化验证流程图;
图2为扩展Lustre模型转换方法流程图;
图3为访问者模式下的抽象语法树遍历过程;
图4为在OnModel建模工具建的图形化模型。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明面向软件代码溯源领域,给出一种基于扩展Lustre语言的模型形式化验证方法,利用模型转换方法完成扩展Lustre模型的规则检查和语言转换,将扩展Lustre语言模型的形式化验证方法应用于自研OnModel工具。
为了将基于扩展Lustre语言的模型形式化验证方法应用于OnModel建模平台,本发明提供了一种基于扩展Lustre语言的模型形式化验证方法,通过模型转换方法完成模型的规则检查,规则检查通过后将扩展Lustre语言转换为Kind2的Lustre输入语言,从而把现有成熟的形式化验证工具复用到OnModel建模平台。
本发明给出了一种基于扩展Lustre语言的模型形式化验证方法,该方法通过构建抽象语法树,遍历语法树提取数据模型同时完成语言转换,根据数据模型规则检查通过后,将转换后的模型和属性输入Kind2工具进行属性的形式化验证;通过构建抽象语法树,可将扩展Lustre模型和属性转换为易访问的树型结构,同时完成扩展Lustre模型和属性的语法语义检查;遍历抽象语法树抽取中间模型的同时可完成语言转换,中间模型过滤了树结构中无用的终结符信息,使抽象语法树变为更层次化和结构化的数据模型,进而遍历数据模型完成扩展Lustre模型的规则检查;通过语言转换模块可将扩展Lustre语言模型转换为Kind2工具识别的语言格式,从而复用现有成熟的Kind2模型检测器实现形式化验证。该方法主要是利用模型转换方法完成扩展Lustre模型的规则检查和语言转换,从而将扩展Lustre语言的模型形式化验证方法应用于自研OnModel工具。
本发明实现了一种基于扩展Lustre语言的模型形式化验证方法,该方法包括如下步骤:
S1:设计扩展Lustre语言的文法规则,并通过巴科斯范式(Backus-Naur Form,BNF)表示,将扩展Lustre语言文本转化为易访问的树型结构,即抽象语法树;
S2:遍历抽象语法树,进行数据模型抽取,遍历的同时进行语言转换;
S3:遍历数据模型对OnModel工具定义的模型和属性规则进行规则检查,输出Lustre文件;
S4:将Lustre文件输入Kind2工具进行形式化验证,并处理Kind2工具返回的形式化验证结果。
所述S1具体包括:
S11:根据扩展Lustre语言规范设计ANTLR语法文件,包括:文法规则和词法规则,并使用BNF表示;
S12:输入语法文件,通过ANTLR自动生成抽象语法树的监听器和访问器,通过继承访问器接口的实现自定义树节点的visit方法,形成抽象语法树的自定义遍历器。
所述S2具体包括:
S21:通过自定义的访问器,遍历抽象语法树,通过键值对的形式保存所有变量的变量名和变量类型,并过滤掉抽象语法树中的终结符,形成结构化和层次化的数据模型;
S22:遍历的同时根据转换算法对树节点中的数据类型、算子、结构、属性进行语言转换。
所述S3具体包括:遍历数据模型,根据预定义的模型规则和属性规则进行规则检查,保证扩展Lustre模型的正确性,规则检查通过后,输出经过语言转换且符合Kind2输入规范的Lustre文件。
所述S4包括:将Lustre文件输入到Kind2工具中,解析Kind2的返回结果,并解析为JSON数据格式返回到OnModel建模平台。
实施例1:
本发明提供一种基于扩展Lustre语言的模型形式化验证方法,结合图1至图2所示,所述形式化验证方法,包括:
操作S1:设计扩展Lustre语言的文法规则,并通过巴科斯范式(Backus-NaurForm,BNF)表示,将符合文法规则的扩展Lustre语言文本转化为易访问的树型结构,即抽象语法树;
操作S11:根据扩展Lustre语言规范设计ANTLR软件的文法输入文件,包括语法规则和词法规则,并使用BNF表示;其中,文法输入文件中的基本文法结构和要转换的文法结构,包括:包(package)结构、类型(type_block)结构、操作符(user_op_decl)结构、表达式(expr)结构。
(1)定义顶层结构为包,包通过package关键字声明,end为结尾,通过visibility表示包的可见性,包可包含0或多个声明,声明部分包含包、类型和操作符等,BNF表示如下
program:(decls)*;
package_decl:PACKAGE(visibility)?ID(decls)*END SEMI;
visibility:PUBLIC|PRIVATE;
decls:OPEN path SEMI|package_decl|type_block|user_op_decl;
(2)定义类型type_block的结构,类型通过type关键字声明,基本类型包含bool、char、int8、uint8、int16、uint16、int32、uint32、int64、uint64、float32、float64、数组、结构体:
(3)定义操作符user_op_decl的结构,定义了操作符的类型(op_kind)、输入输出(params)以及操作符体(opt_body)的结构等,其中操作符体中最重要的是等式(equation),等式的左侧为变量名(lhs),右侧为表达式(expr),操作符中涉及的各种基础算子等在表达式(expr)中定义,BNF表示如下:
user_op_decl:op_kind ID params RETURNS params opt_body;
op_kind:FUNCTION|NODE;
params:LPAREN(var_decls(SEMI var_decls)*)?RPAREN;
opt_body:SEMI|equation SEMI;
equation:simple_equation;
simple_equation:lhs ASSIGN expr;
lhs:LPAREN RPAREN|lhs_id(COMMA lhs_id)*;
lhs_id:ID;
(4)定义表达式expr的结构,下面罗列了后面所需要进行语言转换的四种算子,分别是pre、fby、<>、XOR,BNF表示如下:
expr:tempo_expr|expr bin_relation_op expr|expr bin_bool_op expr|exprARROW expr;
tempo_expr:PRE expr|FBY LPAREN expr SEMI expr SEMI expr RPAREN;
bin_relation_op:NOT_EQ;
bin_bool_op:XOR;
操作符S12:输入文法文件,通过ANTLR软件自动生成抽象语法树及其监听器和访问器,通过继承访问器接口的实现自定义树节点的visit方法,形成抽象语法树的自定义遍历器,如图3所示。
S2:遍历抽象语法树,进行数据模型抽取,遍历的同时进行语言转换;
操作S21:通过自定义遍历器遍历抽象语法树,并以键值对的形式保存所有变量的变量名和变量类型,并过滤掉抽象语法树中的终结符,形成结构化和层次化的数据模型;
遍历抽象语法树,将抽象语法树中所有输入、输出、局部变量按照<ID,Type>的键值对形式进行存储,ID表示变量名,Type表示变量类型,并过滤掉RETURNS、SEMI、ASSIGN、END等终结符,形成包含<ID,Type>的键值对和过滤后的树结构的数据模型。
操作S22:遍历的同时根据转换算法对树节点中的数据类型、算子、结构、状态机、属性进行语言转换。
类型转换:Kind2所支持的数据类型为bool、int、real三种,而OnModel工具所用扩展Lustre语言参考SCADE语言对数据类型进行了细化,目前支持:int8、int16、int32、int64、uint8、uint32、uint64、float32、float64。因此需要将整型类型int8、int16、int32、int64、uint8、uint16、uint32、uint64、char转换为int类型,浮点型类型float32、float64转换为real类型,bool类型保持不变。
算子转换:将运算中对符号表示不一致的算子进行了替换,如and/or/not替换为&&/||/!、lsl/lsr替换为lsh/rsh。将Kind2中未覆盖的算子进行等价语义替换,如异或(xor)、不等于(<>)、fby。
xor:s=a xor b转换为s=(a||b)&&(!a||!b);
<>:s=a<>b转换为s=!(a=b);
fby:fby(s;n;a),n>0,a>0,即n个pre操作符和初始化操作符→,如将s=fby(s;2;1)转换为s=1→pre(1→pre(s))。
结构转换:针对扩展Lustre模型中存在的包结构:package id<code>end和openid;Kind2中Kind2中无包结构,因此须将不同包中的代码转移到同一个包下,同时对包中的所有全局变量、局部变量、节点等名称添加id前缀,同时删除原有语句。
属性转换:将属性表达式添加check关键字,如a>b转换为check a>b。
S3:遍历数据模型对OnModel工具定义的模型和属性规则进行规则检查,输出Lustre文件;
操作S3,包括:遍历数据模型,根据OnModel工具预定义的模型规则和属性规则进行规则检查,保证扩展Lustre模型和属性的正确性,规则检查通过后,输出经过语言转换且符合Kind2输入规范的Lustre文件。
以建模示例进行演示,图4为在OnModel建模工具建的图形化模型。其中文本框输入是要验证的属性:Output2+5,图形化建模生成扩展Lustre语言文本,即扩展Lustre模型如下所示。
经过转换后输出的符合Kind2输入规范的Lustre文件如下所示。
S4:将Lustre文件输入Kind2工具进行形式化验证,并处理Kind2工具返回的形式化验证结果,将结果处理后返回到OnModel建模平台。
根据本发明实施例,操作S4,包括:将Lustre文件输入到Kind2工具中,解析Kind2的返回的JSON结果,并解析为JSON数据格式返回到OnModel建模平台。
验证的属性为Output2+5,形式化验证模块首先通过规则检查确认属性是否为布尔表达式,输出结果如下所示,属性规则检查不通过。
通过status表示形式化验证是否通过,false表示不通过,true表示通过。将文本输入属性设置为Output2<Input1,则形式化验证通过,结果如下所示:
将文本输入属性设置为Output2>5,则形式化验证不通过,并输出最小反例,当Input1为6时,Output2为5,不符合属性,如下所示
通过上述建模实例给出了属性检查的三种结果。
实施例2:
针对扩展Lustre语言模型的形式化验证方法在OnModel的应用问题,本发明采用如下方法和步骤实现了一种基于扩展Lustre语言的形式化验证技术应用方法:操作S1:设计扩展Lustre语言的BNF文法规则,并通过巴科斯范式(Backus-Naur Form,BNF)表示,将扩展Lustre语言文本转化为易访问的树型结构,即抽象语法树;操作S2:遍历抽象语法树,同时进行数据模型抽取和语言转换;操作S3:遍历数据模型对OnModel工具定义的模型和属性规则进行规则检查;操作S4:将语言转换后的Lustre模型输入Kind2工具进行形式化验证,并处理Kind2工具返回的形式化验证结果。
操作S1,包括:操作S11:根据扩展Lustre语言规范设计ANTLR语法文件,包括文法规则和词法规则;操作符S12:输入语法文件,通过ANTLR自动生成抽象语法树的监听器和访问器,通过继承访问器接口的实现自定义树节点的vis it方法,自定义抽象语法树遍历的访问器。
操作S2,包括:操作S21:通过自定义的访问器,遍历抽象语法树,通过键值对的形式保存所有变量的变量名和变量类型,并过滤掉抽象语法树中的终结符,形成结构化和层次化的数据模型;操作S22:遍历的同时根据转换算法对树节点中的数据类型、算子、结构、属性进行语言转换。
操作S3,包括:遍历数据模型,根据预定义的模型规则和属性规则进行规则检查,保证扩展Lustre模型的正确性,规则检查通过后,输出经过语言转换且符合Kind2输入规范的Lustre文件。
操作S4,包括:将Lustre文件输入到Kind2工具中,解析Kind2的返回结果,并解析为JSON数据格式返回到OnModel建模平台。
从上述技术方案可以看出,本发明基于扩展Lustre语言的模型形式化验证方法至少具有以下有益效果:
(1)根据扩展Lustre语言设计了文法规则,并通过巴科斯范式(Backus-NaurForm,BNF)表示,在构建抽象语法树的同时可完成扩展Lustre模型的语法检查;
(2)构建了结构化和层次化的数据模型,遍历数据模型可同时完成规则检查和语言转换;
(3)在语言转换部分完成了类型转换、算子转换、结构转换和属性转换;
(4)在OnModel建模平台中成功应用了Kind2工具,完成扩展Lustre语言的模型形式化验证。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于扩展Lustre语言的模型形式化验证方法,其特征在于,该方法包括如下步骤:
S1:设计扩展Lustre语言的文法规则,并通过巴科斯范式(Backus-Naur Form,BNF)表示,将扩展Lustre语言文本转化为易访问的树型结构,即抽象语法树;
S2:遍历抽象语法树,进行数据模型抽取,遍历的同时进行语言转换;
S3:遍历数据模型对OnModel工具定义的模型和属性规则进行规则检查,输出Lustre文件;
S4:将Lustre文件输入Kind2工具进行形式化验证,并处理Kind2工具返回的形式化验证结果;
其中,
所述步骤S1具体包括:
S11:根据扩展Lustre语言规范设计ANTLR语法文件,包括:文法规则和词法规则,并使用BNF表示;
S12:输入文法文件,通过ANTLR软件自动生成抽象语法树及其监听器和访问器,通过继承访问器接口的实现自定义树节点的visit方法,形成抽象语法树的自定义遍历器;
所述步骤S2具体包括:
S21:通过自定义遍历器遍历抽象语法树,并以键值对的形式保存所有变量的变量名和变量类型,并过滤掉抽象语法树中的终结符,形成结构化和层次化的数据模型;
S22:遍历的同时根据转换算法对树节点中的数据类型、算子、结构、状态机、属性进行语言转换;
所述步骤S3具体包括:遍历数据模型,根据OnModel工具预定义的模型规则和属性规则进行规则检查,保证扩展Lustre模型和属性的正确性,规则检查通过后,输出经过语言转换且符合Kind2输入规范的Lustre文件。
2.如权利要求1所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,所述步骤S11中,文法输入文件中的基本文法结构和要转换的文法结构,包括:包结构、类型结构、操作符结构、表达式结构。
3.如权利要求2所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,定义顶层结构为包,包通过package关键字声明,end为结尾,通过visibility表示包的可见性,包包含0或多个声明,声明部分包含包、类型和操作符;定义类型结构,类型通过type关键字声明,基本类型包括:bool、char、int8、uint8、int16、uint16、int32、uint32、int64、uint64、float32、float64、数组和结构体;定义操作符结构,包括:操作符的类型、输入输出以及操作符体的结构,其中操作符体包括:等式,等式的左侧为变量名,右侧为表达式,操作符中涉及的各种基础算子在表达式中定义;定义表达式结构,包括需要进行语言转换的四种算子,分别是pre、fby、<>、XOR。
4.如权利要求1所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,所述步骤S21具体包括:遍历抽象语法树,将抽象语法树中所有输入、输出、局部变量按照<ID,Type>的键值对形式进行存储,ID表示变量名,Type表示变量类型,并过滤掉终结符,形成包含<ID,Type>的键值对和过滤后的树结构的数据模型,终结符包括:RETURNS、SEMI、ASSIGN和END。
5.如权利要求1所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,所述步骤S22中,类型转换包括:Kind2所支持的数据类型为bool、int、real三种,而OnModel工具所用扩展Lustre语言参考SCADE语言对数据类型进行了细化,支持:int8、int16、int32、int64、uint8、uint32、uint64、float32、float64;因此需要将整型类型int8、int16、int32、int64、uint8、uint16、uint32、uint64、char转换为int类型,浮点型类型float32、float64转换为real类型,bool类型保持不变;所述步骤S22中,算子转换包括:将运算中对符号表示不一致的算子进行了替换,and/or/not替换为&&/||/!、lsl/lsr替换为lsh/rsh,将Kind2中未覆盖的算子进行等价语义替换,未覆盖的算子包括:异或xor、不等于<>和fby。
6.如权利要求1所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,所述步骤S22中,结构转换包括:针对扩展Lustre模型中存在的包结构:package id<code>end和open id;Kind2中Kind2中无包结构,将不同包中的代码转移到同一个包下,同时对包中的所有全局变量、局部变量和节点名称添加id前缀,同时删除原有语句;属性转换包括:将属性表达式添加check关键字。
7.如权利要求1所述的基于扩展Lustre语言的模型形式化验证方法,其特征在于,所述步骤S4具体包括:将Lustre文件输入到Kind2工具中,解析Kind2的返回的JSON结果,并解析为JSON数据格式返回到OnModel建模平台。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310066963.0A CN116150005B (zh) | 2023-01-16 | 2023-01-16 | 基于扩展Lustre语言的模型形式化验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310066963.0A CN116150005B (zh) | 2023-01-16 | 2023-01-16 | 基于扩展Lustre语言的模型形式化验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116150005A CN116150005A (zh) | 2023-05-23 |
CN116150005B true CN116150005B (zh) | 2023-11-28 |
Family
ID=86338502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310066963.0A Active CN116150005B (zh) | 2023-01-16 | 2023-01-16 | 基于扩展Lustre语言的模型形式化验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116150005B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609103A (zh) * | 2024-01-24 | 2024-02-27 | 宁波沃尔斯软件有限公司 | 基于viatra的大规模低代码系统模型验证的自动映射方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231121A (zh) * | 2011-07-25 | 2011-11-02 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
CN111639501A (zh) * | 2020-05-04 | 2020-09-08 | 国网浙江省电力有限公司 | 基于amsl的电网业务微服务组合方法 |
CN114035785A (zh) * | 2021-10-21 | 2022-02-11 | 南京航空航天大学 | 一种基于自然语言需求的aadl模型组合验证性质自动生成方法 |
CN115964033A (zh) * | 2023-01-16 | 2023-04-14 | 北京计算机技术及应用研究所 | 基于模型的可视化软件开发工具实现方法 |
CN116126304A (zh) * | 2023-02-21 | 2023-05-16 | 北京计算机技术及应用研究所 | 基于XML的扩展Lustre代码生成方法 |
CN116149624A (zh) * | 2023-02-21 | 2023-05-23 | 北京计算机技术及应用研究所 | 基于扩展Lustre语言的模型度量方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023283353A1 (en) * | 2021-07-07 | 2023-01-12 | Two Sigma Insurance Quantified, LP | System for representing insurance products as graphs |
-
2023
- 2023-01-16 CN CN202310066963.0A patent/CN116150005B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231121A (zh) * | 2011-07-25 | 2011-11-02 | 北方工业大学 | 基于内存映射的大数据文件快速并行提取方法 |
CN111639501A (zh) * | 2020-05-04 | 2020-09-08 | 国网浙江省电力有限公司 | 基于amsl的电网业务微服务组合方法 |
CN114035785A (zh) * | 2021-10-21 | 2022-02-11 | 南京航空航天大学 | 一种基于自然语言需求的aadl模型组合验证性质自动生成方法 |
CN115964033A (zh) * | 2023-01-16 | 2023-04-14 | 北京计算机技术及应用研究所 | 基于模型的可视化软件开发工具实现方法 |
CN116126304A (zh) * | 2023-02-21 | 2023-05-16 | 北京计算机技术及应用研究所 | 基于XML的扩展Lustre代码生成方法 |
CN116149624A (zh) * | 2023-02-21 | 2023-05-23 | 北京计算机技术及应用研究所 | 基于扩展Lustre语言的模型度量方法 |
Non-Patent Citations (3)
Title |
---|
JKind入门(一)简单介绍和使用;美剧之神;https://blog.csdn.net/M1170780140/article/details/129831841;全文 * |
Practicing Domain-Specific Languages: From Code to models;Laure Gonnor 等;https://hal.science/hal-01865448/document;全文 * |
基于模型转化的SCADE模型检测;冉丹;中国优秀硕士学位论文全文数据库 (信息科技辑);I138-596 * |
Also Published As
Publication number | Publication date |
---|---|
CN116150005A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bontemps et al. | Semantics of FODA feature diagrams | |
CN116150005B (zh) | 基于扩展Lustre语言的模型形式化验证方法 | |
CN114840196B (zh) | Modelica语言模型处理方法、设备和存储介质 | |
Crapo et al. | Requirements capture and analysis in ASSERT (TM) | |
CN110222318A (zh) | 基于xml的数据生成工具开发方法 | |
JP2010140408A (ja) | ソースコード変換装置 | |
CN103888460B (zh) | 基于状态空间搜索的控制器局域网协议验证方法 | |
Koziolek et al. | Industrial plant topology models to facilitate automation engineering | |
Newell et al. | Translation of IEC 61131-3 function block diagrams to PVS for formal verification with real-time nuclear application | |
Leonard et al. | Program synthesis from formal requirements specifications using APTS | |
Attiogbé et al. | Integration of formal datatypes within state diagrams | |
Kutscher et al. | Towards a circular economy of industrial software | |
Dai et al. | IEC 61499 ontology model for semantic analysis and code generation | |
Runde et al. | EDDL and semantic web—From field device integration (FDI) to Future Device Management (FDM) | |
CN109298857A (zh) | Dsl语句模型的建立方法、介质、装置和计算设备 | |
Werner et al. | Formal Methods-Based Optimization of Dataflow Models with Translation to Synchronous Models | |
CN114090017A (zh) | 编程语言的解析方法及装置、非易失性存储介质 | |
Krause et al. | Model based specification, verification, and test generation for a safety fieldbus profile | |
Zeyda et al. | Mechanised translation of control law diagrams into Circus | |
Subburaj et al. | Intelligent agent software development using AUML and the Descartes specification language | |
CN107291435A (zh) | 一种不确定性环境下混成aadl模型量化分析方法 | |
Böhms et al. | IntUBE energy information integration platform | |
Owens et al. | A generic framework for automated quality assurance of software models–implementation of an abstract syntax tree | |
Kågedal | A Natural Semantics specification for the equation-based modeling language Modelica | |
Ebeid et al. | UML-based modeling and simulation of environmental effects in networked embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |