Skip to main content

Certificate Translation for Optimizing Compilers

(Extended Abstract)

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 4134))

Abstract

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.

This work is partially funded by the IST European Project Mobius.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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 

  2. Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  3. Barthe, G., Rezk, T., Saabas, A.: Proof obligations preserving compilation. In: Dimitrakos, T., Martinelli, F., Ryan, P.Y.A., Schneider, S. (eds.) FAST 2005. LNCS, vol. 3866, pp. 112–126. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  4. Benton, N.: Simple relational correctness proofs for static analyses and program transformations. In: Proceedings of POPL 2004, pp. 14–25. ACM Press, New York (2004)

    Chapter  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 

  7. Lerner, S., Millstein, T., Rice, E., Chambers, C.: Automated soundness proofs for dataflow analyses and transformations via local rules. In: Proceedings of POPL 2005, pp. 364–377. ACM Press, New York (2005)

    Chapter  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 

  9. Necula, G.C.: Proof-Carrying Code. In: Proceedings of POPL 1997, pp. 106–119. ACM Press, New York (1997)

    Chapter  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 

  11. Necula, G.C., Lee, P.: The Design and Implementation of a Certifying Compiler. In: Proceedings of PLDI 1998, pp. 333–344. ACM Press, New York (1998)

    Chapter  Google Scholar 

  12. Seo, S., Yang, H., Yi, K.: Automatic Construction of Hoare Proofs from Abstract Interpretation Results. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 230–245. Springer, Heidelberg (2003)

    Chapter  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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Barthe, G., Grégoire, B., Kunz, C., Rezk, T. (2006). Certificate Translation for Optimizing Compilers. In: Yi, K. (eds) Static Analysis. SAS 2006. Lecture Notes in Computer Science, vol 4134. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11823230_20

Download citation

  • DOI: https://doi.org/10.1007/11823230_20

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-37756-6

  • Online ISBN: 978-3-540-37758-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics