自动化属性导向自组合算法的优化与实践
在程序验证领域,确保程序的安全性和正确性至关重要。自动化属性导向自组合(Automated Property Directed Self Composition)算法在此方面发挥着重要作用,但也面临着一些挑战。本文将深入探讨该算法的相关内容,包括其原理、面临的问题以及改进方案,并通过实验验证改进后的效果。
1. Pdsc算法概述
Pdsc算法旨在寻找程序的安全证明,但它存在一些局限性。具体来说,它只能用于寻找证明,无法检测真正的反例;需要外部提供一组谓词;如果提供的谓词不足以表达安全归纳不变式,算法将无法继续推进。
以一个示例来说明,有两个程序的循环可以进行同步,使得第一个程序的循环每执行两次,第二个程序的循环执行一次。这种组合方式能得到一个更简单的循环不变式:y1 = 2 * y2。Pdsc算法通过固定一个证明语言,然后在该语言允许的可能组合中进行搜索,自动得出这种组合。对于这个示例,Pdsc需要用户提供四个谓词:z1==2 z2、y1==2 y2、z1==2 z2 - 1和y1==2 y2 + x2,才能构建相应的状态并完成证明。
2. 改进算法的关键组件
为了克服Pdsc算法的局限性,引入了两个关键组件:
- 虚假性检查器(spuriousness checker) :当程序不满足所需的k - 安全属性时,获取真正的反例跟踪。
- 谓词合成器(predicate synthesizer) :消除虚假的反例跟踪,并丰富用于寻找安全不变式的语言。
超级会员免费看
订阅专栏 解锁全文
1039

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



