模型检测Model Checking---学习记录(一)绪论

被拉去模型检测方向了。。太难了。。。

一、概念

模型检测(model checking)是一种针对有限状态并发系统的自动验证技术,主要通过显式状态搜索或隐式不动点计算来验证有穷状态并发系统的模态/命题性质。

基本思想:用状态迁移系统(S)表示系统的行为,用模态逻辑公式(F)描述系统的性质。这样“系统是否具有所期望的性质”就转化为数学问题“状态迁移系统S是否是公式F的一个模型?”,用公式表示为S╞F。

最大的问题:状态空间爆炸

二、模型检测的流程

使用模型检测技术来进行系统设计的验证包含以下三个步骤:

1、建模:第一个需要将设计转化为被模型检测工具接受的形式;可能由于验证时间和计算机内存的限制,还需要使用抽象技术简约不相关或不重要的细节

2、规约:声明设计必须满足的性质。性质刻画通常以某种逻辑的形式(通常使用时序逻辑,这种逻辑体系表示系统随着时间的变化)表示。

3、验证:理想上的验证应该是完全自动的。但实际上常常需要人的帮助,其中之一就是分析结果。当得到失败结果后,通常可以给用户提供一个错误轨迹,可以把它看作检测性质的一个反例。

三、时序逻辑

Kripke 结构 是过渡系统的变体,最初由Saul Kripke提出,用于模型检查来表示系统的行为。 它基本上是一个图,其节点表示系统的可达状态,其边表示状态转换。 标记函数将每个节点映射到一组保持在相应状态的属性。 时间逻辑传统上用Kripke结构来解释。

并发系统 通过描述程序语句的公理集合来证明程序性质

CTL 分支时序逻辑  公正性

EMC模型检测器 相对于公式长度与状态变迁图(Kripke)规模的积是线性的

LTL 线性时序逻辑 

CTL* 结合了分支时间与线性时间的算子

四、解决状态空间爆炸

1、符号算法

传统的邻接表使用规模小,采用符号方法表示状态变迁图可以验证更大规模的系统。该方法基于有序二叉判定图(OBDD)

2、偏序约简

通过减少考虑的交织序列数目来简约模型的状态空间

3、组合推理

基于分而治之的思路来缩减模型检验时问题的规模,先验证系统的构件的局部性质,然后把这些性质组合起来获得系统的全局性质

4、对称

针对由多个完全类似的进程组成的系统,利用其模型的状态空间的对称性来生成压缩的且对模型检验等价的模型。

5、抽象

抽象方法通过把原来模型中与待验证性质无关的信息去掉而获得简化模型的方式来减小模型检验时问题的规模,抽象必须是保持性质的,即若简化的模型满足性质,则原来的模型亦满足该性质。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值