Skip to main content

A Tool-Supported Proof System for Multithreaded Java

  • Conference paper
Formal Methods for Components and Objects (FMCO 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2852))

Included in the following conference series:

Abstract

Besides the features of a class-based object-oriented language, Java integrates concurrency via its thread classes. The concurrency model includes shared-variable concurrency via instance variables, coordination via reentrant synchronization monitors, synchronous message passing, and dynamic thread creation.

To reason about safety properties of multithreaded Java programs, we introduce an assertional proof method for a multithreaded sublanguage of Java, covering the mentioned concurrency issues as well as the object-based core of Java.

The verification method is formulated in terms of proof-outlines, where the assertions are layered into local ones specifying the behavior of a single instance, and global ones taking care of the connections between objects. From the annotated program, a translator tool generates a number of verification conditions which are handed over to the interactive theorem prover PVS.

Part of this work has been financially supported by IST project Omega (IST-2001-33522) and NWO/DFG project Mobi-J (RO 1122/9-1, RO 1122/9-2).

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abadi, M., Cardelli, L.: A Theory of Objects. Monographs in Computer Science. Springer, Heidelberg (1996)

    MATH  Google Scholar 

  2. Ábrahám, E., de Boer, F.S., de Roever, W.-P., Steffen, M.: A Hoare logic for monitors in Java. Techical report TR-ST- 03-1, Lehrstuhl für Software-Technologie, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität zu Kiel (April 2003)

    Google Scholar 

  3. Alves-Foss, J. (ed.): Formal Syntax and Semantics of Java. LNCS State-of-the-Art-Survey, vol. 1523. Springer, Heidelberg (1999)

    Google Scholar 

  4. Apt, K.R., Francez, N., de Roever, W.-P.: A proof system for communicating sequential processes. ACM Transactions on Programming Languages and Systems 2, 359–385 (1980)

    Article  MATH  Google Scholar 

  5. Abadi, M., Rustan, K., Leino, M.: A logic of object-oriented programs. In: Bidoit, M., Dauchet, M. (eds.) CAAP 1997, FASE 1997, and TAPSOFT 1997. LNCS, vol. 1214, pp. 682–696. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  6. Ábrahám-Mumm, E., de Boer, F.S.: Proof-outlines for threads in Java. In: Palamidessi, C. (ed.) CONCUR 2000. LNCS, vol. 1877, p. 229. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  7. Ábrahám-Mumm, E., de Boer, F.S., de Roever, W.-P., Steffen, M.: Verification for Java’s reentrant multithreading concept. In: Nielsen, M., Engberg, U. (eds.) FOSSACS 2002. LNCS, vol. 2303, pp. 4–20. Springer, Heidelberg (2002); A longer version, including the proofs for soundness and completeness, appeared as Technical Report TR-ST-02-1 (March 2002)

    Chapter  Google Scholar 

  8. America, P.: A behavioural approach to subtyping in objectoriented programming languages. 443, Phillips Research Laboratories (January/April 1989)

    Google Scholar 

  9. Andrews, G.R.: Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, Reading (2000)

    Google Scholar 

  10. Bosangue, M., de Boer, F.S., de Roever, W.-P., Graf, S. (eds.): FMCO 2002. LNCS, vol. 2852. Springer, Heidelberg (2003)

    Google Scholar 

  11. Buhr, P.A., Fortier, M., Coffin, M.H.: Monitor classification. ACM Computing Surveys 27(1), 63–107 (1995)

    Article  Google Scholar 

  12. Basin, D., Friedrich, S., Gawkowski, M.: Verified bytecode model checkers. In: Carreño, V.A., Muñoz, C.A., Tahar, S. (eds.) TPHOLs 2002. LNCS, vol. 2410, pp. 47–66. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  13. Cenciarelli, P., Knapp, A., Reus, B., Wirsing, M.: An event-based structural operational semantics of multi-threaded Java. In: Alves-Foss [AF99], pp. 157–200

    Google Scholar 

  14. de Boer, F.S.: A WP-calculus for OO. In: Thomas, W. (ed.) FOSSACS 1999. LNCS, vol. 1578, pp. 135–156. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  15. de Boer, F.S., Pierik, C.: Computer-aided specification and verification of annotated object-oriented programs. In: Jacobs, B., Rensink, A. (eds.) Proceedings of the Fifth International Conference on Formal Methods for Open Object-Based Distributed Systems (FMOODS 2002), vol. 209, pp. 163–177. Kluwer, Dordrecht (2002)

    Google Scholar 

  16. de Boer, F.S., Pierik, C.: Towards an environment for the verification of annotated object-oriented programs. Technical report UU-CS-2003-002, Institute of Information and Computing Sciences, University of Utrecht (January 2003)

    Google Scholar 

  17. de Figueiredo, C.C.: A proof system for a sequential object-oriented language. Technical Report UMCS-95-1-1, University of Manchester (1995)

    Google Scholar 

  18. Floyd, R.W.: Assigning meanings to programs. In: Schwartz, J.T. (ed.) Proc. Symp. in Applied Mathematics, vol. 19, pp. 19–32 (1967)

    Google Scholar 

  19. Gosling, J., Joy, B., Steele, G.: The Java Language Specification. Addison-Wesley, Reading (1996)

    MATH  Google Scholar 

  20. Hoare, C.A.R., Jones, C.B. (eds.): Essays in Computing Science. International Series in Computer Science. Prentice Hall, Englewood Cliffs (1989)

    MATH  Google Scholar 

  21. Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12, 576–580 (1969); Also in [HJ89]

    Article  MATH  Google Scholar 

  22. Huisman, M.: Java Program Verification in Higher-Order Logic with PVS and Isabelle. PhD thesis, University of Nijmegen (2001)

    Google Scholar 

  23. Jacobs, B., Kiniry, J., Warnier, M.: Java program verification challenges. In: Bosangue et al. [BdBdRG03]

    Google Scholar 

  24. Jacobs, B., van den Berg, J., Huisman, M., van Barkum, M., Hensel, U., Tews, H.: Reasoning about classes in Java (preliminary report). In: Object Oriented Programing: Systems, Languages, and Applications (OOPSLA) 1998, pp. 329–340. ACM, New York (1998) (in SIGPLAN Notices)

    Google Scholar 

  25. Leavens, G.T., Baker, A.L., Ruby, C.: JML: a Java modelling language. In: Formal Underpinnings of Java Workshop, at OOPSLA 1998 (1998)

    Google Scholar 

  26. Leavens, G.T., Cheon, Y., Clifton, C., Ruby, C., Cok, D.R.: How the design of jml accommodates both runtime assertion checking and formal verification. In: Bosangue, et al. [BdBdRG03]

    Google Scholar 

  27. Levin, G.M., Gries, D.: A proof technique for communicating sequential processes. Acta Informatica 15(3), 281–302 (1981)

    Article  MATH  MathSciNet  Google Scholar 

  28. The LOOP project: Formal methods for object-oriented systems (2001), http://www.cs.kun.nl/~bart/LOOP/

  29. Leavens, G.T., Wheil, W.E.: Reasoning about objectoriented programs that use subtypes. In: Object Oriented Programing: Systems, Languages, and Applications (OOPSLA) 1990, Ottawa, Canada, pp. 212–223. ACM, New York (1990); Extended Abstract

    Chapter  Google Scholar 

  30. Leavens, G.T., Wheil, W.E.: Specification and verification of object-oriented programs using supertype abstraction. Acta Informatica (1994); An expanded version appeared as Iowa State Unversity Report, 92-28d

    Google Scholar 

  31. Owicki, S., Gries, D.: An axiomatic proof technique for parallel programs. Acta Informatica 6(4), 319–340 (1976)

    Article  MATH  MathSciNet  Google Scholar 

  32. Owre, S., Rushby, J.M., Shankar, N.: PVS: A prototype verification system. In: Kapur, D. (ed.) CADE 1992. LNCS, vol. 607, pp. 748–752. Springer, Heidelberg (1992)

    Google Scholar 

  33. Pierik, C., de Boer, F.S.: A syntax-directed Hoare logic for object-oriented programming concepts. Technical report UU-CS-2003- 010, Institute of Information and Computing Sciences, University of Utrecht (2003)

    Google Scholar 

  34. Poetzsch-Heffter, A.: A logic for the verification of object-oriented programs. In: Berghammer, R., Simon, F. (eds.) Proceedings of Programming Languages and Fundamentals of Programming, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität Kiel, November 1997. Bericht Nr. 9717, pp. 31–42 (1997)

    Google Scholar 

  35. Poetzsch-Heffter, A.: Specification and Verification of Object- Oriented Programs. Technische Universität München, Habilitationsschrift (January 1997)

    Google Scholar 

  36. Poetzsch-Heffter, A., Müller, P.: Logical foundations for typed object-oriented languages. In: Gries, D., de Roever, W.-P. (eds.) Proceedings of PROCOMET 1998. International Federation for Information Processing (IFIP). Chapman & Hall, Boca Raton (1998)

    Google Scholar 

  37. Poetzsch-Heffter, A., Müller, P.: A programming logic for sequential Java. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 162–176. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  38. Reus, B., Hennicker, R., Wirsing, M.: A Hoare calculus for verifying Java realizations of OCL-constrained design models. In: Hussmann, H. (ed.) FASE 2001. LNCS, vol. 2029, pp. 300–316. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  39. Reus, B., Wirsing, M.: A Hoare-logic for object-oriented programs. Technical report, LMU München (2000)

    Google Scholar 

  40. Stärk, R., Schmid, J., Börger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  41. Tang, F., Hofmann, M.: Generation of verification conditions for Abadi and Leino’s logic of objects (extended abstract). In: Proceedings of the 9th International Workshop on Foundations of Object- Oriented Languages, FOOL 2002 (2002); A longer version is available as LFCS technical report

    Google Scholar 

  42. von Oheimb, D.: Hoare logic for Java in Isabelle/HOL. Concurrency and Computation: Practice and Experience 13(13), 1173–1214 (2001)

    Article  MATH  Google Scholar 

  43. von Oheimb, D., Nipkow, T.: Hoare logic for NanoJava: Auxiliary variables, side effects and virtual methods revisited. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 89–105. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  44. Warmer, J.B., Kleppe, A.G.: The Object Constraint Language: Precise Modeling With Uml. Object Technology Series. Addison-Wesley, Reading (1999)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ábrahám, E., de Boer, F.S., de Roever, WP., Steffen, M. (2003). A Tool-Supported Proof System for Multithreaded Java. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, WP. (eds) Formal Methods for Components and Objects. FMCO 2002. Lecture Notes in Computer Science, vol 2852. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39656-7_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-39656-7_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-20303-2

  • Online ISBN: 978-3-540-39656-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics