A functional style of programming with CSP-like communication mechanisms

This paper introduces CSP-like communication mechanisms into Backus’ Functional Programming (FP) systems extended by nondeterministic constructs. Several new functionals are used to describe nondeterminism and communication in programs. The functionals union and restriction are introduced into FP systems to develop a simple algebra of programs with nondeterminism. The behaviour of other functionals proposed in this paper are characterized by the properties of union and restriction. The axiomatic semantics of communication constructs are presented. Examples show that it is possible to reason about a communicating program by first transforming it into a non-communicating program by using the axioms of communication, and then reasoning about the resulting non-communicating version of the program. It is also shown that communicating programs can be developed from non-communicating programs given as specifications by using a transformational approach.

[1]  William H. Burge,et al.  Recursive Programming Techniques , 1975 .

[2]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[3]  Michel Sintzoff,et al.  Formal derivation of strongly correct concurrent programs , 2004, Acta Informatica.

[4]  Lawrence Flon,et al.  The Total Correctness of Parallel Programs , 1981, SIAM J. Comput..

[5]  Alberto Pettorossi,et al.  Towards a theory of parallelism and communications for increasing efficiency in applicative languages , 1980, Logic of Programs.

[6]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[7]  Abraham Silberschatz,et al.  Comments on “Communicating Sequential Processes” , 1979, TOPL.

[8]  Leslie Lamport,et al.  Proving the Correctness of Multiprocess Programs , 1977, IEEE Transactions on Software Engineering.

[9]  John R. Gurd,et al.  Nondeterministic Dataflow Graphs , 1980, IFIP Congress.

[10]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[11]  Nissim Francez,et al.  Distributed Termination , 1980, TOPL.

[12]  Per Brinch Hansen,et al.  Distributed processes: a concurrent programming concept , 1978, CACM.

[13]  Robin Milner,et al.  Calculi for Synchrony and Asynchrony , 1983, Theor. Comput. Sci..

[14]  Nissim Francez,et al.  Decomposition of Distributed Programs into Communication-Closed Layers , 1982, Sci. Comput. Program..

[15]  C. A. R. Hoare,et al.  Communicating Sequential Processes (Reprint) , 1983, Commun. ACM.

[16]  Bharadwaj Jayaraman Resource control in a demand-driven data-flow model , 1981 .

[17]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[18]  Sintzoff Michel Issues in the Methodical Design of Concurrent Programs , 1983 .

[19]  Gilles Kahn,et al.  Coroutines and Networks of Parallel Processes , 1977, IFIP Congress.

[20]  Manfred Broy,et al.  Transformational Semantics for Concurrent Programs , 1980, Information Processing Letters.

[21]  Jacques Loeckx,et al.  The Foundations of Program Verification , 1987 .

[22]  John W. Backus,et al.  The Algebra of Functional Programs: Function Level Reasoning, Linear Equations, and Extended Definitions , 1981, ICFPC.

[23]  Andrzej Skowron,et al.  Communicating agents for applicative concurrent programming , 1982, Symposium on Programming.

[24]  J. W. de Bakker,et al.  Mathematical theory of program correctness , 1980, Prentice-Hall international series in computer science.

[25]  Tetsuo Ida,et al.  Functional Programming with Streams , 1983, IFIP Congress.