Hoare, C A R "Communicating Sequential Processes", pp666-677 view details in [ACM] CACM 21(08) (August 1978). view details
Hoare, C A R "Some Properties of Predicate Transformers" pp461-480 view details in [ACM] JACM 25(03)March 1978 view details
Barnes, J. G. P. "The development of tasking primitives in high level languages" in Real-time data handling and process control. Proc. first European symposium (West Berlin, Oct. 23-25, 1979), North-Holland Publishing Co., Amsterdam, 1980, pp235-241 view details in [ACM] JACM 25(03)March 1978 view details
Apt, Krzysztof R.; de Roever Nissim and Willem P. "A Proof System for Communicating Sequential Processes"
view details
Abstract: An axiomatic proof system is presented for proving partial correctness and absence of deadlock (and failure) of communicating sequential processes. The key (meta) rule introduces cooperation between proofs, a new concept needed to deal with proofs about synchronization by message passing. CSP's new convention for distributed termination of loops is dealt with. Applications of the method involve correctness proofs for two algorithms, one for distributed partitioning of sets, the other for distributed computation of the greatest common divisor of n numbers.
in TOPLAS 2(3) July 1980 view details
C A R Hoare, "A Calculus for Total Correctness of Communicating Processes" Science of Computer Programming, 1, (1981), pp. 49-72 view details in TOPLAS 2(3) July 1980 view details
Hoare, C A R "A Model for Communicating Sequential Processes" Programming Research Group Technical Monograph PRG-22 June 1981
view details
Abstract: A previous paper [1] has suggested that parallel composition and communication should be accepted as primitive concepts in programming. This paper supports the suggestion by giving a simplified mathematical model for process, using traces [2] of the possible interactions between a process and its environment.
Wetzel, G. F. review of Barnes 1981 (CSP, Green, Modula) view details in TOPLAS 2(3) July 1980 view details
Zhou Chao Chen and C A R Hoare "Partial Correctness of Communicating Processes and Protocols" Programming Research Group Technical Monograph PRG-20 May 1981
view details
Abstract: We introduce a programming notation to describe the behaviour of groups of parallel processes, communicating with each other over a network of named channels. An assertion is a predicate with free channel names, each of which stands for the sequence of values which have been communicated along that channel up to some moment in time. A process invariantly satisfies an assertion if that assertion is true before and after each communication by that process. We present a system of inference rules for proving that processes satisfy assertions, and illustrate their use on some examples. The validity of the inference rules is established by constructing a model of the programming notation, and by proving each inference rule as a theorem about the model. Limitations of the model and proof system are discussed in the conclusion.
External link: Online copy in TOPLAS 2(3) July 1980 view details
Zhou Chao Chen "The Consistency of the Calculus of Total Correctness for Communicating Processes" Programming Research Group Technical Monograph PRG-26 February 1982 view details
Abstract: In [1], Hoare suggests a notation of assertions to describe the total correctness of communicating processes, and a calculus for proving it. However the question of the consistency of the calculus is left open in that paper. In this paper we give an operational model of communicating processes and present two variants of the calculus, which are consistent with this model. One of them cannot deal with livelock, while the other one does.
E R Olderog and C A R Hoare "Specification-Oriented Semantics for Communicating Processes" Programming Research Group Technical Monograph PRG-37 February 1984
view details
Abstract: A process P satisfies a specification S, abbreviated P sat S, if every observation we can make about the behaviour of P is allowed by S. We use this idea of process correctness as a starting point for developing specific form of denotational semantics for processes, called here specification oriented semantics. This approach serves as a uniform framework for generating and relating a series of increasingly sophisticated denotational models for Communicating Processes.
These models differ in the underlying structure of their observations which influences both the number of representable language operators and the notion of correctness expressed by P sat S. Safety properties are treated by all models; the more sophisticated models also permit proofs of liveness properties. An important feature of the models in a special hiding operator which abstracts from internal process activity. This allows large processes to be composed hierarchically from networks of smaller ones in such a way that proofs of the whole are constructed from proofs of its components. We also show consistency of the denotational models w.r.t. a simple operational semantics based on transitions which make internal process activity explicit.
External link: Online copy in TOPLAS 2(3) July 1980 view details
Castelli, G.; De Cindio, F.; De Michelis, G.; Simone, C. "An overview of the GCP programming language" in Proceedings of the 1985 ACM SIGSMALL symposium on small systems May 1985 view details
Abstract: This paper presents an overview of GCP (Guarded Communicating Processes), a language for distributed applications programming, which has been defined deriving its control mechanisms from Hoare's CSP (with new communication primitives and a new distributed termination convention) and embedding them in a fully defined concurrent programming language. Besides an easy retargetable compiler the GCP environment consists of a configurator/distributor to distribute and activate the processes constituting an application and of a run-time support.
Extract: Intro Guarded Communicating Processes is a complete language for distributed applications based on Hoare's CSP.
CSP are an "ambitious attempt to find a single simple solution" to the communication and synchronization problems of concurrent processes, that is to represent in a single frame semaphores, critical regions, monitors, queues and so on. They are characterized by some choices: . synchronous communication, via the two basic communication primitives: the input command, whose syntax is