同步数据流语言高阶运算消去的可信翻译
同步数据流语言(例如Lustre,Signal等)广泛应用于工业界的核心安全级控制系统,如航空、核电等高安全等级的关键领域,与语言相关的软件的安全性也越来越受到人们的关注,特别是一些基础软件,如操作系统、编译器等.确认这些软件的安全可靠非常重要,同时,随着软件系统的复杂度的提高,软件的安全性保证也变得越来越困难,依靠传统的测试、代码审核和过程管控等方法来保证软件的安全性是远远不够的.近年来,形式化验证方法已成功地应用于可信编译器的实现中,CompCert是其中的杰出代表.形式化验证方法从数学角度对软件系统进行描述,从逻辑上对软件系统的正确运行进行验证,能够充分地保证软件系统可信,可以最大程度地提高软件系统的可信度.国产自主可控的嵌入式仿真软件SkyEye和同步数据流语言高阶运算消去的可信翻译
我们项目组基于形式化验证方法开展了一项从Lustre*语言到C子集Clight的可信翻译器的研究工作,称为L2C项目,图 1是该项目的整体框架.
Lustre是一种类Lustre语言,它是以Lustre V6的核心语言为基础,并加上一些类似于Scade的扩展. Lustre语言中除了通常的算术和逻辑表达式之外,还包含了struct,list,switch和array等表达式,这些表达式的执行规则类似于C语言中的相应表达式.此外,Lustre*从Scade中继承了一些高阶运算和对于数组和结构体的操作.Clight来源于CompCert项目,是一种兼容于关键嵌入式软件推荐使用的较大的C语言子集.
L2C项目的开发采用辅助证明工具Coq实现,集程序、性质和证明于一体,最终代码被抽取为Ocaml代码,与前端的Ocaml代码集成,得到完整编译过程的代码.通过图 1的最后一步,Lustre*源程序最终被翻译到CompCert项目的Clight AST,Clight语言的语法语义采用CompCe