25、利用算法学习、决策程序和谓词抽象推导不变式

基于学习与抽象的不变式推导

利用算法学习、决策程序和谓词抽象推导不变式

在程序验证领域,寻找循环不变式是一项关键任务。传统的不变式生成技术往往存在一定的局限性,不能充分利用不变式的灵活性。本文将介绍一种结合算法学习、决策程序和谓词抽象的自动化技术,用于在命题公式中寻找循环不变式。

1. 引言

算法学习在组合推理中的假设生成方面已有应用。与传统技术不同,学习方法不是离线推导假设,而是通过与模型检查器逐步交互来寻找假设。由于组合推理中的假设通常不是唯一的,算法学习可以利用假设的灵活性来获得更优的解决方案。同样,循环不变式也常常不是唯一的,程序员通常会逐步推导和细化不变式。然而,传统的不变式生成技术未能充分利用这种灵活性。

本文展示了算法学习、决策程序和谓词抽象这三种技术如何协同工作,以推导命题(或无量词)公式中的循环不变式。该新技术能够在无需静态或动态分析帮助的情况下,为一些 Linux 设备驱动程序和 SPEC2000 基准测试生成不变式。

对于 while 循环,布尔公式的精确学习算法通过询问查询来搜索不变式。查询可以(并非总是)由决策程序自动解决。由于学习算法只生成布尔公式,而决策程序处理命题公式,因此需要进行谓词抽象和具体化来整合这两个组件。

在实际情况中,关于循环不变式的信息往往不完整,查询可能因信息不足而无法解决。本文的学习方法的一个显著特点是利用不变式的灵活性。当查询解决需要决策程序无法获取的信息时,我们简单地给出随机答案。虽然可以使用静态分析来计算更准确的近似信息,但给定的前置和后置条件下存在许多不变式,少量的随机信息不会妨碍算法学习推断不变式。

2. 目标语言和符号

我们使用的简单命令式语言的语句语法如下: <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值