过程间Herbrand等式:原理与应用
1. 基础概念与操作符定义
在程序分析中, xj := ? 被解释为对 xj 进行值赋值的非确定性选择。同样,函数调用的语义也可简化为赋值操作的语义,这里主要涉及变量 x1 。为了确定可达状态集,引入了两个二元操作符:
- [[call]] : 2TΩ(X) × 2X→TΩ→2X→TΩ :使用被调用函数的效果集将调用前的状态集转换为调用后的状态集。
- [[call]] (T, S) = {[[x1 := t]] S | t ∈T} = {σ[x1 →σ(t)] | t ∈T, σ ∈S}
- [[[call]]] : 2TΩ(X) × 2TΩ(X) →2TΩ(X) :用于转换效果集,将被调用函数的效果扩展到调用后积累的效果中。
- [[[call]]] (T1, T2) = {[[[x1 := t]]] T2 | t ∈T1} = {e[t/x1] | t ∈T1, e ∈T2}
函数调用可看作是对所有赋值 x1 := t 的非确定性选择,其中 t 是被调用函数的潜在效果。通过约束系统 S 来刻画函数的效果集 S(f) ⊆TΩ(X) , f ∈Funct :
| 约束 | 描述 |
| ---- | ---- |
| [S1] |
超级会员免费看
订阅专栏 解锁全文
1万+

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



