类型推断与验证实验
1 实验概述
本次实验主要有两个目标:一是验证在实际应用中,是否能推断出比 ML 类型推断算法更通用(更精确)的类型;二是将原本为逻辑程序开发的验证方法应用于函数式程序。
1.1 类型推断实验
- 实现方式 :使用 OCAML 语言实现了一个参数化抽象解释器,对应抽象语义族。除递归情况外,实现与 Damas - Milner 算法的实现非常接近。
- 实验结果 :通过在递归函数的抽象语义中计算更好的不动点近似值,无需借助更复杂的类型系统(如多态递归),就能成功推断出更精确的类型。
1.2 类型验证实验
- 验证方法 :基于抽象解释的验证方法,核心是应用与递归定义相关的“抽象函数”。
- 实现难度 :将类型分析器转换为类型验证器几乎是一项直接的任务,只需添加几行额外的代码。
2 抽象解释与验证
2.1 抽象解释理论
抽象解释是一种用于近似离散动态系统语义的通用理论。抽象语义是对具体语义的近似,其中精确的(具体)值被(抽象)属性所取代,这些属性由抽象域建模。
在基于抽象解释的静态程序分析中,我们计算抽象不动点语义。假设在具体域 $(C, ⊑)$ 上有一个语义评估函数 $T_P$,其最小不动点 $lfp_C(T_P)$ 是程序 $P$ 的(具体)语义。我们要考虑的属性类被形式化为一个抽象域 $(A
超级会员免费看
订阅专栏 解锁全文

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



