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/).
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abrial, J.-R.: The B-Book, assigning programs to meaning. Cambridge University Press, Cambridge (1996)
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)
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)
Bornat, R.: Proving pointer programs in Hoare logic. In: Mathematics of Program Construction, pp. 102–126 (2000)
Burdy, L.: JACK: Java Applet Correctness Kit. In: Gemplus Developer Conference (2002)
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)
Burstall, R.: Some techniques for proving correctness of programs which alter data structures. Machine Intelligence 7, 23–50 (1972)
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
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)
Filliâtre, J.-C.: Verification of Non-Functional Programs using Interpretations in Type Theory. Journal of Functional Programming 13(4), 709–745 (2003)
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
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)
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)
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)
Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C.: JML Reference Manual. draft (April 2003)
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
Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. In: Baaderpp, F. (ed.) 19th Conference on Automated Deduction. LNCS. Springer, Heidelberg (2003)
Meyer, J., Müller, P., Poetzsch-Heffter, A.: The Jive system (2000), http://www.informatik.fernuni-hagen.de/pi5/publications.html
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
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/
The Coq Development Team. The Coq Proof Assistant Reference Manual – Version V8.0 (April 2004), http://coq.inria.fr
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)