Compiling functional types to relational specifications for low level imperative code

We describe a semantic type soundness result, formalized in the Coq proof assistant, for a compiler from a simple functional language into an idealized assembly language. Types in the high-level language are interpreted as binary relations, built using both second-order quantification and separation, over stores and values in the low-level machine.

[1]  Amal Ahmed,et al.  Semantics of types for mutable state , 2004 .

[2]  Neal Glew Object Closure Conversion , 1999, Electron. Notes Theor. Comput. Sci..

[3]  Andrew W. Appel,et al.  Construction of a Semantic Model for a Typed Assembly Language , 2004, VMCAI.

[4]  I. Stark,et al.  Operational reasoning for functions with local state , 1999 .

[5]  John McCarthy,et al.  Correctness of a compiler for arithmetic expressions , 1966 .

[6]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

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

[8]  Zhong Shao,et al.  Certified assembly programming with embedded code pointers , 2006, POPL '06.

[9]  Andrew W. Appel,et al.  Foundational proof-carrying code , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[10]  Derek Dreyer,et al.  State-dependent representation independence , 2009, POPL '09.

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

[12]  Frank Pfenning,et al.  Intersection types and computational effects , 2000, ICFP '00.

[13]  Nicolas Tabareau Modalités de ressource et contrôle en logique tensorielle. (Resource modalities and control in tensorial logic) , 2008 .

[14]  Nick Benton,et al.  Relational Reasoning in a Nominal Semantics for Storage , 2005, TLCA.

[15]  Robert Harper,et al.  Typed closure conversion , 1996, POPL '96.

[16]  Adam Chlipala,et al.  A certified type-preserving compiler from lambda calculus to assembly language , 2007, PLDI '07.

[17]  Hongseok Yang,et al.  Relational separation logic , 2007, Theor. Comput. Sci..

[18]  Andrew W. Appel,et al.  An indexed model of recursive types for foundational proof-carrying code , 2001, TOPL.

[19]  Jérôme Vouillon,et al.  Semantic types: a fresh look at the ideal model for types , 2004, POPL '04.

[20]  Zhong Shao,et al.  Building certified libraries for PCC: dynamic storage allocation , 2003, Sci. Comput. Program..

[21]  Nick Benton Abstracting Allocation , 2006, CSL.

[22]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[23]  Andrew W. Appel,et al.  A very modal model of a modern, major, general type system , 2007, POPL '07.

[24]  Matthias Blume,et al.  Typed closure conversion preserves observational equivalence , 2008, ICFP.

[25]  Nick Benton Abstracting allocation : The new new thing , 2006 .

[26]  Nick Benton,et al.  Formalizing and verifying semantic type soundness of a simple compiler , 2007, PPDP '07.