基于Coq的航空电子模式控制一致性验证方法[发明专利]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201710190111.7
(22)申请日 2017.03.22
(71)申请人 南京航空航天大学
地址 211106 江苏省南京市江宁区将军大
道29号
(72)发明人 周勇 张天瑞 刘骁 谢红梅
周洲 程仕杰
(51)Int.Cl.
G06F 17/50(2006.01)
(54)发明名称
基于Coq的航空电子模式控制一致性验证方
法
(57)摘要
本发明公开了一种基于Coq的航空电子模式
控制一致性验证方法,
解决了航空电子系统的状态转移一致性验证问题。
补充了航空电子模式控
制系统中应用Coq语言形式化验证的空白。
利用
Coq语言对航空电子系统进行形式化建模,描述
相应状态转移规则,即可实现航空电子模式控制
形式化验证。
权利要求书3页 说明书12页 附图2页CN 106971038 A 2017.07.21
C N 106971038
A
1.基于Coq的航空电子模式控制一致性验证方法,其特征在于,包括如下步骤:
1)利用定理证明辅助工具Coq结合规范要求建立系统各个模块的状态模型;
2)结合步骤1)中的系统模块状态模型,建立状态转移规则;
3)结合步骤1)和步骤2)建立模块的一致性规则,用来判断模块初始状态和模块转移之后的状态是否一致;
4)结合步骤2)和步骤3)列举出所有可能出现的状态和操作,利用状态转移规则得到相应的转移后的状态;
5)结合步骤3)和步骤4)对航空电子系统形式化规范进行一致性验证。
2.根据权利要求1所述基于Coq的航空电子模式控制一致性验证方法,其特征在于,步骤1)建立模型状态的规范需要分别建立事件规范和状态规范,最后将完成的各个规范汇总。
一般的,基于Coq对事件可以做出如下形式的规范:
Inductive events:Type:=
|event1|event2|event3|…|eventn.
对软硬件子模块的状态做出如下形式的规范:
Inductive software_or_hardware_work_state:Type:=
|state1|state2|state3|…|staten.
最后的汇总可使用Coq中的Record关键字建立记录类型,汇总已有的时间规范和软硬件子模块规范为系统状态规范,其中基于Coq每个子状态有如下规范形式:software_or_hardwarel:software_or_hardware_work_stateX。
3.根据权利要求2所述基于Coq的航空电子模式控制一致性验证方法,其特征在于,步骤2)结合步骤1)即可建立系统状态的转移规范,在建立转移规范之前,首先要确定系统的初始状态,基于Coq,可以对初始化状态的规则做出如下形式的规范:
Definition init(st:states):states:=
match st with
|_=>
Build_states(software_or-hardware_work_stateX1)(software_or_hardware_ work_stateX2)…(software_or_hardware_work_stateXn)
end.
在初始化系统状态后即可依次对各个软硬件子模块的转移制定规范,基本思想为:在航电系统中,不同的事件会导致系统状态发生改变。
这些事件使系统从当前状态(Sc)转换到新状态(Sn):
Sc->Sn
箭头表示转换函数nextstate,是当前状态(Sc)和事件(ev)的函数:
Sn=nextstate(Sn,ev)
其中对于软硬件子模块状态在一个事件触发后的转移规则基于Coq可以做出如下形式的规范:
在完成各个软硬件子模块状态的转移规则的规范后,即可汇总这些规范为一个统一的系统状态转移规范nextstate以便后面的形式化验证。
通过匹配触发事件的方式,构建系统状态的转移规则,其中基于Coq,系统状态转移规则有如下形式:。
4.根据权利要求3所述基于Coq的航空电子模式控制一致性验证方法,其特征在于,步骤3)结合步骤1)和步骤2),即可依据需求建立相应的一致性规范,其中基于Coq,通过匹配软硬件子模块并判断其工作状态,系统状态一致性规则的判定有如下基本形式:match software_or_hardwareX2 st with
|software_or-hardware_work_state1=>true_or_false。
5.根据权利要求4所述基于Coq-的航空电子模式控制一致性验证方法,其特征在于,步骤4)
1.使用Lemma关键字声明要验证的有蕴含关系的系统关系或规则
2.验证过程中使用induction策略,遍历各个软硬件子模块可能出现的状态
3.基于过程2,使用compute策略,自动计算验证关系是否成立。
若无失败报错,则验证完成,否则需要修改之前制定的规范。
基于Coq,验证过程有如下形式:
Lemma lemma:
forall(st:states),rule1 st=true_or_false->rule2 st=true_or_false.
Proof.
intros.
induction st0;
induction software_or_hardware10;
…
induction software_or_hardwareN0;
compute;
compute in H;
(discriminate H||trivial);
fail.
Qed。
6.根据权利要求5所述基于Coq的航空电子模式控制一致性验证方法,其特征在于,步骤5)按需求对航电系统形式化规范进行一致性验证。
基于Coq的航空电子模式控制一致性验证方法
技术领域
[0001]本发明公开了一种基于Coq的航空电子模式控制一致性验证方法,主要用于解决航空电子模式控制系统的状态转移一致性问题。
背景技术
[0002]在系统开发早期的模型建立阶段就对模型的可调度性、安全性等方面进行验证,可以避免设计阶段的反复,大大的提高开发效率。
基于时间自动机的理论,采用形式化的方法,通过过程模拟对模型的一致性进行前期的验证是一种可行且必要的方法。
[0003]形式化验证就是基于已建立的形式化规格,对所规格系统的相关特性进行分析和验证,以评判系统是否满足期望的特性。
形式化验证并不能完全确保系统的性能正确无误,但是可以最大限度地理解和分析系统,并尽可能地发现其中的不一致性、模糊性、不完备性等错误。
形式化验证的主要技术包括模型验证和定理证明。
[0004]形式化验证方法主要可以分为三种:定理证明、模型检测和等价性验证。
定理证明的基本原理是选定一个数学逻辑体系,并用其中的公式来描述系统和系统性质刻画,然后在一定的数学逻辑体系中依据此体系的公理、定理、推导规则和系统描述公式,考察其能否推导出系统的性质刻画公式,如果可以则验证成功。
[0005]现有的航空电子系统中形式化验证中应用到了PVS语言,用于航空电子微处理器AAMP5的规格和验证,对209条AAMP5指令中的108条进行了规格,验证了11个有代表性的微代码。
在现有的航空电子系统形式化验证中还没有基于Coq的描述。
[0006]原型验证系统(PVS)是支持工具和自动定理证明器集成的规范语言。
PVS基于一个内核组成的一个扩展的Church的类型的依赖类型的理论,从根本上是一个经典类型的高阶逻辑。
PVS定理证明器提供强大的原始推理过程的集合,其在后续的演算框架中在用户指导下交互地应用。
原始推论包括命题和量词规则,归纳,重写,使用用于相等和线性算法的决策过程的简化,数据和谓词抽象以及符号模型检查。
这些基本推理的实现针对大型证明进行了优化:在PVS语言特征和证明者之间存在协同交互,使得与术语相关联的类型信息被推理机制利用,并且相反地,证明者中的自动化有助于自动地释放TCC。
校对产生可以编辑,附加到其他公式并重新运行的脚本。
这允许许多类似的定理被有效地证明,允许证据经济地调整以跟随需求或设计的变化,并且鼓励开发可读证据。
PVS包括用于关系mu演算的基于BDD的判定过程,从而提供定理证明和CTL模型检验之间的实验积分。
PVS最近已经扩展到使用Yices SMT解算器作为一个endgame证明器和一个无限状态有界模型检查器,用于评估地面PVS表达式的PVSio框架,以及可以在校验期间使用的随机测试功能。
[0007]Coq是一个正式的证明管理系统。
它提供了一种形式语言来写入数学定义,可执行算法和定理以及用于机器检查证明的半交互式开发的环境。
典型的应用包括对编程语言(例如CompCert编译器认证项目或Bedrock验证的低级编程库)的属性的认证,数学的形式化(例如Feit-Thompson定理的完全形式化)教学等。
Coq实现了称为Gallina的程序规范和数学高级语言,该语言基于称为感应建构的微积分的表达性形式语言,其本身组合了高级
逻辑和丰富类型的函数编程语言。
通过本地语言的命令,Coq允许:定义可以有效评估的函数或谓词;状态数学定理和软件规范;交互地开发这些定理的形式证明;通过相对较小的认证“内核”对这些证明进行机器检查;以将已认证的程序提取到Objective Caml,Haskell或Scheme等语言。
作为证明开发系统,Coq提供交互式证明方法,决策和半决策算法,以及用于让用户定义自己的证明方法的策略语言。
可以与外部计算机代数系统或定理证明器连接。
作为数学形式化或程序开发的平台,Coq为高级符号,隐式内容和各种其他有用的宏提供了支持。
发明内容
[0008][发明目的]:针对上述背景技术的不足,提供了基于Coq的航空电子系统形式化验证方法,用Coq验证航空电子系统的状态转移一致性问题。
补充了现有技术中应用Coq语言形式化验证的空白,也解决了没有通用描述方法的问题。
[0009][技术方案]:本发明方案主要包括以下内容:
[0010]1)利用定理证明辅助工具Coq结合规范要求建立系统各个模块的状态模型;[0011]2)结合步骤1)中的系统模块状态模型,建立状态转移规则;
[0012]3)结合步骤1)和步骤2)建立模块的一致性规则,用来判断模块初始状态和模块转移之后的状态是否一致;
[0013]4)结合步骤2)和步骤3)列举出所有可能出现的状态和操作,利用状态转移规则得到相应的转移后的状态;
[0014]5)结合步骤3)和步骤4)对航空电子系统形式化规范进行一致性验证。
[0015]在步骤1)中,建立模型状态的规范需要分别建立事件规范和状态规范,最后将完成的各个规范汇总。
一般的,可基于Coq对事件做出如下形式的规范:
[0016]Inductive events:Type:=
[0017]|event1|event2|event3|…|eventn.
[0018]对软硬件子模块的状态做出如下形式的规范:
[0019]Inductive software_or_hardware_work_state:Type:=
[0020]|state1|state2|state3|…|staten.
[0021]最后的汇总可使用Coq中的Record关键字建立记录类型,汇总已有的时间规范和软硬件子模块规范为系统状态规范,其中基于Coq每个子状态有如下规范形式:
[0022]software_or_hardware1:software_or_hardware_work_stateX;
[0023]结合步骤1)即可建立系统状态的转移规范,在建立转移规范之前,首先要确定系统的初始状态,基于Coq,可以对初始化状态的规则做出如下形式的规范:
[0024]Definition init(st:states):states:=
[0025]match st with
[0026]|_=>
[0027]Build_states(software_or_hardware_work_stateX1)(software_or_hardware_ work_s tateX2)…(software_or_hardware_work_stateXn)
[0028]end.
[0029]在初始化系统状态后即可依次对各个软硬件子模块的转移制定规范,基本思想
为:在航电系统中,不同的事件会导致系统状态发生改变。
这些事件使系统从当前状态(Sc)转换到新状态(Sn):
[0030]Sc->Sn
[0031]箭头表示转换函数nextstate,是当前状态(Sc)和事件(ev)的函数:
[0032]Sn=nextstate(Sn,ev)
[0033]其中对于软硬件子模块状态在一个事件触发后的转移规则基于Coq可以做出如下形式的规范:
[0034]
[0035]
[0036]在完成各个软硬件子模块状态的转移规则的规范后,即可汇总这些规范为一个统一的系统状态转移规范nextstate以便后面的形式化验证。
通过匹配触发事件的方式,构建系统状态的转移规则,其中基于Coq,系统状态转移规则有如下形式:
[0037]
[0038]结合步骤1)和步骤2),即可依据需求建立相应的一致性规范,其中基于Coq,通过匹配软硬件子模块并判断其工作状态,系统状态一致性规则的判定有如下基本形式:[0039]match software_or_hardwareX2 st with
[0040] |software_or_hardware_work_state1=>true_or_false
[0041]结合步骤3)即可对现有系统进行形式化验证工作,基于Coq有如下关键过程:[0042] 1.使用Lemma关键字声明要验证的有蕴含关系的系统关系或规则
[0043] 2.验证过程中使用induction策略,遍历各个软硬件子模块可能出现的状态[0044] 3.基于过程2,使用compute策略,自动计算验证关系是否成立。
若无失败报错,则验证完成,否则需要修改之前制定的规范。
基于Coq,验证过程有如下形式:
[0045]Lemma lemma:
[0046]forall(st:states),rule1st=true_or_false->rule2st=true_or_false. [0047]Proof.
[0048]intros.
[0049]induction st0;
[0050]induction software_or_hardware10;
[0051]…
[0052]induction software_or_hardwareN0;
[0053]compute;
[0054]compute in H;
[0055](discriminate H||trivial);
[0056]fail.
[0057]Qed.
[0058][有益效果]:提出了一种基于Coq的航空电子模式控制系统形式化验证方法,首先提出了基于Coq的航空电子系统建模方法,其次提出了基于Coq针对模型建立相应转移规则的方法和一致性验证方法,最后通过遍历各种可能情况完成对航空电子模式控制系统的形式化验证工作,填补了基于Coq的航空电子模式控制系统形式化验证的空白。
附图说明
[0059]图1为本发明提出方法的航空电子模式控制系统形式化验证框架;
[0060]图2为航空电子模式控制面板示意图
具体实施方式
[0061]以下结合附图和具体实例对本发明做具体的介绍。
[0062]如附图1所示,此实施方法的过程是:建立系统规范、定义事件、定义状态转移函数的形式化规范、建立各模块规范、定义初始状态和输入事件、自动证明以进行形式化验证,对于不满足形式化验证结果的规范需要重新设定。
参考《航空电子技术航空电子开发与实现(下)》一书中的航空电子模式控制面板示意图,并基于Coq构造一个航空电子模式控制面板形式化验证示例,可以说明此实施方式有如下的具体实施过程:
[0063] 1.模型状态的规范
[0064] 1.1.事件规范
[0065]系统的状态代表该系统运行属性的集合。
系统状态表述的形式化要求决定哪些属性对充分描述系统的运行是必需的,然后选择一个合适的形式来表示那些属性。
一般的,可基于Coq对事件做出如下形式的规范:
[0066]Inductive events:Type:=
[0067]|event1|event2|event3|…|eventn.
[0068]其中events是事件统称名,涵盖event1、event2等子事件。
[0069]例如在该示例中,驾驶员通过按下模式按键或者向显示器输入预定的值来与模式控制面板进行交互,故做出如下定义:
[0070]a)四个按键:att_cws,fpa_sel,alt_eng,cas_eng
[0071]b)按下四个按键的动作:press_att_cws,press_cas_eng,press_alt_eng,press_ fpa_sel
[0072]c)把数值输入显示器的动作:input_alt,input_fpa,input_cas
[0073]d)模式控制面板从传感器接收到的输入:alt_reached,fpa_reached,alt_gets_ near其中四个按键的定义与按键本身有如下对应关系:
[0074]a)att_cws=>姿态控制轮调节
[0075]b)fpa_sel=>飞行航迹角选择
[0076]c)alt_eng=>高度接通
[0077]d)cas_eng=>校正空速接通
[0078]这组事件用Coq语言规定如下:
[0079]Inductive events:Type:=
[0080]|press_att_cws|press_cas_eng|press_fpa_sel|press_alt_eng
[0081]|input_alt|input_fpa|input_cas
[0082]|alt_gets_near|alt_reached|fpa_reached.
[0083] 1.2.状态规范
[0084]对于系统中的软硬件,可对相应的软硬件工作状态类型按需求做出规范,以便进行接下来的验证工作。
一般的,可基于Coq对事件做出如下形式的规范:
[0085]Inductive software_or_hardware_work_state:Type:=
[0086]|state1|state2|state3|…|staten.
[0087]其中software_or_hardware_work_state标识软硬件,其可以有state1、state2等工作状态。
[0088]例如在该示例中,有模式面板维持着显示器的状态。
显示器通过状态描述符来表明其值是预先选定值还是来自传感器的实际读数。
用Coq语言规定如下:
[0089]Inductive disp_status:Type:=
[0090] |pre_selected|current.
[0091]示例中其他硬件状态做类似的规范即可。
[0092] 1.3.汇总状态
[0093]在描述完成系统中各个软硬件的工作状态后,即可将各个软硬件的状态作为子状态,汇总到一个系统总体状态states,在Coq语言中可以用记录类型来实现,可基于Coq对事件做出如下形式的规范:
[0094]
[0095]其中states是系统状态统称,涵盖了software_or_hardware1、software_or_ hardware2等软硬件的可选状态类型(即1.2规范模式中定义过的状态类型)software_or_ hardware_work_stateX,其中X表示与相应的软硬件相匹配的工作状态类型标号。
[0096]例如在该示例中,对系统中所有的软硬件工作状态定义完成后,即可用Coq语言记录类型进行归纳,得到状态描述符如下:
[0097]
[0098] 2.状态转移规则的规范
[0099] 2.1.系统状态的初始化
[0100]对系统状态的初始化可以直接通过初始化规则产生一个被初始化过的状态来实现,可基于Coq对事件做出如下形式的规范:
[0101]
[0102]其中init标识初始化规则,用match匹配整个系统状态state(即不论当前系统状态是怎样的,都进行初始化操作),因为在Coq中不支持对已有的变量赋值,故产生一个新的满足初始化形式的系统状态作为新的系统状态,其中依次对系统状态中的software_or_ hardware1、software_or_hardware2等软硬件子模块重新填入新状态software_or_ hardware_work_stateX1、software_or_hardware_work_stateX2等作为初始化之后的新系统状态,即相当于完成了初始化。
[0103]在该示例中,构建了一个为状态st赋初值的函数:
[0104]
[0105] 2.2.子模块状态转移规则
[0106]对于不同的航空电子系统,会用到不同的软硬件,因此具体的子模块状态转移规则不尽相同,但制定转移规范的模式相同,可基于Coq对转移规则做出如下形式的规范:
[0107]
[0108]
[0109]其中,translate标明了该子模块状态转移规则的名称,在规则中对当前系统状态state中的某一个或多个软硬件状态进行匹配,由于在Coq中不支持对已有变量的重新赋值,因袭若成功匹配软硬件状态,则通过Build_states规则重新生成一个完成此次转移之后的系统状态,其中依次对系统状态中的software_or_hardware1、software_or_ hardware2等软硬件子模块重新填入新状态software_or_hardware_work_stateX1、software_or_hardware_work_stateX2等作为转移之后的新系统状态。
[0110]例如在该示例中,函数tran_att_cws描述当驾驶员按下att_cws按键时系统会发生什么。
必须要用包括所有可能系统状态的方式来规范。
根据英语规范,如果att_cws模式处于断开状态,则按下该按键意味着接通这一模式。
[0111]在英语规范中,规定,“任一时刻只有att_cws,fpa_sel或cas_eng模式中的一个可被接通”。
因此其他模式必定是engaged之外的其他状态。
这一假设意味着它们是被关闭的。
[0112]英语规范还规定,当一个模式被解除时“显示器应回复到显示当前值”;“如果英按下姿态控制轮调节按键,而此时高度控制轮调整模式已经被接通,那么该按键就被忽略”。
[0113]但是,英语规范没有提出当按下att_cws按键时,预选的alt_eng显示器或是预选的fpa_sel显示器会是什么状态,然而形式化规范会明确指出,这些模式将被关闭。
在相应的模式关闭时,如果显示器不被改变,那么该模式可以用以下描述来规范:
[0114]
[0115]
[0116] 2.3.系统状态转移规则
[0117]在航电系统中,不同的事件会导致系统状态发生改变。
这些事件使系统从当前状态(Sc)转换到新状态(Sn):
[0118]Sc->Sn
[0119]箭头表示转换函数nextstate,是当前状态(Sc)和事件(ev)的函数:
[0120]Sn=nextstate(Sn,ev)
[0121]在完成各个软硬件子模块状态的转移规则的规范后,即可汇总这些规范为一个统一的系统状态转移规范nextstate以便后面的形式化验证。
nextstate规范可基于Coq对规则作出如下形式的规范:
[0122]
[0123]
[0124]其中,nextstate是对所有软硬件子模块转移规则的汇总规则,对于每一个接收到的事件event,与nextstate中的event1、event2等事件类型相匹配,若匹配到的事件类型有相应的转移规则,则转而执行相应的状态转移规则,从而实现整个系统的状态转移。
[0125]例如在该示例中,定义完所有的软硬件子模块状态转移规则后,即可汇总为整个系统的状态转移规则nextstate。
基于Coq可对规则做出如下形式的规范:
[0126]
[0127] 3.状态一致性的规范
[0128]对于不同的航电系统,由于系统软硬件模块以及相应的状态转移规则的不同,其验证状态一致性的规范也不尽相同。
但一般的,制定规则的形式相同,可基于Coq对状态一致性的检验规则做出如下形式的规范:
[0129]
[0131]即对系统状态state中需要检验的软硬件子模块状态依次进行匹配,若匹配结果满足一致性规则,则返回一个布尔值true表示当前状态state一致,否则返回布尔值false 表示当前状态state无效。
[0132]在该示例中,模式控制面板的英语规范中有几个语句用来描述系统全面的运行状态。
例如,“在任何时候应接通三个模式att_cws,fpa_sel或alt_eng中的一个”。
这个语句可以形式化并且可以被证明:不论出现什么样的事件结果,总是适用于系统。
该特性可被形式
化如下:
[0134] 4.系统形式化验证过程
[0135]状态和规则定义完成后,即可开始形式化验证工作。
在Coq中可应用证明策略
induction和compute完成主要的验证工作,一般的,对于命题式规则的蕴含关系验证,验证
一个命题成立的情况下另一个命题也要成立,可基于Coq对形式化验证过程做出如下形式
的规范:
[0136]Lemma lemma:
[0137]forall(st:states),rule1 st=true_or_false->rule2 st=true_or_false. [0138]Proof.
[0139]intros.
[0140]induction st0;
[0141]induction software_or_hardware10;
[0142]induction software_or_hardware20;
[0143]induction software_or_hardware30;
[0144]…
[0145]induction software_or_hardwareN0;
[0146]compute;
[0147]compute in H;
[0148](discriminate H||trivial);
[0149]fail.
[0150]Qed.
[0151]其中,对于要验证蕴含关系的规则rule1和rule2,在证明过程中使用induction证明策略,展开software_or_hardware10、software_or_hardware20等软硬件子模块的状态,进行遍历匹配,并用compute策略自动计算已经展开带入了各个软硬件子模块状态的系统状态,若无报错,则说明验证成功,否则需要修改前面制定的规则,过程示例如图1所示。
[0152]例如在该模块中,证明一个有效状态经过一个事件触发后得到的转移后事件仍是合法的,可用以下Coq程序片段进行验证:
[0153]Lemma val id_newst_to_nextst:
[0154]forall(event:events)(st:states),valid_state st=true->valid_state (nextstate event st)=true.
[0155]Proof.
[0156]intros.
[0157]induction event0;
[0158]induction st0;
[0159]induction att_cws0;
[0160]induction cas_eng0;
[0161]induction fpa_sel0;
[0162]induction alt_eng0;
[0163]induction alt_disp0;
[0164]induction fpa_disp0;
[0165]induction cas_disp0;
[0166]induction altitude0;
[0167]compute;
[0168]compute in H;
[0169](discriminate H||trivial).
[0170]Qed。
图1
图2。