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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Barthe et al. called this approach preservation of proof obligations.
- 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.
The Open axiom allows unfolding the abstract predicate \(Val_{Recell}(this,v, {\_})\) to its definition \(Val_{Cell}(this,v) * this.bak \mapsto {\_}\).
References
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)
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)
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)
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)
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)
Chin, W., David, C., Nguyen, H., Qin, S.: Enhancing modular OO verification with separation logic. In: POPL ’08, pp. 87–99. ACM (2008)
Clarke, D., Drossopoulou, S.: Ownership, encapsulation and the disjointness of type and effect. In: OOPSLA ’02, vol. 37. ACM (2002)
Distefano, D., Parkinson, M.J.: jStar: towards practical verification for Java. In: OOPSLA ’08, pp. 213–226 (2008)
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)
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)
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)
Müller, P., Nordio, M.: Proof-transforming compilation of programs with abrupt termination. In: SAVCBS ’07, pp. 39–46 (2007)
Necula, G.: Compiling with proofs. Ph.D. thesis, School of Computer Science, Carnegie Mellon University (1998)
Nordio, M.: Proofs and proof transformations for object-oriented programs. Ph.D. thesis, ETH Zurich (2009)
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)
Nordio, M., Müller, P., Meyer, B.: Formalizing proof-transforming compilation of Eiffel programs. Technical report 587, ETH Zurich (2008)
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)
O’Hearn, P.W.: Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375, 271–307 (2007)
O’Hearn, P.W., Yang, H., Reynolds, J.C.: Separation and information hiding. In: POPL ’04, pp. 268–280. ACM (2004)
Parkinson, M.J., Bierman, G.M.: Separation logic, abstraction and inheritance. In: POPL ’08, pp. 75–86. ACM (2008)
Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, pp. 151–166. Springer, Heidelberg (1998)
Saabas, A., Uustalu, T.: Program and proof optimizations with type systems. J. Logic Algebr. Program. 77(1–2), 131–154 (2008)
Stata, R., Abadi, M.: A type system for Java bytecode subroutines. In: POPL ’98, pp. 149–160. ACM (1998)
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
Corresponding author
Editor information
Editors and Affiliations
Rights 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)