36、高阶程序环境等价性分析:从控制流到形状分析

高阶程序环境等价性分析:从控制流到形状分析

1. 抽象与具体状态空间

抽象状态空间(图 1 中的 ˆΣ)与具体状态空间的结构平行。在这些域中,我们采用自然偏序,例如 ve ⊔ ve′ = λˆb. ve(ˆb) ∪ ve′(ˆb)。

绑定环境(BEnv)作为机器状态和闭包的组成部分,是环境问题所涉及的环境。在语义中,绑定环境将变量映射到绑定。绑定 b 是为每个接收值的变量实例创建的纪念令牌,例如在 k - CFA 中,绑定是变量名与绑定时间戳的配对。值环境 ve 跟踪与每个绑定关联的可表示值(D),可表示值 d 是一个闭包。

在控制流分析(CFAs)中,绑定作为环境的原子组件,扮演着指针分析中地址的角色。我们的最终目标是推断抽象绑定背后具体值之间的关系。例如,我们希望能够证明在某些时间集上变量 v 的绑定,在值环境下,与在其他时间集上变量 x 的绑定相等。在纯 λ - 演算中,绑定之间唯一明显的关系是相等和不相等。

在 CFA 理论中,时间戳也被称为不太直观的轮廓。具体和抽象状态空间都未定义时间戳和绑定的精确结构。绑定的选择决定了分析的多态性。时间戳以某种方式编码执行历史,因此在抽象下,其结构决定了上下文敏感性中的上下文。

具体和抽象状态空间通过参数化的二阶抽象映射 αη : Σ → ˆΣ 相连,其中参数 η : (Addr → Addr) ∪ (Time → Time) 对绑定和时间进行抽象:

αη(call, β, ve, t) = (αη(V ), αη(β), αη(ve), η(t))
αηBEnv(β) = λv.η(β(v))
αηVEnv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值