皮尔斯纳

Pilsner:一种经过组合验证的高阶命令式语言编译器。编译器验证对于构造完全验证的软件是必不可少的,但是大多数先前的工作(如CompCert)都集中在验证整个程序的编译器上。为了支持单独编译,并使来自不同已验证编译器的结果能够链接,重要的是开发一个编译器正确性的组合概念,该概念是模块化的(保存在链接下)、可传递的(支持多遍编译),灵活(适用于使用不同中间语言或采用非标准程序转换的编译器)。本文中的段落,建立在第二作者等先前工作的基础上[In:第39届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集》,POPL'12.纽约:计算机械协会(ACM).59--72(2012;Zbl 1321.68198)],提出了一种基于参数化语言间仿真(PILS)的组合编译器验证方法。pil是模块化的:它们以支持单独编译的方式支持编译器验证。pil是可传递的:我们使用它们来验证Pilsner,一个简单(但不平凡)的多遍优化编译器(用Coq编程),从类似ML的源语言S到类似汇编的目标语言T,通过基于CPS的中间语言。Pilsner是第一个对高阶命令式语言进行组合验证的多遍编译器。最后,pil是灵活的:我们使用它们来额外验证(1)Zwickel,一个针对S的直接非优化编译器,(2)一个手工编码的自修改T模块,被证明是正确的w.r.T.和S级规范。Zwickel和自修正T模块的输出可以安全地与Pilsner的输出连接在一起。总之,这是一项重大的事业,涉及数人年的工作和55000多条Coq生产线。