基于算法学习、决策程序和谓词抽象推导循环不变式
在程序验证领域,循环不变式的推导是一个关键问题。传统的不变式生成技术往往无法充分利用不变式的灵活性,而本文介绍的新技术通过结合算法学习、决策程序和谓词抽象,为解决这一问题提供了新的思路。
1. 背景与动机
算法学习在组合推理的假设生成中已有应用。与传统技术不同,学习方法通过与模型检查器逐步交互来寻找假设,能利用假设的灵活性获得更优解。同样,循环不变式通常也不唯一,程序员一般会逐步推导和细化不变式。然而,传统的不变式生成技术未能充分利用这种灵活性,与传统的假设生成技术存在类似的局限。
2. 新技术概述
本文提出的新技术将算法学习、决策程序和谓词抽象相结合,用于推导命题(或无量词)公式中的循环不变式。具体来说,对于 while 循环,使用布尔公式的精确学习算法通过询问查询来搜索不变式,查询可由决策程序自动解决(但并非总是如此)。由于学习算法生成布尔公式,而决策程序处理命题公式,因此需要进行谓词抽象和具体化来集成这两个组件。
在实际应用中,关于循环不变式的信息往往不完整,查询可能因信息不足而无法解决。该学习方法的一个显著特点是利用不变式的灵活性,当查询解决需要决策程序无法获取的信息时,会简单地给出随机答案。虽然可以使用静态分析来计算更精确的信息,但对于给定的前置和后置条件,存在大量的不变式,少量的随机信息并不影响算法学习推断不变式。
3. 示例说明
考虑以下 while 循环:
{i = 0} while
超级会员免费看
订阅专栏 解锁全文
16

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



