Asserting Bytecode Safety

  • Martin Wildmoser
  • Tobias Nipkow
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3444)

Abstract

We instantiate an Isabelle/HOL framework for proof carrying code to Jinja bytecode, a downsized variant of Java bytecode featuring objects, inheritance, method calls and exceptions. Bytecode annotated in a first order expression language can be certified not to produce arithmetic overflows. For this purpose we use a generic verification condition generator, which we have proven correct and relatively complete.

References

  1. 1.
    VeryPCC project website in Munich (2003), http://isabelle.in.tum.de/verypcc/
  2. 2.
    Abadi, M., Leino, K.R.M.: A logic of object-oriented programs. In: Dershowitz, N. (ed.) Verification: Theory and Practice. LNCS, vol. 2772, pp. 11–41. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  3. 3.
    Appel, A.W.: Foundational proof-carrying code. In: 16th Annual IEEE Symposium on Logic in Computer Science (LICS 2001), June 2001, pp. 247–258 (2001)Google Scholar
  4. 4.
    Aspinall, D., Beringer, L., Hoffman, M., Loidl, H.-W.: A resource-aware program logic for a jvm-like language. In: Gilmore, S. (ed.) Trends in Functional Programming, Edinburgh (2003)Google Scholar
  5. 5.
    Boer, F.D., Pierik, C.: A syntax-directed hoare logic for object-oriented programming concepts. In: Najm, E., Nestmann, U., Stevens, P. (eds.) FMOODS 2003. LNCS, vol. 2884, pp. 64–78. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  6. 6.
    Chen, J., Wu, D., Appel, A.W., Fang, H.: A provably sound tal for back-end optimization. In: Programming Languages Design and Implementation (PLDI), ACM Sigplan (2003)Google Scholar
  7. 7.
    Detlefs, D.L., Rustan, K., Leino, M., Nelson, G., Saxe, J.B.: Extended static checking. Technical report, Compaq Systems Research Center (1998)Google Scholar
  8. 8.
    Jones, C.B.: Systematic Software Development Using VDM, 2nd edn. Prentice-Hall, Englewood Cliffs (1990)MATHGoogle Scholar
  9. 9.
    Klein, G., Nipkow, T.: A machine-checked model for a Java-like language, virtual machine and compiler. Research report, National ICT Australia, Sydney (2004)Google Scholar
  10. 10.
    Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C., Cok, D., Kiniry, J.: Jml reference manual (draft). Technical report (2004)Google Scholar
  11. 11.
    Lev-Ami, T., Reps, T., Sagiv, M., Wilhelm, T.: Putting static analysis to work for verification: A case study in issta 2000. Technical report (2000)Google Scholar
  12. 12.
    Mueller-Olm, M., Seidl, H.: Program analysis through linear algebra. In: 31st Annual ACM Symposium on Principles of Programming Languages (POPL), pp. 330–341 (2004)Google Scholar
  13. 13.
    Necula, G.C.: Compiling with Proofs. PhD thesis, Carnegie Mellon University (1998)Google Scholar
  14. 14.
    Nipkow, T., Chaieb, A.: Generic proof synthesis for presburger arithmetic – draft. Technical report, Technische Universitaet Muenchen (2004)Google Scholar
  15. 15.
    Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL – A Proof Assistant for Higher-Order Logic. In: Nipkow, T., Paulson, L.C., Wenzel, M.T. (eds.) Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  16. 16.
    Oheimb, D.v.: Analyzing Java in Isabelle/HOL: Formalization, Type Safety and Hoare Logic. PhD thesis, Technische Universität München (2001)Google Scholar
  17. 17.
    Wildmoser, M., Chaieb, A., Nipkow, T.: Bytecode analysis for proof carrying code. In: Proceedings of the 1st Workshop on Bytecode, Bytecode 2005 (2005) (submitted for publication) Google Scholar
  18. 18.
    Wildmoser, M., Nipkow, T.: Certifying machine code safety: Shallow versus deep embedding. In: Slind, K., Bunker, A., Gopalakrishnan, G.C. (eds.) TPHOLs 2004. LNCS, vol. 3223, pp. 305–320. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  19. 19.
    Wildmoser, M., Nipkow, T., Klein, G., Nanz, S.: Prototyping proof carrying code. In: Proc. 3rd IFIP Int. Conf. Theoretical Computer Science, TCS 2004 (2004)Google Scholar
  20. 20.
    Winskel, G.: The Formal Semantics of Programming Languages. MIT Press, Cambridge (1993)MATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Martin Wildmoser
    • 1
  • Tobias Nipkow
    • 1
  1. 1.Institut für InformatikTechnische Universität München 

Personalised recommendations