Languages for Reactive Specifications: Synchrony Vs Asynchrony

Asynchronous and Synchronous languages have been in use for the specification of reactive systems. One of the main distinguishing features of these two classes lies in the way nondeterminism is used for the specification of programs. In this paper, we formally analyze these two classes from this point of view by comparing the asynchronous language CSP with the synchronous language Esterel. The synchronous language Esterel is based on the notions of determinism, input nondeterminacy and parallelism whereas CSP is built on the notions of nondeterminism, concurrency and distribution. The main objectives of the study are to assess: 1. The role of nondeterminism in the specification of the behaviour and realization of programs: A clear distinction between local and global nondeterminism enables us to distinguish between the implementational nondeterminism and environmental or input nondeterminism. The results in this direction would enable one to achieve observable determinism where the implementational choices can be hidden and thus, analyze the program behaviour with reference to the real environmental nondeterminism in the specification. This in turn leads to a proper refinement of specifications and programs and also aids in deriving distributed implementations of finite state transition systems which are not necessarily deterministic. 2. The implementability of asynchronous languages through synchronous languages: The synchrony hypothesis of the synchronous languages makes it closer to a perfect machine. Thus, the implementability of asynchronous languages in synchronous languages not only provides a realistic implementation but also provides other higher level abstractions (such as multi-process interactions) for reactive specifications using features such as broadcast, interrupts, exception handling mechanisms etc.