|
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.
|