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.
type soundness proof assistants relational parametricity separation logic compiler verification