模型检验的核心是有穷状态空间上的遍历策略和算法,主要有显式方法和隐式方法.显式方法是通过状态计算来遍历状态空间,隐式方法是通过不动点计算来遍历状态空间.两者的本质都是有穷状态空间的穷尽搜索.因而,模型检验的关键问题就是如何应对系统状态爆炸,在可表示的状态空间和有效的时间内完成搜索.对于这个问题,主要有3类途径.
结构化方法:利用定义系统的语法表达(模型)结构来缓解状态空间爆炸问题,典型的方法有对称模型检验、On-the-fly 的状态空间搜索、偏序模型检验、参数化模型检验等等;
符号化方法:将模型的迁移结构的状态和迁移编码为逻辑公式,这种符号化编码能够有效压缩表示状态集合的数据结构,状态变迁的操作也相应高效.符号化的编码方法常常基于BDD、命题公式或者无量词的一阶约束等等;
抽象方法:将复杂系统的状态空间结构归约为较小的同态映像,后者是前者的一个上近似(over-approximation),从而把原系统的验证转化成模型检验可以处理的问题,例如谓词抽象方法等.而作为一种更一般化的方法,抽象解释是一种基于序集合上单调函数对程序形式语义进行可靠近似的理论,为程序自动分析提供了一个通用的框架
模型检验的其他途径还包括基于自动机理论的模型检验,Vardi和Wolper提出可以基于α-自动机来进行自动验证。时序逻辑模型检验问题可以归结为基于自动机理论的模型检验.在这个途径中,时序逻辑性质自动转换为一个自动机,这样,系统和性质都建模为自动机,模型检验问题就归结为自动机的语言包含、判空等问题。SPIN模型检验工具就是基于这种方法.
模型检验在建立了系统模型和性质描述后,验证过程是自动的,并且在证伪时能够给出调试用的反例.它对于并发系统的验证比较有优势,而且可以在不同抽象层次的模型上应用,性质规约也往往是部分规约,可以在系统设计全周期使用.但是它要求模型是有穷状态空间的,或者能够在验证中转换到有穷的状态空间抽象上,这在一定程度上限制了模型检验的应用.无穷状态系统的模型检验在相当一部分重要的应用场景是可行的,其基本思路是利用符号化方法或数据抽象的方法将无穷状态系统转换为一个“性质等价”的有穷状态表示系统的抽象.例如实时时序逻辑性质的模型检验问题,由于时钟变量是稠密的,实时系统模型(时间自动机)的状态空间是无穷的,模型检验时用Region 来抽象系统状态的集合,建立基于Region 的状态变迁系统,用来遍历状态空间以检验性质.典型的实时模型检验工具有UPPAAL。但是,实时模型检验的可扩展性仍然是所面临的巨大挑战。
实际系统中存在不确定性,这在信息物理融合系统是固有的,例如系统中物理部件的信息感知不稳定、传输丢失等等.在这些系统模型的描述中,通过引入概率或者随机元素来表达系统的不确定性,并在设计策略中,通过容错、容变机制来获得期望的量化性质.这类系统量化性质的模型检验有两种途径。
1.概率模型检验,其在系统(例如标记变迁系统)中引入概率迁移,采用可描述随机行为数学结构(例如马尔可夫链)为形式语义,通过数值计算的方式检验此类系统是否满足所期望的概率时序逻辑性质(例如,系统在给定时间内完成相应功能的概率)。典型的概率模型检验工具有PRISM;
2.·统计模型检验,其模拟有穷多次的系统执行,然后通过假设检验来推断这些样本是否提供了统计证据以表明系统满足或违反性质.概率模型检验的复杂度高;统计模型检验避免了穷尽搜索,但其结果具有一定的置信区间.
基于时间自动机的验证
最新推荐文章于 2024-09-06 10:38:06 发布