可验证代码生成:从调度式 Event - B 模型到 Dafny 语言
1. 引言
在软件开发领域,形式化方法为构建可靠系统提供了坚实基础。Event - B 作为一种通用形式化建模语言,可用于分布式系统、顺序程序和嵌入式系统等多个领域。然而,在某些领域,如顺序程序开发中,Event - B 的使用过程尚不完善且不易掌握。
为解决这一问题,引入了调度式 Event - B(Scheduled Event - B,简称 SEB)。SEB 通过添加调度语言,使 Event - B 模型中的控制流更加明确,便于在 Event - B 细化过程中推导算法结构。一个具体的 SEB 模型会关联一个具体的算法结构,虽然这在一定程度上降低了代码生成的难度,但模型与可执行代码之间仍存在差距。
本文旨在将 SEB 模型转换为 Dafny 编程语言的代码,并提出一种方法,通过从模型生成一系列断言,利用静态程序验证器对生成的代码进行验证。该方法结合了 Event - B 的抽象和细化优势,以及现代强大的程序验证器,确保最终生成的程序正确实现了 Event - B 模型。
2. 背景知识
2.1 Event - B
Event - B 是基于集合论和谓词逻辑的形式化建模语言,由 Abrial 提出。它受 Action Systems 和 B - Method 的启发,借助 Rodin 平台进行建模。一个 Event - B 模型主要由两部分组成:
- 上下文(Context) :模型的静态部分,通过载体集、常量和公理来指定类型和常量。
- 机器(Machine)
SEB模型转Dafny代码验证方法
超级会员免费看
订阅专栏 解锁全文
12

被折叠的 条评论
为什么被折叠?



