System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于不可满足核的IC3加速验证方法及系统技术方案_技高网

一种基于不可满足核的IC3加速验证方法及系统技术方案

技术编号:43256421 阅读:0 留言:0更新日期:2024-11-08 20:38
本发明专利技术公开了一种基于不可满足核的IC3加速验证方法及系统,本发明专利技术包括将待验证的程序模型输入采用SMT求解器的IC3算法模型进行求解以获得待验证的程序模型是否满足指定的安全属性或规范的验证结果,且包括初始化不可满足核库,每一次调用SMT求解器前检查不可满足核库,如果找到与当前公式匹配的不可满足核则跳过求解过程,否则才执行求解并在求解后将返回的不可满足核更新到不可满足核库中。本发明专利技术旨在利用IC3算法中大量约束求解间具有相似性,根据前面约束求解构建不可满足核库,基于已有的不可满足核心快速实现后面部分问题的求解可以减少SMT求解次数从而减少IC3算法的运行时间,加速IC3算法的验证速度。

【技术实现步骤摘要】

本专利技术涉及软件工程领域,具体涉及一种基于不可满足核的ic3加速验证方法及系统。


技术介绍

1、模型检验(model checking)是一种用于验证系统设计是否满足特定规范的自动化技术。它主要应用于硬件电路、软件程序、协议验证等领域,通过系统地检查模型的所有可能状态,确保其行为符合预期。随着系统规模和复杂度的增加,传统的模型检测方法面临着状态空间爆炸问题,这显著降低了验证过程的效率和可行性。

2、ic3(incremental construction of inductive clauses for indubitablecorrectness)算法作为一种增量式的状态空间搜索方法,已经在这一领域取得了重要的进展。ic3算法是一种用于增量检验的增量式状态空间搜索算法,主要应用于硬件和软件系统的验证。ic3算法在2011年由aaron bradley提出,以其高效性和灵活性,迅速成为符号模型检验领域的关键技术之一。ic3算法的核心思想是通过逐步构建一系列可归纳的子句(inductive clauses),这些子句能够证明系统的安全性。算法通过迭代地增强这些子句集合,直至覆盖所有可达状态,确保系统的所有状态都满足给定的安全性质。ic3算法采用递归和增量式的方法来验证不变量。通过递归求解,算法逐步生成和验证新的子句,每次迭代只增加必要的子句,避免了大规模的计算开销。这种增量式的构建方式使得算法能够高效地处理大规模状态空间。ic3中主要有两个过程分别是阻塞阶段和传播阶段。阻塞阶段的主要目的是通过冲突分析和反例阻塞,确保不变子句(inductive clauses)在系统中成立。传播阶段的主要目的是通过forward状态扩展,逐步传播可达状态,验证和增强系统的不变子句。

3、ic3算法是基于smt(satisfiability modulo theories)求解器进行求解。smt求解器用于确定逻辑公式在特定理论下是否可满足。在ic3算法中,smt求解器被用于多个关键步骤,包括状态验证、子句生成和冲突分析。其中,一个子句(clause)是若干个文字(literals)构成的析取,形如。而一个合取项(cube)是若干个文字(literals)的合取,形如。一个文字(literals)是一个命题变量或者其否定。例如,如果x是一个命题变量,那么x或者¬x都是文字,“”表示逻辑与,“”表示逻辑非(否定)。但是整个过程中调用smt求解器次数过多,随着测试用例的复杂度的增大,其求解次数和求解时间也增多,smt求解时间在整个过程中的占比时间过大。不可满足核心(unsatisfiable core),通常简称为 unsat core,是在求解布尔公式时出现的一种重要信息。当使用 smt(satisfiability modulo theories)求解器尝试验证一个逻辑公式时,如果发现该公式不可满足,smt求解器会返回不可满足核心,它是导致公式不可满足的最小子集合。


技术实现思路

1、本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种基于不可满足核的ic3加速验证方法及系统,本专利技术旨在利用ic3算法中大量约束求解间具有相似性,根据前面约束求解构建不可满足核库,基于已有的不可满足核心快速实现后面部分问题的求解可以减少sat求解次数从而减少ic3算法的运行时间,加速ic3算法的验证速度。

2、为了解决上述技术问题,本专利技术采用的技术方案为:

3、一种基于不可满足核的ic3加速验证方法,用于对使用lustre语言进行建模的软件程序模型进行验证,所述ic3加速验证方法包括将待验证的程序模型的lustre文件输入采用smt求解器的ic3算法模型进行求解以获得待验证的程序模型是否满足指定的安全属性或规范的验证结果,且采用smt求解器的ic3算法模型进行求解包括:初始化不可满足核库,所述不可满足核库用于存储之前求解过程中从求解器获得的不可满足核,在ic3算法模型每一次调用smt求解器进行公式求解前检查不可满足核库,如果在不可满足核库中找到与当前公式匹配的不可满足核则直接获取该不可满足核并跳过本次调用smt求解器的求解过程,否则才调用smt求解器进行公式求解;在调用smt求解器进行公式求解后,如果smt求解器判定当前公式不可满足则将smt求解器返回的不可满足核更新到不可满足核库中;如果smt求解器判定当前公式可满足则smt求解器返回的满足当前公式的一组赋值;所述不可满足核库包括用于存储下式所示公式匹配的不可满足核的不可满足核库:

4、,

5、上式中,为安全属性,用于软件系统应该满足的安全条件或约束;为forward状态集合,forward状态集合是从初始状态集合i出发通过k步迁移关系t后可达的状态集合,forward状态集合为合取范式,其格式为,其中~为子句,为逻辑与;为一步转移关系;为子句,子句,其中~为文字,为逻辑或;为子句经过一步迁移后的否定状态,为逻辑非;所述不可满足核库还包括用于存储下式所示公式匹配的不可满足核的不可满足核库:

6、,

7、上式中,为初始状态集合,为子句,子句,其中~为文字,为逻辑或,为逻辑与,为逻辑非。

8、可选地,所述在ic3算法模型每一次调用smt求解器进行公式求解前检查不可满足核库包括:将待求解公式的各个子句和文字有序地整理到一个公式信息列表中;遍历不可满足核库,判断不可满足核库中是否存在包含在公式信息列表中的不可满足核,如果存在包含在公式信息列表中的不可满足核,则判定在不可满足核库中找到与当前公式匹配的不可满足核,否则判定在不可满足核库中没有找到与当前公式匹配的不可满足核。

9、可选地,所述不可满足核库为由单元组成的长度可变的列表,每一个单元为用于存储一个指定的公式匹配的不可满足核的列表。

10、可选地,所述在调用smt求解器进行公式求解后,如果smt求解器判定当前公式不可满足则将smt求解器返回的不可满足核更新到不可满足核库中包括:获取调用smt求解器进行公式求解的结果,如果公式求解的结果为当前公式可满足,smt求解器返回满足当前公式的一组赋值;如果公式求解的结果为当前公式不可满足,通过smt求解器获取当前公式的不可满足核,并将smt求解器返回的不可满足核信息转化为适合存储在不可满足核库中的格式,并存储在不可满足核库中。

11、可选地,所述ic3算法模型的执行步骤包括:

12、初始化循环变量k;

13、forward过程:执行ic3算法的forward求解并调用smt求解器进行公式求解,如果求解后达到不动点,则判定属性成立,待验证的程序模型满足指定的安全属性或规范的验证结果,结束并退出;如果求解后未达到不动点,则进入block过程;

14、block过程:执行ic3算法的block过程求解并调用smt求解器进行公式求解,如果求解后发现真实反例,则判定属性不成立,待验证的程序模型不满足指定的安全属性或规范的验证结果,结束并退出;如果本文档来自技高网...

【技术保护点】

1.一种基于不可满足核的IC3加速验证方法,用于对使用Lustre语言进行建模的软件程序模型进行验证,其特征在于,所述IC3加速验证方法包括将待验证的程序模型的Lustre文件输入采用SMT求解器的IC3算法模型进行求解以获得待验证的程序模型是否满足指定的安全属性或规范的验证结果,且采用SMT求解器的IC3算法模型进行求解包括:初始化不可满足核库,所述不可满足核库用于存储之前求解过程中从求解器获得的不可满足核,在IC3算法模型每一次调用SMT求解器进行公式求解前检查不可满足核库,如果在不可满足核库中找到与当前公式匹配的不可满足核则直接获取该不可满足核并跳过本次调用SMT求解器的求解过程,否则才调用SMT求解器进行公式求解;在调用SMT求解器进行公式求解后,如果SMT求解器判定当前公式不可满足则将SMT求解器返回的不可满足核更新到不可满足核库中;如果SMT求解器判定当前公式可满足则SMT求解器返回的满足当前公式的一组赋值;所述不可满足核库包括用于存储下式所示公式匹配的不可满足核的不可满足核库:

