Design and verification of programs by formal rules forming a logic of programlmng and a calculus for the discrete design of systems of programs including commumcating programs is one of major goals for a formal foundation of program development. Basically, we may dlstmgmsh two approaches to formal program design: the verification approach where tmtially the programming is done regardless of formal rules and later proved correct (if possible) against a given specification, and the transformation approach where the construction of the program is done along a calculus and therefore includes a constructive correctness proof. FoUowmg recent ideas of Hoare [5] and Hehner [4], both approaches can be combined mto one by considering programs as a particular notation for predicates. It seems rather suggestive to apply the concept of predicative specifications to an apphcatIve language for descnbmg communicating systems. In the foUowmg, an example of a simple predicative specification language with an integrated functional language is given. It is powerful enough to specify and write programs representing finite and mflmte nondeterministic data flow networks. The language is formally defined in terms of predicative specifications and a few simple examples are given. By doing so, one of the key questions is the treatment of nondetermmlsm. It is resolved m a simple way a recursive declaration of a nondeterlmmstlc function can rather be seen as an equational specification of a predicate on functions Then, the set of functions that fulfill tins predicate is taken as the meaning of the recurswe declaration
[1]
David Harel,et al.
First-Order Dynamic Logic
,
1979,
Lecture Notes in Computer Science.
[2]
C. A. R. Hoare.
Programs are predicates
,
1984,
Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.
[3]
Eric C. R. Hehner,et al.
Predicative programming Part I
,
1984,
CACM.
[4]
Manfred Broy,et al.
Specification and Top Down Design of Distributed Systems
,
1985,
TAPSOFT, Vol.1.
[5]
David Michael Ritchie Park,et al.
On the Semantics of Fair Parallelism
,
1979,
Abstract Software Specifications.