Skip to main content

Reasoning About Java Programs with Aliasing and Frame Conditions

  • Conference paper
Theorem Proving in Higher Order Logics (TPHOLs 2005)

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

Included in the following conference series:

  • 673 Accesses

Abstract

Several tools exist for reasoning about Java programs annotated with JML specifications. A main issue is to deal with possible aliasing between objects and to handle correctly the frame conditions limiting the part of memory that a method is allowed to modify. Tools designed for automatic use (like ESC/Java) are not complete and even not necessarily correct. On the other side, tools which offer a full modeling of the program require a heavy user interaction for discharging proof obligations. In this paper, we present the modeling of Java programs used in the Krakatoa tool, which generates proof obligations expressed in a logic language suitable for both automatic and interactive reasoning. Using the Simplify automatic theorem prover, we are able to establish automatically more properties than static analysis tools, with a method which is guaranteed to be sound, assuming only the correctness of our logical interpretation of programs and specifications.

Research partly supported by the EU IST project IST-2000-26328-VERIFICARD (www.verificard.org), the GECCOO project of the “ACI Sécurité Informatique” (geccoo.lri.fr) and the EU coordinated action TYPES (www.cs.chalmers. se/Cs/Research/Logic/Types/).

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Abrial, J.-R.: The B-Book, assigning programs to meaning. Cambridge University Press, Cambridge (1996)

    Book  Google Scholar 

  2. Barnett, M., DeLine, R., Fähndrich, M., Leino, K.R.M., Schulte, W.: Verification of object-oriented programs with invariants. Journal of Object Technology 3(6), 27–56 (2004)

    Article  Google Scholar 

  3. Barrett, C., Berezin, S.: CVC Lite: A new implementation of the cooperating validity checker. In: Alur, R., Peled, D.A. (eds.) CAV 2004, vol. 3114, pp. 515–518. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  4. Bornat, R.: Proving pointer programs in Hoare logic. In: Mathematics of Program Construction, pp. 102–126 (2000)

    Google Scholar 

  5. Burdy, L.: JACK: Java Applet Correctness Kit. In: Gemplus Developer Conference (2002)

    Google Scholar 

  6. Burdy, L., Cheon, Y., Cok, D., Ernst, M., Kiniry, J., Leavens, G.T., Leino, K.R.M., Poll, E.: An overview of JML tools and applications. Technical Report NIII-R0309, Dept. of Computer Science, University of Nijmegen (2003)

    Google Scholar 

  7. Burstall, R.: Some techniques for proving correctness of programs which alter data structures. Machine Intelligence 7, 23–50 (1972)

    MATH  Google Scholar 

  8. Cataño, N., Gawlowski, M., Huisman, M., Jacobs, B., Marché, C., Paulin, C., Poll, E., Rauch, N., Urbain, X.: Logical techniques for applet verification. Deliverable 5.2, IST VerifiCard project (2003), http://www.cs.kun.nl/VerifiCard/files/deliverables/deliverable_5_2.pdf

  9. Cataño, N., Huisman, M.: Chase: A static checker for JML’s assignable clause. In: Zuck, L.D., Attie, P.C., Cortesi, A., Mukhopadhyay, S. (eds.) VMCAI 2003. LNCS, vol. 2575, pp. 26–40. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  10. Filliâtre, J.-C.: Verification of Non-Functional Programs using Interpretations in Type Theory. Journal of Functional Programming 13(4), 709–745 (2003)

    Article  MATH  MathSciNet  Google Scholar 

  11. Filliâtre, J.-C.: Why: a multi-language multi-prover verification tool. Research Report 1366, LRI, Université Paris Sud (March 2003), http://www.lri.fr/~filliatr/ftp/publis/why-tool.ps.gz

  12. Filliâtre, J.-C., Marché, C.: Multi-prover verification of C programs. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 15–29. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  13. Jacobs, B., Marché, C., Rauch, N.: Formal verification of a commercial smart card applet with multiple tools. In: Rattray, C., Maharaj, S., Shankland, C. (eds.) AMAST 2004. LNCS, vol. 3116, pp. 241–257. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  14. Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: A behavioral interface specification language for Java. Technical Report 98-06i, Iowa State University (2000)

    Google Scholar 

  15. Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C.: JML Reference Manual. draft (April 2003)

    Google Scholar 

  16. Marché, C., Paulin-Mohring, C., Urbain, X.: The Krakatoa tool for certification of Java/JavaCard programs annotated in JML. Journal of Logic and Algebraic Programming 58(1–2), 89–106 (2004), http://krakatoa.lri.fr

    Article  MATH  Google Scholar 

  17. Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. In: Baaderpp, F. (ed.) 19th Conference on Automated Deduction. LNCS. Springer, Heidelberg (2003)

    Google Scholar 

  18. Meyer, J., Müller, P., Poetzsch-Heffter, A.: The Jive system (2000), http://www.informatik.fernuni-hagen.de/pi5/publications.html

  19. Nelson, G.: Techniques for program verification. Research Report CSL-81-10, Xerox Palo Alto Research Center (1981), http://research.compaq.com/SRC/esc/Simplify.html

  20. Ranise, S., Deharbe, D.: Light-weight theorem proving for debugging and verifying units of code. In: Proc. SEFM 2003, Canberra, Australia, September 2003. IEEE Computer Society Press, Los Alamitos (2003), http://www.loria.fr/equipes/cassis/softwares/haRVey/

    Google Scholar 

  21. The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.0 (April 2004), http://coq.inria.fr

  22. van den Berg, J., Huisman, M., Jacobs, B., Poll, E.: A type-theoretic memory model for verification of sequential Java programs. In: Bert, D., Choppy, C., Mosses, P.D. (eds.) WADT 1999. LNCS, vol. 1827, pp. 1–21. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  23. van den Berg, J., Jacobs, B.: The LOOP compiler for java and JML. In: Margaria, T., Yi, W. (eds.) TACAS 2001, vol. 2031, pp. 299–312. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Marché, C., Paulin-Mohring, C. (2005). Reasoning About Java Programs with Aliasing and Frame Conditions. In: Hurd, J., Melham, T. (eds) Theorem Proving in Higher Order Logics. TPHOLs 2005. Lecture Notes in Computer Science, vol 3603. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11541868_12

Download citation

  • DOI: https://doi.org/10.1007/11541868_12

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-28372-0

  • Online ISBN: 978-3-540-31820-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics