We describe enhancements to the pre- and postcondition technique that help specifications convey information more effectively.
Some enhancements allow one to specify redundant information that can be used in “debugging” specifications. For instance,
adding examples to a specification gives redundant information that may aid some readers, and can also be used to help ensure
that the specification says what is intended. Other enhancements allow improvements in frame axioms for object-oriented (OO)
procedures, better treatments of exceptions and inheritance, and improved support for incompletely-specified types. Many of
these enhancements were invented by other authors, but are not widely known. They have all been integrated into Larch/C+++,
a Larchstyle behavioral interface specification language for C++. However, such enhancements could also be used to make other
specification languages more effective tools for communication.
Keywords specification language design - expressiveness - liberal specification - redundancy - debugging - history constraint - Larch