Parallel programming: An axiomatic approach

  • C. A. R. Hoare
Chapter 1.: Concurrency
Part of the Lecture Notes in Computer Science book series (LNCS, volume 46)


This paper develops some ideas expounded in [1]. It distinguishes a number of ways of using parallelism, including disjoint processes, competition, cooperation, communication and "colluding". In each case an axiomatic proof rule is given. Some light is thrown on traps or ON conditions. Warning: the program structuring methods described here are not suitable for the construction of operating systems.


Parallel Programming Parallel Execution Propositional Formula Proof Rule Abstract Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    C. A. R. Hoare. "Towards a Theory of Parallel Programming," in Operating Systems Techniques, ed. C. A. R. Hoare and R. H. Perrot. Academic Press, 1972.Google Scholar
  2. [2]
    C. A. R. Hoare. "Proof of Correctness of Data Representations," Acta Informatica 1, 271–281 (1972).CrossRefGoogle Scholar
  3. [3]
    C. A. R. Hoare. "Monitors: an Operating System Structuring Concept." Seminar delivered to I.R.I.A., May 11, 1973.Google Scholar
  4. [4]
    D. Scott. "Outline of a Mathematical Theory of Computation," PRG-7. Programming Research Group, Oxford University.Google Scholar
  5. [5]
    E. W. Dijkstra. "Cooperating Sequential Processes," in Programming Languages, ed. F. Genuys. Academic Press, 1968.Google Scholar
  6. [6]
    C. A. R. Hoare. "Notes on Data Structuring," in Structured Programming, by E. W. Dijkstra, O. J. Dahl, C. A. R. Hoare. Academic Press, 1972.Google Scholar
  7. [7]
    C. A. R. Hoare. "Procedures and Parameters: an Axiomatic Approach," in Symposium on Semantics of Algorithmic Languages, ed. E. Engeler. Springer-Verlag, 1972.Google Scholar
  8. [8]
    P. E. Lauer. "Consistent Formal Theories of the Semantics of Programming Languages," Ph.D. thesis, Queen's University, Belfast. TR.25.121 IBM Laboratory, Vienna, Nov. 1971.Google Scholar
  9. [9]
    P. Brinch Hansen. Operating System Principles. Prentice-Hall, 1973.Google Scholar
  10. [10]
    D. Michie. "Memo functions: a language feature with ‘rote learning’ properties," MIP-R-29, Edinburgh University, (November 1967).Google Scholar
  11. [11]
    M. E. Conway. "Design of a Separable Transition Diagram Compiler," Comm. ACM 6, 396–408, (1963).CrossRefGoogle Scholar
  12. [12]
    M. Clint. "Program Proving: Coroutines," Acta Informatica 2, 50–63, (1973).CrossRefGoogle Scholar
  13. [13]
    R. W. Floyd. "Nondeterministic Algorithms," J. ACM 14, 4, pp. 636–644, (1967).Google Scholar
  14. [14]
    N. Wirth. "The Programming Language PASCAL," Acta Informatica 1, 1 (1971), pp. 35–63.CrossRefGoogle Scholar
  15. [15]
    E. A. Ashcroft, Z. Manna. "Formalization of Properties of Parallel Programs," A.I.M. 110, Stanford University, February 1970.Google Scholar
  16. [16]
    E. W. Dijkstra. Private communication.Google Scholar
  17. [17]
    Formal Definition of PL/I. IBM Laboratory, Vienna, TR.25.071 (1967).Google Scholar
  18. [18]
    A. d'Agapeyeff. Private communication.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1976

Authors and Affiliations

  • C. A. R. Hoare
    • 1
  1. 1.The Queen's University of BelfastBelfastNorthern Ireland

Personalised recommendations