基于增量SMT问题求解的软件断言验证方法、系统及设备
摘要文本
本发明提供了一种基于增量SMT问题求解的软件断言验证方法、系统及设备,该方法包括:将软件源代码中待验证的断言转化为位向量SMT公式;选取一个基础位向量SMT公式,将其他位向量SMT公式相对于基础位向量SMT公式的增量表达式部分划分为多层上下文;将待求解的位向量SMT公式转化为CNF合取范式;对CNF合取范式进行预求解,并记录属于目标上下文的子句中包括的变量标号,目标上下文为目标位向量SMT公式中相较于上一次求解的位向量SMT公式的增量部分的上下文;若预求解失败,将包含相应变量标号的子句删除;采用完整的SAT求解算法对CNF合取范式进行求解。本发明能够避免信息积累过程中产生的冗余信息,有效提高软件断言验证系统的效率。
申请人信息
- 申请人:中国科学院软件研究所
- 申请人地址:100086 北京市海淀区中关村南四街4号
- 发明人: 中国科学院软件研究所
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 基于增量SMT问题求解的软件断言验证方法、系统及设备 |
| 专利类型 | 发明申请 |
| 申请号 | CN202311656869.7 |
| 申请日 | 2023/12/5 |
| 公告号 | CN117573556A |
| 公开日 | 2024/2/20 |
| IPC主分类号 | G06F11/36 |
| 权利人 | 中国科学院软件研究所 |
| 发明人 | 蔡少伟 |
| 地址 | 北京市海淀区中关村南四街4号 |
专利主权项内容
1.一种基于增量SMT问题求解的软件断言验证方法,其特征在于,所述方法包括:获取待验证的软件源代码,按照代码执行路径将软件源代码中待验证的各个代码断言转化为相应的位向量SMT公式,得到位向量SMT公式集合;从位向量SMT公式集合中选取一个基础位向量SMT公式,根据位向量SMT公式集合各个位向量SMT公式所包括表达式之间的相似关系,将位向量SMT公式集合中其他位向量SMT公式相对于基础位向量SMT公式扩展出的增量表达式部分划分为多层上下文;对当前待求解的目标位向量SMT公式进行公式化简,并将化简后的目标位向量SMT公式转化为目标CNF合取范式;采用预设的简化后的SAT求解算法对目标CNF合取范式进行预求解,并在预求解过程中记录目标CNF合取范式中属于目标上下文的子句中所包括变量的变量标号,目标上下文为目标位向量SMT公式中相较于上一次求解的位向量SMT公式的增量部分的上下文;若预求解失败,则根据记录的目标上下文的子句中所包括变量的变量标号将包含相应变量标号的各个子句作为冗余子句进行删除;采用预设的完整的SAT求解算法对目标CNF合取范式进行求解。