Concurrent and Distributed Systems

  • C. A. R. Hoare
  • Leslie Lamport
Part of the Formal Approaches to Computing and Information Technology (FACIT) book series (FACIT)


In a concurrent system, two or more activities (e.g., processes or programs) progress in some manner in parallel with each other. A distributed system consists of a number of independent computer systems connected together so that they can cooperate with each other in some manner. Inevitably these two concepts are intertwined.


State Function Temporal Logic Safety Property Atomic Action Concurrent System 
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.
    Atkinson, R., and Hewitt, C. Sychronisation in actor systems. Working Paper 83, M.I.T., Cambridge, Mass., Nov. 1976.Google Scholar
  2. 2.
    Brinch Hansen, P. The programming language Concurrent Pascal. IEEE Trans. Software Eng. 1, 2 (June 1975), 199–207.Google Scholar
  3. 3.
    Campbell, R.H., and Habermann, A.N. The specification of process synchronisation by path expressions. Lecture Notes in Computer Science 16, Springer, 1974, pp. 80–102.CrossRefGoogle Scholar
  4. 4.
    Conway, M.E. Design of a separable transition-diagram compiler. Comm. ACM 6, 7 (July 1963), 396–408.MATHCrossRefGoogle Scholar
  5. 5.
    Dahl, O-J., et al. SIMULA 67, common base language. Norwegian Computing Centre, Forskningveien, Oslo, 1967.Google Scholar
  6. 6.
    Dijkstra, E.W. Co-operating sequential processes. In Programming Languages, F. Genuys, Ed., Academic Press, New York, 1968, pp. 43–112.Google Scholar
  7. 7.
    Dijkstra, E.W. Notes on structured programming. In Structured Programming, Academic Press, New York 1972, pp. 1–82.Google Scholar
  8. 8.
    Dijkstra, E.W. Guarded commands, nondeterminacy, and formal derivation of programs. Comm. ACM 18, 8 (Aug. 1975), 453–457.MathSciNetMATHCrossRefGoogle Scholar
  9. 9.
    Dijkstra, E.W. Verbal communication, Marktoberdorf, Aug. 1975.Google Scholar
  10. 10.
    Hoare, C.A.R. Towards a theory of parallel programming. In Operating Systems Techniques, Academic Press, New York, 1972, pp. 61–71.Google Scholar
  11. 11.
    Hoare, C.A.R. Proof of correctness of data representations. Acta Informatica 1, 4 (1972), 271–281.MATHCrossRefGoogle Scholar
  12. 12.
    Kahn, G. The semantics of a simple language for parallel programming. In Proc. IFIP Congress 74, North Holland, 1974.Google Scholar
  13. 13.
    Liskov, B.H. A note on CLU. Computation Structures Group Memo. 112, M.I.T., Cambridge, Mass., 1974.Google Scholar
  14. 14.
    Mcllroy, M.D. Coroutines. Bell Laboratories, Murray Hill, N.J., 1968.Google Scholar
  15. 15.
    Naur, P., Ed. Report on the algorithmic language ALGOL 60. Comm. ACM 3, 5 (May 1960), 299–314.MathSciNetGoogle Scholar
  16. 16.
    Reynolds, J.C. COGENT. ANL-7022, Argonne Nat. Lab., Argonne, Ill., 1965.Google Scholar
  17. 17.
    Thompson, K. The UNIX command language. In Structured Programming, Infotech, Nicholson House, Maidenhead, England, 1976, pp. 375–384.Google Scholar
  18. 18.
    van Wijngaarden, A. Ed. Report on the algorithmic language ALGOL 68. Numer. Math. 14 (1969), 79–218.MathSciNetMATHCrossRefGoogle Scholar
  19. 19.
    Wulf, W.A., London, R.L., and Shaw, M. Abstraction and verification in ALPHARD. Dept. of Comptr. Sci., Carnegie Mellon U., Pittsburgh, Pa., June 1976.Google Scholar
  20. 20.
    Wirth, N. The programming language PASCAL. Acta Informatica 1, 1 (1971), 35–63.MathSciNetMATHCrossRefGoogle Scholar
  21. 1.
    Alford, M.W. et al. Distributed systems: methods and tools for specification. Lecture Notes in Computer Science, 190. Springer-Verlag, New York, 1985, 270–285.Google Scholar
  22. 2.
    Alpern, B., and Schneider, F.B. Defining liveness. Inf. Process. Lett. 21, 4 (Oct. 1985), 181–185.MathSciNetMATHCrossRefGoogle Scholar
  23. 3.
    Alpern, B., and Schneider, F.B. Verifying temporal properties without using temporal logic. Tech. Rep. TR85–723, Dept. of Computer Science, Cornell Univ., Dec. 1985.Google Scholar
  24. 4.
    Barringer, H., Kuiper, R., and Pnueli, A. A really abstract concurrent model and its temporal logic. In 13th Annual ACM Symposium on Principles of Programming Languages (St. Petersburg Beach, Fla., Jan. 13–15) ACM, New York, 1986, pp. 173–183.Google Scholar
  25. 5.
    Bernstein, P.A., and Goodman, N. Concurrency control in distributed database systems. Comput. Surv. 13, 2 (June 1981), pp. 185–222.MathSciNetCrossRefGoogle Scholar
  26. 6.
    Guttag, J.V., Horning, J.J., and Wing, J.M. Larch in five easy pieces. Tech. Rep. 5, Digital Equipment Corporation, Systems Research Center, 1985.Google Scholar
  27. 7.
    Hoare, C. A.R. Communicating sequential processes. Commun. ACM 21, 8 (Aug. 1978), pp. 666–677.MathSciNetMATHCrossRefGoogle Scholar
  28. 8.
    Jones, C.B. Systematic Software Development Using VDM. Prentice-Hall, Englewood Cliffs, N.J., 1986.MATHGoogle Scholar
  29. 9.
    Lam, S.S., and Shankar, A.U. Protocol verification via projections. IEEE Trans. Softw. Eng. SE-10, 4 (July 1984), pp. 325–342.CrossRefGoogle Scholar
  30. 10.
    Lamport, L. “Sometime” is sometimes “not never”: A tutorial on the temporal logic of programs. In Proceedings of the 7th Annual Symposium on Principles of Programming Languages (Las Vegas, Nev., Jan. 28–30), ACM, New York, 1980, pp. 174–185.Google Scholar
  31. 11.
    Lamport, L. Reasoning about nonatomic operations. In Proceedings of the 10th Annual Symposium on Principles of Programming Languages (Austin, Texas, Jan. 24–26), ACM, New York, 1983, pp. 28–37.Google Scholar
  32. 12.
    Lamport, L. Specifying concurrent program modules. ACM Trans. Program. Lang. Syst. 5, 2 (Apr. 1983), pp. 190–222.MATHCrossRefGoogle Scholar
  33. 13.
    Lamport, L. What good is temporal logic? In Information Processing 83: Proceedings of the IFIP 9th World Congress R.E.A. Mason, Ed., IFIP, North-Holland, Paris, September 1983, 657–668.Google Scholar
  34. 14.
    Lamport, L. What it means for a concurrent program to satisfy a specification: why no one has specified priority. In Proceedings of the 12th ACM Symposium on Principles of Programming Languages (New Orleans, La., Jan. 14–16), ACM, New York, 1985, pp. 78–83.Google Scholar
  35. 15.
    Lamport, L. Win and sin; predicate transformers for concurrency. Res. Rep. 17, Digital Equipment Corporation, Systems Research Center, 1987. (Also ACM Trans. Program. Lang. Syst. 12, 3 (July 1990), 396–428.)Google Scholar
  36. 16.
    Mead, C., and Conway, L. In Introduction to VLSI Systems. Addison-Wesley, Reading, Mass., 1980, 218–262.Google Scholar
  37. 17.
    Milner, R. A Calculus of Communicating Systems, Springer-Verlag, Berlin, 1980.MATHCrossRefGoogle Scholar
  38. 18.
    Owicki, S., and Gries, D. An axiomatic proof technique for parallel programs. Acta Informatica 6, 4, 1976, 319–340.MathSciNetMATHCrossRefGoogle Scholar
  39. 19.
    Owicki, S., and Lamport, L. Proving liveness properties of concurrent programs. ACM Trans. Program. Lang. Syst. 4, 3 (July 1982), 455–495.CrossRefGoogle Scholar
  40. 20.
    Wensley, J. et al. SIFT: Design and analysis of a fault-tolerant computer for aircraft control. Proc. IEEE 66, 10 (Oct. 1978), 1240–1254.CrossRefGoogle Scholar
  41. 21.
    Wirth, N. Programming in Modula-2, 3rd ed. Springer-Verlag, Berlin, 1985.MATHGoogle Scholar

Copyright information

© Springer-Verlag London Limited 1999

Authors and Affiliations

  • C. A. R. Hoare
  • Leslie Lamport

There are no affiliations available

Personalised recommendations