数据驱动的数值不变式合成
在程序验证领域,自动不变式合成与验证是一个关键问题,它对于确保程序的安全性和正确性至关重要。本文将介绍一种基于ICE框架和决策树学习的方法,用于解决安全验证问题。
1 不变式合成方法概述
在不变式合成领域,有多种方法被提出。一些方法使用支持向量机(SVM)计算半空间的组合来对状态进行分类,还有方法将问题重新表述为机器学习中的几何概念学习。
ICE框架最初基于约束求解器实现,后来使用决策树学习算法进行实例化。这些实例化方法都需要不变式或其中出现的公式有固定的模板。LoopInvGen按需枚举谓词,并且扩展到混合枚举多个域或语法的机制。CLN2INV使用连续逻辑网络解决问题,Code2Inv则引入了通用的深度学习方法到程序验证中,使用图神经网络捕获程序结构,并使用强化学习指导特定域的搜索启发式。
此外,ICE和ICE - DT的学习方法被推广到解决约束 Horn 子句(CHC)问题。在理论研究方面,有抽象学习框架结合了反例引导的归纳合成(CEGIS)原则,还对不变式合成中的过拟合问题进行了研究,并且比较了ICE和IC3/PDR的复杂度。
2 基于不变式学习的安全验证
2.1 线性约束与安全验证
设 $X$ 是一组变量,关于 $X$ 的线性公式是形如 $\sum_{i = 1}^{n} a_{i}x_{i} \leq b$ 的线性约束的布尔组合,其中 $x_{i}$ 是 $X$ 中的变量,$a_{i}$ 是整数常量,$b \in Z \cup {+\infty}$。我们使用线性公式对具有整数变量的程序进行符号推理。
假设一个程序有一组变量 $V$,设 $
超级会员免费看
订阅专栏 解锁全文
1396

被折叠的 条评论
为什么被折叠?