2.根据权利要求1所述的基于不可满足核的IC3加速验证方法,其特征在于,所述不可满足核库为由单元组成的长度可变的列表,每一个单元为用于存储一个指定的公式匹配的不可满足核的列表。

3.根据权利要求1所述的基于不可满足核的IC3加速验证方法,其特征在于,所述在IC3算法模型每一次调用SMT求解器进行公式求解前检查不可满足核库包括:将待求解公式的各个子句和文字有序地整理到一个公式信息列表中;遍历不可满足核库,判断不可满足核库中是否存在包含在公式信息列表中的不可满足核,如果存在包含在公式信息列表中的不可满足核,则判定在不可满足核库中找到与当前公式匹配的不可满足核,否则判定在不可满足核库中没有找到与当前公式匹配的不可满足核。

4.根据权利要求1所述的基于不可满足核的IC3加速验证方法,其特征在于,所述在调用SMT求解器进行公式求解后,如果SMT求解器判定当前公式不可满足则将SMT求解器返回的不可满足核更新到不可满足核库中包括:获取调用SMT求解器进行公式求解的结果,如果公式求解的结果为当前公式可满足,SMT求解器返回满足当前公式的一组赋值;如果公式求解的结果为当前公式不可满足,通过SMT求解器获取当前公式的不可满足核,并将SMT求解器返回的不可满足核信息转化为适合存储在不可满足核库中的格式,并存储在不可满足核库中。

5.根据权利要求1所述的基于不可满足核的IC3加速验证方法,其特征在于,所述IC3算法模型的执行步骤包括:

6.一种基于不可满足核的IC3加速验证系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~5中任意一项所述基于不可满足核的IC3加速验证方法。

7.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~5中任意一项所述基于不可满足核的IC3加速验证方法。

8.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~5中任意一项所述基于不可满足核的IC3加速验证方法。

...

【技术特征摘要】

1.一种基于不可满足核的ic3加速验证方法,用于对使用lustre语言进行建模的软件程序模型进行验证,其特征在于,所述ic3加速验证方法包括将待验证的程序模型的lustre文件输入采用smt求解器的ic3算法模型进行求解以获得待验证的程序模型是否满足指定的安全属性或规范的验证结果,且采用smt求解器的ic3算法模型进行求解包括:初始化不可满足核库,所述不可满足核库用于存储之前求解过程中从求解器获得的不可满足核,在ic3算法模型每一次调用smt求解器进行公式求解前检查不可满足核库,如果在不可满足核库中找到与当前公式匹配的不可满足核则直接获取该不可满足核并跳过本次调用smt求解器的求解过程,否则才调用smt求解器进行公式求解;在调用smt求解器进行公式求解后,如果smt求解器判定当前公式不可满足则将smt求解器返回的不可满足核更新到不可满足核库中;如果smt求解器判定当前公式可满足则smt求解器返回的满足当前公式的一组赋值;所述不可满足核库包括用于存储下式所示公式匹配的不可满足核的不可满足核库:

2.根据权利要求1所述的基于不可满足核的ic3加速验证方法,其特征在于,所述不可满足核库为由单元组成的长度可变的列表,每一个单元为用于存储一个指定的公式匹配的不可满足核的列表。

3.根据权利要求1所述的基于不可满足核的ic3加速验证方法,其特征在于,所述在ic3算法模型每一次调用smt求解器进行公式求解前检查不可满足核库包括:将待求解公式的各个子句和文字有序地整理到一个公式信息列表中;遍历不可满足核库,判断不可满足核库中是否存在包含在公式信息列表中的不...

【专利技术属性】
技术研发人员:尹良泽龚欣怡董威王戟李姗姗陈振邦刘万伟
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1