An Improved Recipe for Specifying Reactive Systems in Z

How can a reactive system be specified in Z without having to use additional formalisms such as CSP or temporal logic? The conventional wisdom is that it cannot. Notations like Z and VDM traditionally describe a system as an abstract data type. Hence they concentrate on the 'static' system behaviour: that is why they define operations using state before and state after. However, it seems clear that in order to specify a reactive system, 'dynamic behaviour' must be described otherwise concurrent or real-time properties cannot be specified. It is this aspect which is entirely missing from conventional Z and VDM specifications. During the late eighties, Duke et al [DHKR88, DS89] provided a partial solution to this problem. They showed how a conventional Z specification could be augmented with an additional specification describing its reactive behaviour. Their approach was to informally introduce a relation, OP, to represent all the possible before and after states of the operations of the system being specified. The behaviour of the system was then formalised as the history of state and operation executions resulting from the repeated application of O P (with concurrent operations arbitrarily ordered). Unfortunately, the specification approach they adopted was partially informal, and was oriented towards one specific example. The aim of this paper is to show that this promising approach can be greatly improved and extended upon to the point where it can provide a practical method for specifying reactive systems in Z. It also adds to work originally presented in [Eva96b]. The four extensions made are: