基于算法学习推导不变式
1. 引言
在程序分析中,推导循环不变式是一个重要的任务。本文介绍了一种结合算法学习、决策程序和谓词抽象的技术,用于推导程序中的不变式。该技术通过查询解析算法来引导不变式的发现过程。
2. 查询解析算法
2.1 成员查询解析
成员查询解析算法(Algorithm 3)用于判断一个给定的赋值是否满足某个条件。以下是该算法的具体步骤:
(* ι: 欠近似; ι: 过近似 *)
Input: a valuation μ for B(A)
θ := γ∗(μ);
if SMT(θ) →UNSAT then return NO;
if SMT(θ ∧¬ι) →UNSAT then return YES;
if SMT(θ ∧¬ι) →ν then return NO;
abort with θ;
该算法的流程如下:
1. 计算 θ := γ∗(μ) 。
2. 使用 SMT 求解器检查 θ 是否不可满足,如果是则返回 NO 。
3. 检查 θ ∧¬ι 是否不可满足,如果是则返回 YES 。
4. 如果 θ ∧¬ι 有解 ν ,则返回 NO 。
5. 如果以上情况都不满足,则以 θ 终止。
超级会员免费看
订阅专栏 解锁全文
1497

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



