Skip to main content

A Machine Checked Soundness Proof for an Intermediate Verification Language

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5404))

Abstract

Machine-checked proofs of properties of programming languages have gained in importance significantly over the past few years. This paper contributes to this trend by proposing an approach for doing machine-checked soundness proofs for verification condition (VC) generators. Our approach embraces the multi-phase VC generation common in modern program verifiers. Such verifiers split the generation of VCs in two (or even more) phases, using an intermediate verification language as the bridge between the programming language and logic. In our approach, we define a formal operational semantics of the intermediate verification language, and we prove the soundness of two translations separately: (1) the translation of the intermediate verification language to VCs, and (2) the translation of the source programming language to the intermediate language. This paper presents a fully machine checked proof of step (1) for a prototypical intermediate verification language, and then illustrates step (2) for a very small object oriented programming language.

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   84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.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. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)

    Article  MATH  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. Zee, K., Kuncak, V., Rinard, M.: Full functional verification of linked data structures. In: PLDI 2008: Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, pp. 349–361. ACM, New York (2008)

    Chapter  Google Scholar 

  4. Leino, R., Schulte, W.: A verifying compiler for a multi-threaded object-oriented language. In: Broy, M., Grünbauer, J., Hoare, T. (eds.) Software System Reliability and Security. Marktoberdorf lecture notes. IOS Press, Amsterdam (2007)

    Google Scholar 

  5. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  6. Schulte, W., Xia, S., Smans, J., Piessens, F.: A Glimpse of a Verifying C Compiler – Extended Abstract (2007)

    Google Scholar 

  7. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Springer, Heidelberg (2004)

    Book  MATH  Google Scholar 

  8. Vogels, F., Jacobs, B., Piessens, F.: A machine checked soundness proof for an intermediate verification language: extended version. Technical Report CW526, Katholieke Universiteit Leuven (2008)

    Google Scholar 

  9. Vogels, F., Jacobs, B., Piessens, F.: The full Coq proof script, http://www.cs.kuleuven.be/~frederic/papers/boogie/boogie.v8

  10. Leavens, G.T., Leino, K.R.M., Müller, P.: Specification and verification challenges for sequential object-oriented programs. Formal Asp. Comput. 19, 159–189 (2007)

    Article  MATH  Google Scholar 

  11. Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. In: PASTE, pp. 82–87 (2005)

    Google Scholar 

  12. Filliâtre, J.-C., Marché, C.: The why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 173–177. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  13. The Mobius Project, http://mobius.inria.fr

  14. Lehner, H., Müller, P.: Formal translation of bytecode into BoogiePL. In: Huisman, M., Spoto, F. (eds.) Bytecode Semantics, Verification, Analysis and Transformation. Electronic Notes in Theoretical Computer Science (2007)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Vogels, F., Jacobs, B., Piessens, F. (2009). A Machine Checked Soundness Proof for an Intermediate Verification Language. In: Nielsen, M., Kučera, A., Miltersen, P.B., Palamidessi, C., Tůma, P., Valencia, F. (eds) SOFSEM 2009: Theory and Practice of Computer Science. SOFSEM 2009. Lecture Notes in Computer Science, vol 5404. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-95891-8_51

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-95891-8_51

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-95890-1

  • Online ISBN: 978-3-540-95891-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics