内存模型验证与并发程序编译器合成的进展
在软件开发领域,程序验证和编译器设计是至关重要的环节。本文将探讨内存模型验证的自动化以及并发程序编译器合成的相关内容。
内存模型验证
在内存模型验证方面,我们关注到在Why3环境下对Leroy和Blazy的内存模型进行验证的相关工作。以下是不同模块中引理自动证明的情况:
| 模块 | 引理总数 | 自动证明数量(比例) |
| — | — | — |
| Gen Mem Facts | 7 | 7 (100%) |
| Ref Gen Mem Facts | 12 | 12 (100%) |
| Concrete Mem | 61 | 58 (95%) |
| Rel Mem | 16 | 14 (87.5%) |
| Mem Extends | 7 | 7 (100%) |
| Mem Lessdef | 6 | 6 (100%) |
| Mem Inject | 15 | 11 (73.3%) |
| 总计 | 124 | 115 (92.7%) |
这115个验证条件(VC)大约对应Coq证明脚本的870行,占整个Coq证明脚本总行数的89.6%。与Coq相比,Why3在定理证明器验证证明时所需的转换数量显著减少,仅为117次,而Coq需要220次。
此外,还实现了内存模型的OCaml实现的代码提取。Leroy和Blazy的实现中使用了一些未定义的函数,例如 enough free memory 和 alignof 。为了提取OCaml代码,需要对涉及这些函
超级会员免费看
订阅专栏 解锁全文

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



