Relational compilation for performance-critical applications: extensible proof-producing translation of functional models into low-level code
Clément Pit-Claudel, Jade Philipoom, Dustin Jamner, Andres Erbsen, Adam Chlipala
Abstract
There are typically two ways to compile and run a purely functional program verified using an interactive theorem prover (ITP): automatically extracting it to a similar language (typically an unverified process, like Coq to OCaml) or manually proving it equivalent to a lower-level reimplementation (like a C program). Traditionally, only the latter produced both excellent performance and end-to-end proofs.
Topics & Concepts
Computer scienceProgramming languageMathematical proofProof assistantCompilerGas meter proverAutomated theorem provingExtensibilityFunctional programmingCode (set theory)Process (computing)Theoretical computer scienceMathematicsGeometrySet (abstract data type)Logic, programming, and type systemsParallel Computing and Optimization TechniquesFormal Methods in Verification