Verification of object-oriented programs relies on object invariants which express consistency criteria of objects. The semantics of object invariants is subtle, mainly because of call-backs, multiobject invariants, and subclassing. Several verification techniques for object invariants have been proposed. These techniques are complex and differ in restrictions on programs (e.g., which fields ca...