Polymorphic Extensions to Object-Z Specifications

Inheritance and polymorphism are powerful constructs of object-oriented paradigm, which are supported by almost all object-oriented programming languages. However, majority of existing formal specification languages lack concrete support for polymorphism. For this reason, we propose polymorphic extensions to object-Z, a formal specification language commonly used for object-oriented systems, by defining several novel notations specific to polymorphism. We also define a schema policy that determines the actual late binding of the object with the corresponding reference. We then demonstrate the usability of these extensions by applying them on an example