在2024-2025学期的巴黎高师同步反应式系统(2024-2025)第四课中,重点介绍了同步语言方面的Velus工作。本文将提供对Velus的介绍。对课程的详细内容,可参考同步反应系统
简介
Vélus项目是一项持续开展的长期研究,旨在将交互式定理证明器中的形式化规范与验证技术拓展至基于模型开发(Model-Based Development)所涉及的编程语言、工具及应用领域。该项目专注于Lustre和Scade等数据流同步语言的研究工作,并以Coq为开发环境。该项目最核心的成果是经过形式化验证的Vélus Lustre编译器。该编译器可视为CompCert编译器框架在Lustre语言编译领域的延伸实现。
编译器结构
Vélus编译器采用Coq与OCaml混合实现。程序首先从源文件解析生成语法树,随后通过多级中间语言逐步转换,最终生成Clight程序交由CompCert编译为目标汇编语言。所有中间语言的语法与语义均在Coq中形式化定义。转换过程体现为操作语法项的函数式程序,每个转换阶段均附带正确性证明,确保语义模型中输入/输出轨迹的保持特性。
编译阶段
- 源码解析:源文件被解析为原始语法树,经精化处理阶段添加类型标注与时钟信息
- Lustre特性规约化:该数据流形式化语言包含层次化自动机、switch块、局部块、"last"变量以及节点/fbys/merges等结构的任意嵌套,编译器将这些特性逐步重写为规范化的数据流核心
- 规范化Lustre(NLustre):包含三种方程形式的基础数据流形式化语言——基本方程、fby方程及节点实例
- 同步转换代码(Stc):基于状态转移的组合机制,在瞬时状态下根据输入值约束状态与输出值
- 目标代码(Obc):具有封装状态与固定执行顺序的简单命令式语言
- 最终生成:产出Clight程序,由CompCert编译为汇编代码
参考
- Velus 项目:
https://velus.inria.fr/
- 课程课件: 同步反应系统 - 第四课 - Velus - 形式化验证的Lustre编译器