0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模型检查综述

上海控安 来源:上海控安 作者:上海控安 2023-03-10 09:49 次阅读

作者 |李建文华东师范大学软件工程学院博导

版块 |鉴源论坛 · 观模

01模型检查的历史

模型检查是一种起源于20世纪70年代末的形式化验证技术。该技术最初由Edmund M. Clarke、E. Allen Emerson和Joseph Sifakis提出,他们因在模型检查领域的贡献而获得了2007年的图灵奖。模型检查的提出最初是为了对并发和分布式系统做自动化验证,这些系统越来越复杂,手动验证则变得越来越困难。模型检查涉及系统地探索系统的所有可能状态,并检查每个状态是否满足某些属性。

在早期阶段,模型检查可以通过显示地计算Kripke结构上的不动点(针对CTL描述的性质) [1]或者是在由模型和LTL性质构造的乘积自动机上做状态搜索 [2]来完成。尽管这些技术非常直观且易于理解,但它们处理大型系统的能力非常有限,现在它们已经被以BDD [3]和SAT求解器 [4]为计算核心的符号模型检查技术所取代。事实上,基于SAT求解器的模型检查技术是目前最有前景的自动化验证技术。目前最先进的基于SAT求解器的模型检查技术包括BMC [5],IMC [6],IC3/PDR [7],和CAR [8]。

模型检查已被应用于各种系统,包括硬件电路、通信协议、操作系统和软件程序。它已被用于在部署之前检测系统中的错误和缺陷,这可以在开发过程中节省时间和金钱。今天,模型检查是一个活跃的研究和开发领域,研究人员正在不断努力,以提高其拓展性、准确性和可用性。

02模型检查问题描述

模型检查问题是说:给定一个模型M,或者说一个状态迁移系统,如何判断M是否满足安全性质P。在具体算法实现中,我们往往是从初始状态I出发,判断┐P代表的状态是否可达,即是否所有I可达的状态都是满足安全性质P的。如果我们在算法中找到了反例,即从I出发,经过一系列状态,可以到达┐P,则我们返回反例,用以说明安全性质P不成立;如果我们找到了一个不变式,即证明了从I出发,所有可达的范围都在一个满足P的状态集合中,则我们返回验证通过,安全性质P成立。下面我们先简要介绍几个常见的模型检查算法。

poYBAGQKix-AckgsAABtZqBzNWo829.png

图1 模型检查问题示例图

03模型检查算法介绍

3.1 Bounded Model Checking (BMC)

BMC是一个简单但是高效的模型检查算法,类似于图搜索中的广度优先搜索。BMC从初始状态出发,先判断是否可以直接一步转移到┐P,也就是不安全的状态中,若可以,则找出了一个长度为1的反例;若不行,则说明在初始状态一步的范围内,安全性质成立,接着,BMC增大步数,判定从初始状态出发,是否可以两步转移到┐P,同样地,若可达则返回反例,若不可达,则继续增大步数,直到找到反例或者达到限定的时间为止。

如下图所示,从S0出发,先确定一步可达的S1和S2满足性质,接着增大步数,确定两步可达的S3满足性质,再确定三步可达的S4和S5满足性质,最终步数为4时,检查出四步可达的S6不满足性质,从而得到反例。

使用BMC算法可以很快地找到长度最短的反例,但是它的局限性也很大,假设BMC在k步之内找不到反例,这只能说明初始状态k步可达的状态满足安全性质,而不能证明初始状态可达的状态都是满足安全性质的,也就是说,BMC只适用于反例的寻找,而不适合证明模型满足安全性质。

pYYBAGQKi2iALx0fAAGEu0IISnw473.png

图2:BMC算法示例图

3.2 Interpolation Model Checking (IMC)

IMC是在BMC的基础上改进来的模型检查算法,它不仅可以查找反例,也可以证明模型是满足安全性质P的,弥补了BMC算法的缺陷。

简要地说,在查找反例上,IMC和BMC一样,都是靠确定从初始状态出发,┐P代表的非安全状态是否是k步可达的,如果是,则找到了反例,若不是,则继续增大k的值。和BMC不同的是,对于每一个步数k,IMC都维持了一个初始状态k步之内可达的状态的超集R,即R里面也包含了一些其他的状态,且R里面的元素都满足安全性质,在寻找反例的过程中,IMC不断扩大集合R,若在某个时刻,R不能被扩大,即R里面的元素只能转移到R里面,则我们找到了一个不变式,即证明了从初始状态出发,可达的所有状态都是满足安全性质的,从而证明了模型是满足安全性质P的。

如下图所示,从初始状态S0出发,我们找到了一个状态集合R,使得S0可达的状态S1、S2和S3都在集合R中,且R中的元素都满足安全性质,因此我们证明了模型是满足安全性质的,集合R就是证据。

poYBAGQKi6CAfaVBAAET-7LjxBc743.png

图3 IMC算法示例图

3.3 Property Directed Reachability (PDR)

PDR是一个较为复杂的模型检查算法,简要地说,它维持了一个满足安全性质P的状态集合的序列F,其中F(0)是初始状态I,而F(1)则是初始状态一步之内可达的集合的超集,即它里面除了有初始状态一步之内可达的状态,也包含了一些其他的状态,以此类推,后面每一个F(i)集合都是前一个F(i-1)集合的一步之内可达的集合的超集,PDR算法不断地在F(i)集合中寻找那些可以一步转移到┐P的元素S,若F(i)中的其他元素可以一步转移到S,则PDR接着判断F(i-1)中的元素可不可以两步转移到S,以此类推,若在F(0),即初始状态中,有元素可以多步转移到S,则找到了一个反例,即性质P不成立,如果在这个过程中,我们找到一个F(i)集合,使得它里面的元素都不能转移到S,则我们可以把S从这个集合及它之前的集合中删除,我们不断重复这个过程,如果在某一步,存在某个F(i)使得F(i)=F(i-1),即F(i-1)里面的状态只能转移到F(i-1)里面时,我们就找到了一个不变式,即所有初始状态可达的状态都满足了性质P,证明了性质P成立。

如下图所示,在集合F(i+1)中,状态S4可以一步转移到非安全状态S6,但是集合F(i+1)中的其他集合不能转移到S4,因此我们把S4从Fi+1及其之前的集合中删除,删除S4后,我们发现集合F(i+1)和F(i)相等,即此时F(i)里面的状态只能转移到F(i)里面,因为F(i)是初始状态可达的状态的超集,从而初始状态可达的元素都在F(i)中,因此模型的安全性质就得到了满足,F(i)就是证据。

pYYBAGQKi8qAbH2QAAEZieLW3rQ357.png

图4 PDR算法示例图

3.4 Complementary Approximate Reachability (CAR)

CAR算法也是一个较为复杂的模型检查算法,可以有两个搜索方向(Forward CAR和Backward CAR),后续我们以Backward CAR为例。CAR维护了两个序列,B序列和F序列,F序列是从初始状态I出发可达的状态的子集的集合,B序列则是可以到达非安全状态的!P的状态的超集的集合,且F(0)= I , B(0)= !P。维护子集与超集的原因是F序列和B序列都是动态的,Fi的元素会随着算法运行不断增多,子集会越来越接近原集。而B(i)的元素则会不断减少,超集也会越来越接近原集。CAR算法就是不断地去做类似的SAT调用,然后根据结果去更新F和B序列。例如CAR算法会不断地通过SAT来判断某个状态s能否一步转移到B(i),若成立,则可以拿到s的一个后继状态s'并把其加入到F序列,随后CAR则递归询问s'是否可以转移到B(i-1);若不成立,CAR则会拿到一个uc(最小不满足核),并把这个uc来更新B(i+1)。

若存在某个B(i),其是所有B(j) (j < i) 的并集的子集,那么模型是安全的。安全性条件生效表明B序列不会再扩大,即使继续扩展B序列,新的B(i+1)中的元素,只会是下标更小的B(i)中出现过的元素,这意味着初始状态I不可能到达B(0),因此模型是安全的。此时从B0至B(i)的并集构成了一个不变式。如果某一个状态空间F(i)中,存在一个状态s,此状态属于非安全状态!P,则得到一条以I为起点,状态s为终点路径,这条路径是待验证性质的反例,将被返回。

如下图所示,我们发现集合B(i+1)包含在所有B(j) (j < i+1) 的并集中,因此安全性条件生效,B(j) (j < i+1) 的并集就是我们要找的不变式(安全性证明)。

pYYBAGQKi_KAA_wfAAE7C2LqmKM331.png

图5 CAR算法示例图

参考文献:

[1] E. Clarke and H. Schlingloff, “Model checking,” in Handbook of Automated Reasoning, A. Robinson and A. Voronkov, Eds. MIT Press, 2001, pp. 1635–1790.

[2] O. Kupferman, N. Piterman, and M. Y. Vardi, “An automata-theoretic approach to infinite-state systems,” in Time for Verification: Essays in Memory of Amir Pnueli, Z. Manna and D. A. Peled, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2010, pp. 202–259.

[3] K. L. McMillan, Symbolic Model Checking. Boston, MA: Springer US, 1993.

[4] Y. Vizel, G. Weissenbacher, and S. Malik, “Boolean satisfiability solvers and their applications in model checking,” Proceedings of the IEEE, vol.103, no. 11, pp. 2021–2035, 2015.

[5] A. Biere, A. Cimatti, E. Clarke, and Y. Zhu, “Symbolic model checking without BDDs,” in Tools and Algorithms for the Construction and Analysis of Systems (TACAS), W. R. Cleaveland, Ed. Berlin, Heidelberg: Springer Berlin Heidelberg, 1999, pp. 193–207.

[6] K. L. McMillan, “Interpolation and SAT-based model checking,” in Computer Aided Verification, W. A. Hunt and F. Somenzi, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2003, pp. 1–13.

[7] A. R. Bradley, “SAT-based model checking without unrolling,” in Verification, Model Checking, and Abstract Interpretation, R. Jhala and D. Schmidt, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2011, pp. 70–87.

[8] J. Li, R. Dureja, G. Pu, K. Y. Rozier, and M. Y. Vardi, “Simplecar: An efficient bug-finding tool based on approximate reachability,” in Computer Aided Verification, H. Chockler and G. Weissenbacher, Eds. Cham: Springer International Publishing, 2018, pp. 37–44.

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4585

    浏览量

    92443
  • PDR
    PDR
    +关注

    关注

    1

    文章

    7

    浏览量

    12357
收藏 人收藏

    评论

    相关推荐

    FSS里面频率选择表面模型仿真问题

    HFSS两个一样的模型和设置,仿真结果一个有滤波效果,一个信号都没传过去,检查很多遍了实在检查不出问题,求求各位大神帮忙看看了*附件:FSS 2021R1.zip
    发表于 10-30 10:09

    扫描模型模型检查的注意事项

    扫描模型模型检查是一个至关重要的步骤,它确保了扫描过程的顺利进行和最终结果的准确性。 引言 在现代工业设计、制造和建筑领域,三维扫描技术已经成为获取精确模型数据的重要手段。无论是为了
    的头像 发表于 10-14 14:59 142次阅读

    电路灯不亮怎么检查

    当电路灯不亮时,可以按照以下步骤进行检查和排查问题: 一、检查基本状态 确认开关状态 : 检查与该灯相关联的开关是否处于打开状态。有时候我们可能会忘记打开开关,导致灯泡无法点亮。 检查
    的头像 发表于 09-29 10:15 272次阅读

    安宝特产品 安宝特3D Evolution:高效准确的CAD质量检查工具

    安宝特3D Evolution质量检查器可基于多种规则对CAD图形质量进行检测,是唯一通过SASIG和VDA规范认证的转换工具。 它可以自动且准确地识别、检查模型中存在的错误,并提供特定自动修复和交互式清理功能,可以对
    的头像 发表于 08-21 18:06 537次阅读
    安宝特产品  安宝特3D Evolution:高效准确的CAD质量<b class='flag-5'>检查</b>工具

    快恢复桥检查方法有哪些?

    快恢复桥作为现代电力电子设备中的重要组成部分,其性能和可靠性直接影响整个系统的效率和稳定性。快恢复桥具有较快的恢复时间,广泛应用于各种高频电力转换场合。因此,定期对快恢复桥进行检查和维护至关重要
    的头像 发表于 07-11 10:38 248次阅读
    快恢复桥<b class='flag-5'>检查</b>方法有哪些?

    图像分割与语义分割中的CNN模型综述

    图像分割与语义分割是计算机视觉领域的重要任务,旨在将图像划分为多个具有特定语义含义的区域或对象。卷积神经网络(CNN)作为深度学习的一种核心模型,在图像分割与语义分割中发挥着至关重要的作用。本文将从CNN模型的基本原理、在图像分割与语义分割中的应用、以及具体的
    的头像 发表于 07-09 11:51 548次阅读

    鸿蒙开发Ability Kit程序框架服务:FA模型与Stage模型应用组件互通综述

    FA模型与Stage模型是两套不同的应用模型,他们拥有各自的组件。FA模型提供三种应用组件,分别是PageAbility、ServiceAbility和DataAbility。Stag
    的头像 发表于 06-24 16:43 425次阅读
    鸿蒙开发Ability Kit程序框架服务:FA<b class='flag-5'>模型</b>与Stage<b class='flag-5'>模型</b>应用组件互通<b class='flag-5'>综述</b>

    【大语言模型:原理与工程实践】大语言模型的评测

    大语言模型的评测是确保模型性能和应用适应性的关键环节。从基座模型到微调模型,再到行业模型和整体能力,每个阶段都需要精确的评测来指导
    发表于 05-07 17:12

    【大语言模型:原理与工程实践】核心技术综述

    其预训练和微调,直到模型的部署和性能评估。以下是对这些技术的综述模型架构: LLMs通常采用深层的神经网络架构,最常见的是Transformer网络,它包含多个自注意力层,能够捕捉输入数据中
    发表于 05-05 10:56

    脑机接口电极界面材料与改性技术进展综述

    近期,华东理工大学 材料科学与工程学院 屈雪教授等人在期刊Biomaterials Translational上发表综述文章:Advances in electrode interface
    的头像 发表于 03-12 09:39 958次阅读
    脑机接口电极界面材料与改性技术进展<b class='flag-5'>综述</b>

    关于大模型在软件测试领域应用的全面综述

    模型(LLM)由于其卓越的自然语言理解、推理等能力,已经被应用于各种场景,取得了前所未有的效果。
    的头像 发表于 01-18 09:33 5262次阅读
    关于大<b class='flag-5'>模型</b>在软件测试领域应用的全面<b class='flag-5'>综述</b>

    基于LLM的表格数据的大模型推理综述

    面向表格数据的推理任务,在计算机领域,特别是自然语言处理(Natural Language Processing,NLP)领域的研究中扮演着重要角色[1]。该任务要求模型在给定一个或多个表格的情况下,按照任务要求,生成相应的结果作为答案(例如:表格问答、表格事实判断)。
    发表于 01-08 09:56 1464次阅读
    基于LLM的表格数据的大<b class='flag-5'>模型</b>推理<b class='flag-5'>综述</b>

    AD539没有spice模型,该如何仿真?

    的正弦波,VX增益用的是1V的直流电,但输出端Vw处始终没有波形,检查不出原因,谁能指导一下,或者告诉我可以在哪个软件上仿真,或者给我一个AD539的spice模型文件,谢谢了。根据下面这个电路图连接的电路。
    发表于 11-21 08:03

    500篇论文!最全代码大模型综述

    经典 Transformer 使用不可学习的余弦编码,加在模型底层的词向量输入上。GPT、BERT将其改为可学习的绝对位置编码,并沿用到了RoBERTa、BART、GPT-2、GPT-3等经典模型
    的头像 发表于 11-17 17:31 1209次阅读

    什么是电气规则的检查

    对于Altium Designer来说,在所有的布局,布线,铺铜都完成之后,也就完成了初步的设计工作,接下来就是进行电气规则的检查了。 什么是电气规则的检查呢? 电气规则检查包括很多内容,比如说丝印
    的头像 发表于 11-06 15:17 2010次阅读
    什么是电气规则的<b class='flag-5'>检查</b>