A syntactic approach to type soundness
Information and Computation
VLISP: a verified implementation of Scheme
Lisp and Symbolic Computation
The Definition of Standard ML
Type Inference Verified: Algorithm W in Isabelle/HOL
Journal of Automated Reasoning
Towards a mechanized metatheory of standard ML
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantics of x86-CC multiprocessor machine code
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Coinductive big-step operational semantics
Information and Computation
Extensible Proof-Producing Compilation
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Formal verification of a realistic compiler
Communications of the ACM - Barbara Liskov: ACM's A.M. Turing Award Winner
A verified compiler for an impure functional language
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verified just-in-time compiler on x86
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A sound semantics for OCamllight
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Semantics Engineering with PLT Redex
Semantics Engineering with PLT Redex
A certified framework for compiling and executing garbage-collected languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Relaxed-memory concurrency and verified compilation
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A certified implementation of ML with structural polymorphism
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
The open theory standard theory library
NFM'11 Proceedings of the Third international conference on NASA Formal methods
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
A verified runtime for a verified theorem prover
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Outsidein(x) modular type inference with local assumptions
Journal of Functional Programming - Dedicated to ICFP 2009
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
(Nominal) unification by recursive descent with triangular substitutions
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Simple, functional, sound and complete parsing for all context-free grammars
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Proof-producing synthesis of ML from higher-order logic
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Steps towards verified implementations of HOL light
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Verified programs with binders
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
We have developed and mechanically verified an ML system called CakeML, which supports a substantial subset of Standard ML. CakeML is implemented as an interactive read-eval-print loop (REPL) in x86-64 machine code. Our correctness theorem ensures that this REPL implementation prints only those results permitted by the semantics of CakeML. Our verification effort touches on a breadth of topics including lexing, parsing, type checking, incremental and dynamic compilation, garbage collection, arbitrary-precision arithmetic, and compiler bootstrapping. Our contributions are twofold. The first is simply in building a system that is end-to-end verified, demonstrating that each piece of such a verification effort can in practice be composed with the others, and ensuring that none of the pieces rely on any over-simplifying assumptions. The second is developing novel approaches to some of the more challenging aspects of the verification. In particular, our formally verified compiler can bootstrap itself: we apply the verified compiler to itself to produce a verified machine-code implementation of the compiler. Additionally, our compiler proof handles diverging input programs with a lightweight approach based on logical timeout exceptions. The entire development was carried out in the HOL4 theorem prover.