Skip to main content

Preservation of Proof Obligations from Java to the Java Virtual Machine

  • Conference paper
Automated Reasoning (IJCAR 2008)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 5195))

Included in the following conference series:

Abstract

While program verification environments typically target source programs, there is an increasing need to provide strong guarantees for executable programs.

We establish that it is possible to reuse the proof that a source Java program meets its specification to show that the corresponding JVM program, obtained by non-optimizing compilation, meets the same specification. More concretely, we show that verification condition generators for Java and JVM programs generate the same set of proof obligations, when applied to a program p and its compilation [[p]] respectively.

Preservation of proof obligations extends the applicability of Proof Carrying Code, by allowing certificate generation to rely on existing verification technology.

Most of the work was performed while the first and third authors were working at INRIA.The work was partially supported by the MOBIUS project.

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

Access this chapter

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

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Balakrishnan, G.: WYSISWYX: What you see is not what you execute. PhD thesis, Department of Computer Science, University of Wisconsin (2007)

    Google Scholar 

  2. Bannwart, F.Y., Müller, P.: A program logic for bytecode. In: Spoto, F. (ed.) Bytecode Semantics, Verification, Analysis and Transformation. Electronic Notes in Theoretical Computer Science, vol. 141, pp. 255–273. Elsevier, Amsterdam (2005)

    Google Scholar 

  3. Barthe, G., Grégoire, B., Kunz, C., Rezk, T.: Certificate translation for optimizing compilers. In: Yi, K. (ed.) SAS 2006. LNCS, vol. 4134, pp. 301–317. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  4. Barthe, G., Kunz, C.: Certificate translation in abstract interpretation. In: Drossopoulou, S. (ed.) European Symposium on Programming, Budapest, Hungary. LNCS, vol. 4960, pp. 368–382. Springer, Heidelberg (2008)

    Google Scholar 

  5. 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 

  6. Burdy, L., Pavlova, M.: Java bytecode specification and verification. In: Symposium on Applied Computing, pp. 1835–1839. ACM Press, New York (2006)

    Google Scholar 

  7. Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: Principles of Programming Languages, pp. 238–252 (1977)

    Google Scholar 

  8. Grégoire, B., Sacchini, J.: Combining a verification condition generator for a bytecode language with static analyses. In: Barthe, G., Fournet, C. (eds.) Trustworthy Global Computing. LNCS, vol. 4912, pp. 23–40. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  9. Leroy, X.: Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In: Morrisett, J.G., Peyton Jones, S.L. (eds.) Principles of Programming Languages, pp. 42–54. ACM Press, New York (2006)

    Google Scholar 

  10. Logozzo, F., Fähndrich, M.: On the relative completeness of bytecode analysis versus source code analysis. In: Hendren, L. (ed.) CC. LNCS, vol. 4959, pp. 197–212. Springer, Heidelberg (2008)

    Google Scholar 

  11. Müller, P., Nordio, M.: Proof-transforming compilation of programs with abrupt termination. In: SAVCBS 2007: Proceedings of the 2007 conference on Specification and verification of component-based systems, pp. 39–46. ACM Press, New York (2007)

    Chapter  Google Scholar 

  12. Necula, G.C.: Proof-carrying code. In: Principles of Programming Languages, pp. 106–119. ACM Press, New York (1997)

    Google Scholar 

  13. Necula, G.C., Lee, P.: The design and implementation of a certifying compiler. In: Programming Languages Design and Implementation, vol. 33, pp. 333–344. ACM Press, New York (1998)

    Google Scholar 

  14. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL. A Proof Assistant for Higher-Order Logic. Springer, Heidelberg (2002)

    MATH  Google Scholar 

  15. Nordio, M., Müller, P., Meyer, B.: Formalizing proof-transforming compilation of eiffel programs. Technical Report 587, ETH Zurich (2008)

    Google Scholar 

  16. Pavlova, M.: Specification and verification of Java bytecode. PhD thesis, Université de Nice Sophia-Antipolis (2007)

    Google Scholar 

  17. Rival, X.: Symbolic Transfer Functions-based Approaches to Certified Compilation. In: Principles of Programming Languages, pp. 1–13. ACM Press, New York (2004)

    Google Scholar 

  18. Saabas, A., Uustalu, T.: A compositional natural semantics and Hoare logic for low-level languages. Theoretical Computer Science 373(3), 273–302 (2007)

    Article  MATH  MathSciNet  Google Scholar 

  19. Saabas, A., Uustalu, T.: Proof optimization for partial redundancy elimination. In: ACM Workshop on Partial Evaluation and Semantics-based Program Manipulation, pp. 91–101. ACM Press, New York (2008)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Alessandro Armando Peter Baumgartner Gilles Dowek

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Barthe, G., Grégoire, B., Pavlova, M. (2008). Preservation of Proof Obligations from Java to the Java Virtual Machine. In: Armando, A., Baumgartner, P., Dowek, G. (eds) Automated Reasoning. IJCAR 2008. Lecture Notes in Computer Science(), vol 5195. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-71070-7_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-71070-7_7

  • Publisher Name: Springer, Berlin, Heidelberg

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

  • Online ISBN: 978-3-540-71070-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics