Skip to main content

Certificates and Separation Logic

  • Conference paper
  • First Online:
Trustworthy Global Computing (TGC 2013)

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

Included in the following conference series:

  • 499 Accesses

Abstract

Modular and local reasoning about object-oriented programs has been widely studied for programing languages such as C# and Java. Once source programs have been proven, the next verification challenge is to ensure that the code produced by the compiler is correct. Since verifying a compiler can be extremely complex, this paper uses proof-transforming compilation, an alternative approach which automatically generates certificates, a bytecode proof, from proofs in the source language. The paper develops a bytecode logic using separation logic, and proof translation from proofs of object-oriented programs to bytecode. The translation also handles proofs for concurrent programs. The bytecode logic and the proof transformation are proven sound.

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 EPUB and 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

Notes

  1. 1.

    Barthe et al. called this approach preservation of proof obligations.

  2. 2.

    The expression disjointness is used when the value \(v_1 \bigvee v_2\) is popped from the stack and assigned to a variable \(x\)

  3. 3.

    The Open axiom allows unfolding the abstract predicate \(Val_{Recell}(this,v, {\_})\) to its definition \(Val_{Cell}(this,v) * this.bak \mapsto {\_}\).

References

  1. Bannwart, F.Y., Müller, P.: A program logic for bytecode. In: Spoto, F. (ed.) BYTECODE. ENTCS, vol. 141(1), pp. 255–273. Elsevier, Amsterdam (2005)

    Google Scholar 

  2. Barthe, G., Crégut, P., Grégoire, B., Jensen, T., Pichardie, D.: The MOBIUS proof carrying code infrastructure. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2007. LNCS, vol. 5382, pp. 1–24. Springer, Heidelberg (2008)

    Google Scholar 

  3. Barthe, G., Grégoire, B., Pavlova, M.I.: Preservation of proof obligations from Java to the Java virtual machine. In: Armando, A., Baumgartner, P., Dowek, G. (eds.) IJCAR 2008. LNCS(LNAI), vol. 5195, pp. 83–99. Springer, Heidelberg (2008)

    Google Scholar 

  4. Barthe, G., Rezk, T., Saabas, A.: Proof obligations preserving compilation. In: Third International Workshop on Formal Aspects in Security and Trust, Newcastle, UK, pp. 112–126 (2005)

    Google Scholar 

  5. Benton, N.: A typed, compositional logic for a stack-based abstract machine. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 364–380. Springer, Heidelberg (2005)

    Google Scholar 

  6. Chin, W., David, C., Nguyen, H., Qin, S.: Enhancing modular OO verification with separation logic. In: POPL ’08, pp. 87–99. ACM (2008)

    Google Scholar 

  7. Clarke, D., Drossopoulou, S.: Ownership, encapsulation and the disjointness of type and effect. In: OOPSLA ’02, vol. 37. ACM (2002)

    Google Scholar 

  8. Distefano, D., Parkinson, M.J.: jStar: towards practical verification for Java. In: OOPSLA ’08, pp. 213–226 (2008)

    Google Scholar 

  9. Dong, Y., Wang, S., Zhang, L., Yang, P.: Modular certification of low-level intermediate representation programs. In: ICSAC, pp. 563–570. IEEE Computer Society (2009)

    Google Scholar 

  10. Kunz, C.: Certificate translation for the verification of concurrent programs. In: Wirsing, M., Hofmann, M., Rauschmayer, A. (eds.) TGC 2010. LNCS, vol. 6084, pp. 237–252. Springer, Heidelberg (2010)

    Google Scholar 

  11. Zhou, Z., Chindaro, S., Deravi, F.: Face recognition using balanced pairwise classifier training. In: Weerasinghe, D. (ed.) ISDF 2009. LNICST, vol. 41, pp. 42–49. Springer, Heidelberg (2010)

    Google Scholar 

  12. Müller, P., Nordio, M.: Proof-transforming compilation of programs with abrupt termination. In: SAVCBS ’07, pp. 39–46 (2007)

    Google Scholar 

  13. Necula, G.: Compiling with proofs. Ph.D. thesis, School of Computer Science, Carnegie Mellon University (1998)

    Google Scholar 

  14. Nordio, M.: Proofs and proof transformations for object-oriented programs. Ph.D. thesis, ETH Zurich (2009)

    Google Scholar 

  15. Nordio, M., Calcagno, C., Müller, P., Meyer, B.: A sound and complete program logic for Eiffel. In: Oriol, M., Meyer, B. (eds.) TOOLS EUROPE 2009. LNBIP, vol. 33, pp. 195–214. Springer, Heidelberg (2009)

    Google Scholar 

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

    Google Scholar 

  17. Nordio, M., Müller, P., Meyer, B.: Proof-transforming compilation of Eiffel programs. In: Paige, R.F., Meyer, B. (eds.) TOOLS-EUROPE 2008. LNBIP, vol. 11, pp. 316–335. Springer, Heidelberg (2008)

    Google Scholar 

  18. O’Hearn, P.W.: Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375, 271–307 (2007)

    Article  MATH  MathSciNet  Google Scholar 

  19. O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: POPL ’04, pp. 268–280. ACM (2004)

    Google Scholar 

  20. Parkinson, M.J., Bierman, G.M.: Separation logic, abstraction and inheritance. In: POPL ’08, pp. 75–86. ACM (2008)

    Google Scholar 

  21. Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, pp. 151–166. Springer, Heidelberg (1998)

    Google Scholar 

  22. Saabas, A., Uustalu, T.: Program and proof optimizations with type systems. J. Logic Algebr. Program. 77(1–2), 131–154 (2008)

    Article  MATH  MathSciNet  Google Scholar 

  23. Stata, R., Abadi, M.: A type system for Java bytecode subroutines. In: POPL ’98, pp. 149–160. ACM (1998)

    Google Scholar 

Download references

Acknowledgements

We thank Stephan van Staden, Sebastian Nanz, Scott West, and Mei Tang for their insightful comments on drafts of this paper. The research leading to these results has received funding from the European Research Council under the European Union’s Seventh Framework Programme (FP7/2007-2013)/ERC Grant agreement no. 291389.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Martin Nordio .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this paper

Cite this paper

Nordio, M., Calcagno, C., Meyer, B. (2014). Certificates and Separation Logic. In: Abadi, M., Lluch Lafuente, A. (eds) Trustworthy Global Computing. TGC 2013. Lecture Notes in Computer Science(), vol 8358. Springer, Cham. https://doi.org/10.1007/978-3-319-05119-2_16

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-05119-2_16

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-05118-5

  • Online ISBN: 978-3-319-05119-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics