A Refinement Calculus for Tuple Spaces
It is fairly accepted that the realization of complex systems must
be accomplished step by step from the initial specification, through a
sequence of intermediate phases, to the final program. These
development steps, linking a preliminary version, or description, of
the program to a more detailed one, are usually called
refinement steps, while the intermediate stages of a refinement
process are called levels of abstraction.
A refinement calculus is a means to support this modus operandi
in program development, allowing to link different levels of
abstraction: it introduces a precise relation between intermediate
descriptions, and the rules to check whether the relation is
satisfied.
Tuple space languages are concurrent languages, that foster the
definition of autonomous entities of computation (the processes), and
offer mechanisms for their synchronization and communication. In
particular, they represent one of the most acknowledged models of
coordination.
Tuple space languages are based on the idea that a dynamic collection
of tuples can act as shared state of concurrent processes, and play
the role of coordination media among them.
To build a refinement calculus for tuple spaces, we address three
points, in this paper:
1) We single out a specification language, a variation of first order
temporal logic. Temporal relations between propositional formulae are
not expressive enough to describe relations between tuple spaces,
which are multisets of atoms. The specification language, called
Oikos-tl, includes three new temporal operators that enhance the
expressive power of the logic, permitting to directly link state
transitions and state configurations. The semantics of the
specification language is formally defined, and a set of useful
properties for refinement are shown.
2) We introduce a reference language for tuple spaces, dubbed TuSpRel,
and define its axiomatic and operational semantics. We need the
former to derive properties, the latter to describe the allowed
computations of a system. We relate these descriptions, and guarantee
that using the axiomatic semantics we can derive properties, which are
correct and complete with respect to the operational behaviour. The
non-deterministic features of tuple space languages make this result
new, and more complex than in other programming paradigms. One of the
contributions of our work is the idea to derive weakest preconditions
exploiting the demonic strict choice in non-deterministic selection.
The transition system defining the operational semantics is based on
the new notion of enabling precondition, which exploits the angelic
strict choice.
3) To build the refinement calculus, we take a compositional
approach. We first consider the basic statements of the language, and
say under which conditions they satisfy a property, then compose these
proofs to derive that a system refines a specification. Finally, in
the refinement calculus definition, we extend to tuple space languages
the ability to exploit logic formulae to specify the behaviour of
unrefined modules: in the intermediate steps, a system is only
partially written in the programming language, and the still unrefined
features are described by logical formulae.