Article contents
Modular development of certified program verifiers with a proof assistant1,2
Published online by Cambridge University Press: 15 August 2008
Abstract
We report on an experience using the Coq proof assistant to develop a program verification tool with a machine-checked proof of full correctness. The verifier is able to prove memory safety of x86 machine code programs compiled from code that uses algebraic datatypes. The tool's soundness theorem is expressed in terms of the bit-level semantics of x86 programs, so its correctness depends on very few assumptions. We take advantage of Coq's support for programming with dependent types and modules in the structure of the development. The approach is based on developing a library of reusable functors for transforming a verifier at one level of abstraction into a verifier at a lower level. Using this library, it is possible to prototype a verifier based on a new type system with a minimal amount of work, while obtaining a very strong soundness theorem about the final product.
- Type
- Articles
- Information
- Journal of Functional Programming , Volume 18 , Special Double Issue 5-6 , September 2008 , pp. 599 - 647
- Copyright
- Copyright © Cambridge University Press 2008
Footnotes
This is a revised and extended version of the paper that appeared in the 11th ACM SIGPLAN International Conference on Functional Programming (ICFP'06) (Chlipala 2006).
This research was supported in part by a National Defense Science and Engineering Graduate Fellowship and National Science Foundation Grants CCF-0524784, CCR-0234689, CNS-0509544, and CCR-0225610.
References
- 4
- Cited by
Discussions
No Discussions have been published for this article.