形式化验证主要分为:模型检测(又称模型检验)和定理证明两种方法。
以下为调研后整理的笔记。
(其中模型检测工具部分,引用了博主yisun03的这篇博客。)
模型检测步骤与工具
模型检测的步骤:
1. 抽象出系统的数学模型
- 迁移系统(Trasition system)
- 马尔可夫链(Markov chain)
- Kripke结构(Kripke structure)
2. 给出能够描述该系统性质的语言
- 线性时序逻辑LTL:
关心系统的任意一次运行中的状态以及它们之间的关系 - 计算树逻辑CTL:
分叉时序逻辑,用来描述状态的前后关系和分支情况 - μ \mu μ-演算:
关心系统的动作与状态之间的关系
模型检测工具:
1.面向形式化规格语言的模型检测工具
- SMV符号模型检测工具
SMV用以检测一个有限状态系统是否满足CTL公式。
它的建模方式是以模块为单位,模块可以同步或异步组合,模块描述的基本要素包括非确定性选择,状态转换和并行赋值语句。
其模型检测的基本方法是以二叉图表示状态转换关系,以计算不动点的方法检测状态的可达性和其所满足的性质。
http://www.cs.cmu.edu/~modelcheck/smv.html
- NuSmv(New Symbolic Model Verifier) 新符号模型检测工具
对SMV重构的一个模型检测工具
支持计算树逻辑CTL和线性时序逻辑LTL描述的所有