Certificate Translation for Optimizing Compilers
Certifying compilation provides a means to ensure that untrusted mobile code satisfies its functional specification. A certifying compiler generates code as well as a machine-checkable “certificate”, i.e. a formal proof that establishes adherence of the code to specified properties. While certificates for safety properties can be built fully automatically, certificates for more expressive and complex properties often require the use of interactive code verification. We propose a technique to provide code consumers with the benefits of interactive source code verification. Our technique, certificate translation, extends program transformations by offering the means to turn certificates of functional correctness for programs in high-level languages into certificates for executable code. The article outlines the principles of certificate translation, using specifications written in first order logic. This translation is instantiated for standard compiler optimizations in the context of an intermediate RTL Language.
KeywordsProof Obligation Loop Induction Mobile Code Graph Code Annotate Program
Unable to display preview. Download preview PDF.
- 1.Bannwart, F., Müller, P.: A program logic for bytecode. In: Spoto, F. (ed.) Proceedings of Bytecode 2005. Electronic Notes in Theoretical Computer Science. Elsevier Publishing, Amsterdam (2005)Google Scholar
- 5.Burdy, L., Pavlova, M.: Annotation carrying code. In: Proceedings of SAC 2006. ACM Press, New York (2006)Google Scholar
- 6.Guttman, J.D., Wand, M.: Special issue on VLISP. Lisp and Symbolic Computation 8(1/2) (March 1995)Google Scholar
- 8.Leroy, X.: Formal certification of a compiler back-end, or: programming a compiler with a proof assistant. In: Proceedings of POPL 2006, pp. 42–54. ACM Press, New York (2006)Google Scholar
- 10.Necula, G.C.: Compiling with Proofs. PhD thesis, Carnegie Mellon University, Available as Technical Report CMU-CS-98-154 (October 1998)Google Scholar
- 13.Wildmoser, M., Chaieb, A., Nipkow, T.: Bytecode analysis for proof carrying code. In: Spoto, F. (ed.) Proceedings of BYTECODE 2005. Electronic Notes in Theoretical Computer Science. Elsevier Publishing, Amsterdam (2005)Google Scholar