69、受约束求解器启发的归纳不变式推断算法

受约束求解器启发的归纳不变式推断算法

1. 改进算法与优化

原修改算法在修改后的抽象域 CQ 中无法找到归纳不变式,因为该域中不存在这样的归纳不变式。为了优化这个不进行收紧操作的修改算法,可以以一种修改后的形式重新引入收紧操作:不是收紧到任意更小的盒子 T♯,而是收紧到 Q 中包含 T♯ 的最小盒子。

2. 实验设置

实现了一个用 OCaml 编写的原型分析器,它支持一种类似于图 4 的简单玩具语言,该语言只有实值变量,没有函数和嵌套循环。分析器实现了主算法(图 8),可用于任意数值域,同时也实现了不变式细化和故障恢复方法。它由一个数值抽象域进行参数化,目前支持有理边界的盒子、浮点边界的盒子,以及通过 Apron 库实现的浮点边界的八角形。分析器利用了特定的数据结构,并且在实现中使用了浮点运算,尽管存在浮点舍入误差,但仍然是可靠的。

3. 实验结果

对一些简单循环进行了分析,实验结果如下表所示:
| Program | boxes | | | octagons | | |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| | # elems. | # iters. | time (s) | # elems. | # iters. | time (s) |
| Filter | 181 | 965 | 0.076 | 42 | 224 | 0.089 |
| Linear | 6734 | 10 | 2.08 | – | – | – |
| Non-linear | 5987 | 10 | 2.64 | – | – |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值