向命令式/HOL的精化:从抽象规范到高效命令式实现
1. 引言
在算法实现中,许多算法使用支持破坏性更新的命令式数据结构能达到最高效率。我们希望采用逐步精化的方法来验证命令式算法,并自动完成将抽象数据结构替换为具体数据结构的任务。
现有的Isabelle精化框架(IRF)虽然能验证一些图和自动机算法,但它只能精化到纯函数式代码。而很多高效的(模型检查)算法实现通常需要命令式特性,如数组的破坏性更新。
为了解决这个问题,我们基于Imperative/HOL展开工作。Imperative/HOL引入了堆单子并支持为多种目标平台生成代码,但它在程序推理方面的自动化支持有限。因此,我们开发了一个分离逻辑框架,还构建了命令式集合框架,并定义了从IRF程序到Imperative/HOL程序的数据精化概念,最后实现了一个工具来自动完成精化过程。
2. 面向Imperative/HOL的分离逻辑
2.1 基础
我们按照Calcagno等人的思路形式化了分离逻辑。定义了部分堆类型 pheap ,用于描述特定地址集合上堆的内容。断言是部分堆上满足良构条件的谓词,类型为 assn ⊂ pheap ⇒ bool 。
基本断言包括 true 、 false 、表示空堆的 emp 、表示在地址 p 存储值 v 的 p →r v 、表示在地址 p 存储数组的
超级会员免费看
订阅专栏 解锁全文
14

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



