强分离逻辑中的范式与溯因问题
1. 引言
在强分离逻辑的研究中,决策程序可自动处理一些蕴含关系。为帮助读者理解,下面以示例 6 的蕴含检查为例进行简要直接的论证。同时,本文将探讨范式以及溯因问题,展示强分离逻辑在程序验证中的潜力。
2. 示例蕴含检查论证
对于示例 6,已知 $Q’$ 可简化为 $Q’’ = {a \mapsto x \circledast (ls(a, nil) * ls(a’, nil)) * a \mapsto a’}$。每个 $Q’‘$ 的模型 $(s, h)$ 必定包含指针 $a \mapsto a’$、列表段 $ls(a’, nil)$ 以及一个堆 $h’$。为得到列表段 $ls(a, nil)$,可将指针 $a \mapsto x$ 添加到 $h’$ 中。通过查看列表段谓词的语义可知,$h’$ 实际上必须是列表段 $ls(x, nil)$。此外,指针 $a \mapsto a’$ 可与列表段 $ls(a’, nil)$ 组合以获得 $ls(a, nil)$。
3. 范式相关内容
3.1 抽象函数提升
将抽象函数从栈提升到变量集。设 $x \subseteq Var$ 是有限变量集,$\phi \in SL$ 是一个公式,且 $fvs(\phi) \subseteq x$。定义 $\alpha_x(\phi) := {\alpha_s(\phi) | dom(s) = x}$ 和 $abst_x(\phi) := \alpha_x(\phi) \cap AMS_{\lceil\phi\rceil,x}$,其中 $AMS_{k,x} := {\langle V, E, \rho, \
超级会员免费看
订阅专栏 解锁全文
37

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



