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