自动化终止分析的项重写方法
1. 链式重写规则
在终止分析中,可以用一组新的基于 Presburger 算术(PA)的重写规则来替换原有的 PA 重写规则。具体做法是将规则 (l → r \langle C \rangle) 与可能在无限链中跟随它的 PA 重写规则进行链式组合,这样能获取更多关于链中可能替换的信息。链式操作对应着一次性执行命令式程序中更大的部分,跨越多个控制点。
1.1 示例
考虑以下命令式程序及其生成的 PA 项重写系统(TRS):
while (x > z) {
while (y > z) {
y--
}
x--
}
对应的 PA - TRS 规则如下:
- (eval1(x, y, z) → eval2(x, y, z) \langle x > z \rangle) (7)
- (eval2(x, y, z) → eval2(x, y - 1, z) \langle y > z \rangle) (8)
- (eval2(x, y, z) → eval1(x - 1, y, z) \langle y \not> z \rangle) (9)
通过 PA - 多项式解释 (Pol(eval1) = Pol(eval2) = x2 - x3),将 PA - TRS ({(7), (8), (9)}) 转换为 ({(7), (9)})。但现有的技术无法处理 ({(7), (9)})。注意到在任何链中,规则 (7) 之
超级会员免费看
订阅专栏 解锁全文
934

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



