基础部分
概念
Event-b 是一种基于传统的谓词演算和定理证明的形式化语言。
Event-b 新的特征是它引入了事件(Event)。事件是event-b的一个重要特征,因此它非常适合用来为周期行为建模。除此之外,Event-b支持逐步精化地建立系统模型。
组成
一个完整的Event-B 模型包括四部分,Context(上下文) , Machine(自动机) , Proof Obligations(证明义务) 和 Refinement(精化)。
- Context:上下文主要定义常量,这些常量可以是数值或者数据集合。
- Machine:自动机主要定义动态的行为,包括状态以及状态属性,还有事件模型的建立都在machine模型里建立。
- Proof Obligation:证明义务并不是为了得到某些信息而进行的操作,他并不是必须的。它的作用只是确定建立的模型是否符合原始需求以及内部需求。更多的模型只是为了进行语法的练习。
- Refinement:精化是增加系统的功能、增加细节、改变状态模型。精化一个自动机过程中,可能需要增加新的变量和新的事件。一般一个模型需要进行多次精化才能符合要求。
Machine和Context
- Variable:Variable定义了状态变量,我的理解是全局的变量
- Invariant:Invariant则定义了相应Variable的类型
- Theorems:Theorems定义了相应variable的行为
- Events:Events则定义了能使状态变量改变的事件,其中包括初始化。
- Variant:variant相对于Variable来说,则是Events中临时变量,作用域比Variable小。
- Sets:是数据集合
- Constants:是定义的一些常量
- Axioms:描述了不能从其他公理派生出来的属性
- Theorems:描述了可以由公理导出的性质
精化和拓展
一个项目中可以存在多个Machine和Context,但它们不能是独立的,这也从侧面解释了“Event-b支持逐步精化地建立系统模型”。具体关系如下图。
即Machine在精化中越来越复杂,越来越细致。Context也越来越庞大。