Inheritance is a useful mechanism for factoring and reusing code. However, it has limitations for building extensible systems. We describe nested inheritance, a mechanism that add...
This paper addresses the crucial issue in the design of a proof development system of how to deal with partial functions and the related question of how to treat undefined terms. ...
The analogy between types and contracts raises the question of how many features of static type systems can be expressed as dynamic contracts. An important feature missing in prio...
Arjun Guha, Jacob Matthews, Robert Bruce Findler, ...
Object invariants describe the consistency of object states, and are crucial for reasoning about the correctness of object-oriented programs. However, reasoning about object invari...
This paper describes a type system that is capable of expressing and enforcing immutability constraints. The speonstraint expressed is that the abstract state of the object to whi...