Compilation as Rewriting in Higher Order Logic

We present an approach based on the use of deductive rewriting to construct a trusted compiler for a subset of the native functions of higher order logic. Program transformations are specified by equality theorems that characterize the transformations; and the mechanical application of these rules is directed by programs written in the meta-language of the logical framework. Each application of a rule ensures that the transformed code is equivalent to the original one, thus warranting the correctness of the entire compiler.

[1]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[2]  Konrad Slind Reasoning about terminating functional programs , 1999 .

[3]  Lars Birkedal,et al.  From region inference to von Neumann machines via region representation inference , 1996, POPL '96.

[4]  Tarmo Uustalu,et al.  A compositional natural semantics and Hoare logic for low-level languages , 2007, Theor. Comput. Sci..

[5]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[6]  Jan Maluszy¿ski Verification, Model Checking, and Abstract Interpretation , 2009, Lecture Notes in Computer Science.

[7]  Augusto Sampaio An Algebraic Approach to Compiler Design , 1993, AMAST Series in Computing.

[8]  J. Strother Moore Piton: A Mechanically Verified Assembly-Level Language , 1996 .

[9]  Konrad Slind,et al.  Automatic Formal Synthesis of Hardware from Higher Order Logic , 2006, Electron. Notes Theor. Comput. Sci..

[10]  Amr Sabry,et al.  The essence of compiling with continuations , 1993, PLDI '93.

[11]  Chuck Liang,et al.  Compiler Construction in Higher Order Logic Programming , 2002, PADL.

[12]  Andrew W. Appel,et al.  A Compositional Logic for Control Flow , 2006, VMCAI.

[13]  Wolfgang J. Paul,et al.  Towards the Formal Verification of a C0 Compiler: Code Generation and Implementation Correctnes , 2005, SEFM.

[14]  Michael Norrish,et al.  A Thread of HOL Development , 2002, Comput. J..

[15]  Xavier Leroy,et al.  Formal certification of a compiler back-end or: programming a compiler with a proof assistant , 2006, POPL '06.

[16]  John Hannan,et al.  Compiler verification in LF , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[17]  Victor L. Winter Program Transformation in HATS , 1999 .

[18]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[19]  Tobias Nipkow,et al.  FM 2006: Formal Methods, 14th International Symposium on Formal Methods, Hamilton, Canada, August 21-27, 2006, Proceedings , 2006, FM.

[20]  Amr Sabry,et al.  The essence of compiling with continuations (with retrospective) , 1993, PLDI 1993.

[21]  Burkhart Wolff,et al.  Tactic-Based Optimized Compilation of Functional Programs , 2004, TYPES.

[22]  Guodong Li,et al.  Structure of a Proof-Producing Compiler for a Subset of Higher Order Logic , 2007, ESOP.

[23]  James M. Boyle,et al.  Do you trust your compiler? Applying formal methods to constructing high-assurance compilers , 1997, Proceedings 1997 High-Assurance Engineering Workshop.

[24]  Maribel Fernández,et al.  Curry-Style Types for Nominal Terms , 2006, TYPES.

[25]  Xavier Leroy,et al.  Formal Verification of a C Compiler Front-End , 2006, FM.

[26]  Maulik A. Dave,et al.  Compiler verification: a bibliography , 2003, SOEN.

[27]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[28]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[29]  Jason Hickey,et al.  Formal Compiler Construction in a Logical Framework , 2022 .