单量化变量分离逻辑的深入解析
1. 堆域的规范分解
在分析内存状态时,我们需要考虑程序变量的解释以及堆映射下的图像。为了更好地理解内存状态,我们引入了一些集合来对堆域进行规范分解。
-
集合定义
- (pred^{\heartsuit}\langle s, h \rangle \stackrel{def}{=} pred\langle s, h \rangle \cap \heartsuit\langle s, h \rangle)
- (pred^{\heartsuit}\langle s, h, i \rangle \stackrel{def}{=} pred\langle s, h, i \rangle \cap \heartsuit\langle s, h \rangle)
- (loop^{\heartsuit}\langle s, h \rangle \stackrel{def}{=} loop\langle s, h \rangle \cap \heartsuit\langle s, h \rangle)
- (rem^{\heartsuit}\langle s, h \rangle \stackrel{def}{=} rem\langle s, h \rangle \cap \heartsuit\langle s, h \rangle)
例如,(pred^{\heartsuit}\langle s, h \rangle) 包含了堆 (h) 中所有是变量解释的前驱,但不存在程序变量 (x) 使得 (s(x) =
超级会员免费看
订阅专栏 解锁全文
1032

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



