Pilsner:一种高阶命令语言的组合验证编译器

编译器验证对于构建完全验证的软件,但大多数先前的工作(如CompCert)都集中在验证全程序编译器。支持单独编译和启用链接对于不同经过验证的编译器的结果,开发一个编译器正确性的组合概念是模块化的(保留在链接)、可传递(支持多任务编译)和灵活(适用于使用不同中间语言或使用非标准程序转换)。

在本文中,我们在Hur等人先前工作的基础上,开发了一部小说基于参数的组合编译器验证方法语言间模拟(PILS)。PILS是模块化的:它们支持编译器以支持单独编译的方式进行验证。PILS是及物:我们用它们来验证皮尔斯纳,一个简单的(但非平凡的)类ML源的多通道优化编译器(用Coq编程)语言S转换为类汇编的目标语言T,并通过基于CPS的中间语言。Pilsner是第一个针对需要进行成分验证的高阶命令式语言。最后,PILS是灵活的:我们使用它们来额外验证
  1. Zwickel公司,S的直接非优化编译器,和
  2. 一个手动编码的自修改T模块,经证明符合S级规范。
Zwickel的输出和自我修改的T模块可以安全连接以及皮尔斯纳的输出。总之,这是一个重要的承担,涉及数人年的工作和55000多条Coq线。

出版物

印记|数据保护