编译器正确性证明


20

我正在寻找涵盖编译器正确性证明的教程材料,最好是在初等研究生的水平上使用指称方法。

另外,您是否知道一些我可以用来说明问题的简单编译器示例?(我想到的第一个示例是从infix到postfix表达式的转换器。但是除了如何对语法进行归纳之外,它没有显示出任何有趣的东西。)

Answers:


10

我不知道好的教程材料,但是有些论文对于像我这样的研究生来说已经足够基础了。第一个可能是您要寻找的(重点是我的)。

静态分析和程序转换的简单关系正确性证明,Nick Benton。2004年。

我们展示了如何使用基本逻辑和指称技术表达和证明对命令式程序进行的一些经典静态分析以及它们所实现的优化转换是正确的。关键要素是将程序属性解释为关系而不是谓词,并且认识到尽管传统上许多程序分析都是用非常严格的术语来表述的,但相关的转换实际上是通过更自由的扩展属性来实现的。

这些论文也可能使您感兴趣。他们极大地帮助了我!

  1. 由时间逻辑证明编译器优化的正确性,David Lacey,Neil D. Jones,Eric Van Wyk,Carl Christian Frederiksen。我本以为在编译器优化的情况下使用双仿真会更多。如果您的目标是真正的指称技术,则可以使用双仿真的表征对这些证明进行编码。
  2. 从Proofs,Ross Tate,Michael Stepp和Sorin Lerner 生成编译器优化。包括其证明方法的类别理论形式化。
  3. 使用参数化程序等效性,Sudipta Kundu,Zachary Tatlock和Sorin Lerner 证明优化是正确的。如果您喜欢逻辑关系,请去那里。
  4. 经过正式验证的编译器后端 Xavier Leroy。




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.