Abstract
A proof system is presented for the verification and derivation of object oriented programs with as main features strong typing, dynamic binding, and inheritance. The proof system is inspired on Meyer’s system of class invariants [12]and remedies its unsoundness, which is already recognized by Meyer. Dynamic binding is treated in a flexible way: when throughout the class hierarchy overriding methods respect the pre- and postconditions of the overridden methods, very simple proof rules for method calls suffice; more powerful proof rules are supplied for cases where one cannot or does not want to follow this restriction. The proof system is complete relative to proofs for properties of pointers and the data domain.
Research group Systematic Object Oriented Programming, at the time of conception of this paper consisting of Lex Bijlsma, Rik van Geldrop, Louis van Gool, Kees Hemerik, Kees Huizing, Ruurd Kuiper, Onno van Roosmalen, Jaap van der Woude, and Gerard Zwaan
Chapter PDF
References
M. Abadi and K.R.M. Leino, A Logic of Object-Oriented Programs, in TAPSOFT’ 97, LNCS 1214, Springer, 1997.
P.H.M. America and J.J.M.M. Rutten, A Parallel Object-Oriented Language: Design and semantic foundations, PhD thesis, Free University of Amsterdam, 1989.
K. Arnold and J. Gosling, The Java programming language, 2nd ed., Addison-Wesley, 1997.
K.R. Apt and E.-R. Olderog, Verification of sequential and concurrent programs, Springer-Verlag, 1991.
F.S. de Boer, Reasoning about dynamically evolving process structures: A proof theory for the parallel object-oriented language POOL, PhD thesis, Free University of Amsterdam, 1991.
U. Hensel, M. Huisman, B. Jacobs, and H. Tews, Reasoning about Classes in Object-Oriented Languages: Logical Models Tools, in ESOP at ETAPS 1998, Springer-Verlag, 1998.
C.A.R. Hoare, An axiomatic basis for computer programming, Communications of the ACM, 12, pp. 576–583, 1969.
H.B.M. Jonkers, Upgrading the pre-and postcondition technique. In VDM’ 91: Formal Software Development Methods, LNCS 551, Springer-Verlag, 1991.
K. Rustan M. Leino, Toward Reliable Modular Programs, Phd. Thesis, California Institute of Technology, Pasadena, 1995.
B. Liskov and J. Wing, A behavioral notion of subtyping, ACM TOPLAS, 16:6, pp. 1811–1841, 1994.
Z. Manna and A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems. Springer-Verlag, 1992.
B. Meyer, Object-Oriented Software Construction, Prentice Hall, 1988.
A. Poetzsch-Heffter and P. Müller, Logical foundations for typed object-oriented languages, in D. Gries and W.P. de Roever, editors, Programming Concepts and Methods (PROCOMET), 1998.
A. Poetzsch-Heffter, Specification and verification of object-oriented programs, Habilitation, TU Muenchen, 1997.
C. Szyperski, Component software: Beyond object-oriented programming, Addison-Wesley, 1998.
J. Warmer, A. Kleppe, The Object Constraint Language, Addison-Wesley, 1999.
Author information
Authors and Affiliations
Consortia
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Huizing, K., Kuiper, R., SOOP. (2000). Verification of Object Oriented Programs Using Class Invariants. In: Maibaum, T. (eds) Fundamental Approaches to Software Engineering. FASE 2000. Lecture Notes in Computer Science, vol 1783. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-46428-X_15
Download citation
DOI: https://doi.org/10.1007/3-540-46428-X_15
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67261-6
Online ISBN: 978-3-540-46428-0
eBook Packages: Springer Book Archive