Event-B是什么?
-
Event-B是一种用于系统级别的建模和分析的形式化方法
-
在B方法基础上发展出来的,基于状态和事件的形式化系统
-
支持基于精化的模型转换和性质证明
创始人:Prof. Jean-Raymond Abrial
Event-B形式化验证过程
首先根据系统的需求文档(requirements document),使用event-b建模语言将系统建模为一个抽象离散模型(model),在模型中也刻画了对应组件需要满足的性质,因为在模型状态变化过程中,模型的某些组件可能无法满足全局的性质,这时候会产生一些需要证明的定理,我们需要证明(proof)这些定理来确保状态变量的条件永远成立。
当然,需要证明的定理肯定不能由我们一个个去提出来,肯定是需要相应工具生成的,该工具称为证明义务生成器,然后证明也应该可以通过自动推理或者半自动推理的方式来进行证明。
人需要的工作主要是根据需求文档构建相应的模型,我们的模型肯定不是一蹴而就的,是在逐步的迭代与转化过程中越来越完善,这种模型的迭代与转化的过程称为精化(refinement),然后描述这个模型应该满足哪些性质,通过定理证明的方式,证明这些个性质是可满足的,进而验证模型的正确性。
如果完成了定理的证明,我们可以说这个系统是相对无缺陷的(Faultless)。因为在上面的步骤中,我们相当于构建了一种真实软件的近似模型,如果这个近似模型与真实软件足够接近,那么可以说是相对正确的,否则的话,很有可能在事先未曾预料到的外部环境出错。
Event-B的辅助工具
Rodin平台
它是一个基于eclipse平台的开源IDE,对Event-B中的精化和定理证明提供了良好的支持,并且可以通过插件进一步扩展功能。
Rodin和Event-B的wiki主页:https://wiki.event-b.org/index.php/Main_Page
可以在上面下载Rodin工具
Event-B的特点
- 使用集合论作为建模表示法
- 使用精化(refinement)表示不同抽象级别的系统
- 使用数学证明来验证不同精化级别之间的一致性
前置知识
离散数学
形式化是什么?
参见形式化基础
我个人认为Event-B方法应该属于形式化验证中的定理证明
参考资料
- Rodin User’s Handbook
- Modeling in Event-B: System and Software Engineering, J.R. Abrial (2010)
- Event-B & Rodin wiki