OXFORD UNIVERSITY COMPUTING LABORATORY

Programming Research Group Technical Monograph PRG-123

A refinement calculus for Z

Ana Cavalcanti

August 1997, 189 pages

The lack of a method for developing programs from Z specifications is a difficulty that is now widely recognised. As a contribution to solving this problem, we present ZRC, a refinement calculus based on Morgan's work that incorporates the Z notation and follows its style and conventions. Other refinement techniques have been proposed for Z; ZRC builds upon some of them, but distinguishes itself in that it is completely formalised.

As several other refinement techniques, ZRC is formalised in terms of weakest preconditions. In order to define the semantics of the language, ZRC-L, we construct a weakest precondition semantics for Z based on a relational semantics proposed by the Z standards panel.. The resulting definition is not unexpected, but its construction provides evidence for its suitability and, additionally, establishes connections between predicated transformers and two different relational models. The weakest precondition semantics of the remaining constructs of ZRC-L justify several assumptions that permeate the formalisation of Morgan's relational calculus. Based on the semantics of ZRC-L, we derive all laws of ZRC.

Typically the refinement of a schema in ZRC begins with the application of a conversion law that translates it to a notation convenient for refinement, and proceeds with the application of refinement laws. The conversion laws of ZRC formalise the main strategies and rules of translation available in the literature; its set of refinement laws is extensive and includes support for procedures, parameters, recursion, and data refinement.

Morgan and Back have proposed different formalisations of procedures and parameters in the context of refinement techniques. We investigate a surprising and intricate relationship between these works and the substitution operator that renames the free variables of a program, and reveal an inconsistency in Morgan's calculus. Furthermore, we derive additional laws that formalise Morgan's approach to recursion.

Three case studies illustrate the application of ZRC. They show that ZRC can be useful as a technique of formal program development, but are by no means enough to ascertain the general adequacy of its conversion and refinement laws. Actually, since Z does not enforce a specific style of structuring specifications, it is likely that new laws will be proved useful for particular system specifications: two of our case studies exemplify this situation. Our hope is that ZRC and its formalisation will encourage further investigation into the refinement of Z specifications and the proper justification of any emerging strategies or techniques.


[Oxford Spires]



Oxford University Computing Laboratory Courses Research People About us News