Learn More
This paper describes a proof outline logic that covers most typical object-oriented language constructs in the presence of inheritance and subtyping. The logic is based on a weakest precondition calculus for assignments and object allocation which takes field shadowing into account. Dynamically bound method calls are tackled with a variant of Hoare's rule(More)
Behavioral subtyping forces objects of subtypes to behave in the same way as objects of supertypes. It is often favored over standard subtyping because it provides a means to obtain a modular program logic. Relative completeness is a formal property of a Hoare logic that ensures that any failed attempt to verify the correctness of a program is not caused by(More)
This report presents a sound and complete Hoare logic for a sequential object-oriented language with inheritance and subtyping like Java. It describes a weakest precondition calculus for assignments and object-creation, as well as Hoare rules for reasoning about (mutually recursive) method invocations with dynamic binding. Our approach enables reasoning at(More)
This paper presents a new rule for reasoning about method calls in object-oriented programs. It is an adaptation of Hoare's rule of adaptation to the object-oriented paradigm, which takes both the write effects and the creational effects of a method into account. The new rule contributes in various ways to the modularity of the specification. We also argue(More)
This paper presents a new rule for reasoning about method calls in object-oriented programs. It concerns an optimized adaptation of Hoare's rule of adaptation to the object-oriented paradigm. The new rule contributes in various ways to the modularity of the specification. We also argue that our rule of adaptation is the missing link between Hoare logics and(More)
The main contribution of this paper consists of a description and formal justification of a tool which supports the specification and verification of a class of flowcharts that captures the basic dynamics of object-oriented programs. The computer-aided specification and verification involves the annotation of a flowchart with assertions and the automatic(More)
A characteristic property of the invariants underlying creational design patterns is that they quantify over all the objects (of a certain class). We examine such invariants, determining the constraints that they place on the environment. In addition, we analyze the degree to which (some) creational patterns contribute to the satisfaction of such(More)