Insight, Inspiration and Collaboration

  • C. B. Jones
  • A. W. Roscoe


Tony Hoare’s many contributions to computing science are marked by insight that was grounded in practical programming. Many of his papers have had a profound impact on the evolution of our field; they have moreover provided a source of inspiration to several generations of researchers. We examine the development of his work through a review of the development of some of his most influential pieces of work such as Hoare logic, CSP and Unifying Theories.


Operational Semantic Security Protocol Sequence Diagram Process Algebra Domain Theory 
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.



The authors are grateful to Tony Hoare and Robin Milner for their recollections about the development of process algebra, to David May, Gordon Plotkin, Brian Randell, Willem-Paul de Roever and others for their memories and comments, and to many of Tony’s academic descendants for contributing to the family tree below.

We are extremely grateful to Lucy Li of Oxford University Computing Laboratory who undertook the monumental task of assembling the family tree as well as helping us to put together the extended bibliography.

The first author’s research is supported by the EPSRC Platform Grant on “Trustworthy Ambient Systems” and EU FP7 “DEPLOY project”. The second author’s is supported by the EPSRC Grant “CSP Model Checking: New Technologies and Techniques” and by grants from the US ONR.

Bibliography 1: Papers by Hoare

  1. oa68.
    Hoare, C.A.R.: Critique of ALGOL 68. ALGOL Bullet. 29, 27–29 (November 1968).Google Scholar
  2. oa69.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580, 583 (October 1969).zbMATHGoogle Scholar
  3. H71.
    Foley, M., Hoare, C.A.R.: Proof of a recursive program: Quicksort. BCS Comput. J. 14(4), 391–395 (November 1971).zbMATHMathSciNetGoogle Scholar
  4. oa71a.
    Hoare, C.A.R.: Procedures and parameters: An axiomatic approach. In: Engeler, E. (ed.), Symposium on Semantics of Algorithmic Languages – Lecture Notes in Mathematics 188, pp. 102–116. Springer (1971).Google Scholar
  5. oa71b.
    Hoare, C.A.R.: Proof of a program: Find. Commun. ACM 14(1), 39–45 (January 1971).zbMATHGoogle Scholar
  6. DH72.
    Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R. (eds.), Structured Programming. Academic (1972). London; San Diego: Academic Press, 1990, 1972.Google Scholar
  7. oa72a.
    Hoare, C.A.R.: A note on the FOR statement. BIT 12(3), 334–341 (1972).zbMATHGoogle Scholar
  8. oa72b.
    Hoare, C.A.R.: Notes on data structuring. In Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R. (eds.), Structured Programming, pp. 83–174. Academic (1972). London; SanDiego: Academic Press, 1990, 1972.Google Scholar
  9. oa72c.
    Hoare, C.A.R.: Proof of a structured program: ‘The Sieve of Eratosthenes’. BCS, Computer J. 15(4), 321–325 (November 1972).zbMATHMathSciNetGoogle Scholar
  10. oa72d.
    Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica 1(4), 271–281 (1972).zbMATHGoogle Scholar
  11. oa72e.
    Hoare, C.A.R.: Towards a theory of parallel programming. In: Operating System Techniques pp. 61–71. Academic (1972).Google Scholar
  12. oa73a.
    Hoare, C.A.R.: Hints on programming language design. Technical Report STAN-CS-73-403, Stanford (October 1973).Google Scholar
  13. oa73b.
    Hoare, C.A.R.: A structured paging system. BCS Comput. J. 16(3), 209–215 (August 1973).zbMATHGoogle Scholar
  14. W73.
    Hoare, C.A.R., Wirth, N.: An axiomatic definition of the programming language PASCAL. Acta Informatica 2(4), 335–355 (1973).Google Scholar
  15. L74.
    Hoare, C.A.R., Lauer, P.E.: Consistent and complementary formal theories of the semantics of programming languages. Acta Informatica 3(2), 135–153 (1974).zbMATHMathSciNetGoogle Scholar
  16. oa74.
    Hoare, C.A.R.: Monitors: An operating system structuring concept. Commun. ACM 17(10), 549–557 (October 1974).zbMATHGoogle Scholar
  17. oa75.
    Hoare, C.A.R.: Parallel programming: An axiomatic approach. Comput. Languages 1(2), 151–160 (June 1975).zbMATHMathSciNetGoogle Scholar
  18. CH76.
    Ashcroft, E.A., Clint, M., Hoare, C.A.R.: Remarks on “program proving: Jumps and functions”. Acta Informatica 6(3), 317–318 (1976).zbMATHGoogle Scholar
  19. SH77.
    Welsh, J., Sneeringer, W.J., Hoare, C.A.R.: Ambiguities and insecurities in PASCAL. Software Practice Experience 7(6), 685–96 (November–December 1977).zbMATHGoogle Scholar
  20. HLdR79.
    Francez, N., Hoare, C.A.R., Lehmann, D.J., de Roever, W.P.: Semantics of nondeterminism, concurrency and communication. J. Comput. System Sci. 19(3), 290–308 (December 1979).zbMATHMathSciNetGoogle Scholar
  21. BR81.
    Hoare, C.A.R., Brookes, S.D., Roscoe, A.W.: A theory of communicating sequential processes. Technical Report PRG 16, Oxford University Computing Laboratory, Programming Research Group (1981).Google Scholar
  22. oa81a.
    Hoare, C.A.R.: A calculus of total correctness for communicating processes. The Sci. Computer Programming 1(1–2), 49–72 (October 1981).zbMATHMathSciNetGoogle Scholar
  23. oa81b.
    Hoare, C.A.R.: The emperor’s old clothes. Commun. ACM 24(2), 75–83 (February 1981).Google Scholar
  24. O83.
    Hoare, C.A.R., Olderog, E.R.: Specification-oriented semantics for communicating processes. In: Automata Languages and Programming 10th Colloquium, vol. 154 of Lecture Notes in Computer Science, pp. 561–572. Springer (1983).Google Scholar
  25. HR84.
    Brookes, S.D., Hoare, C.A.R., Roscoe, A.W.: A theory of communicating sequential processes. J. ACM 31(3), 560–599 (July 1984).zbMATHMathSciNetGoogle Scholar
  26. R84.
    Hoare, C.A.R., Roscoe, A.W.: Programs as executable predicates. In: Proceedings of the International Conference on Fifth Generation Computer Systems, November 6–9 1984, Tokyo, Japan, pp. 220–228. ICOT (1984).Google Scholar
  27. oa85a.
    Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall (1985). 256 pp., ISBN 0-13-153271-5.zbMATHGoogle Scholar
  28. oa85b.
    Hoare, C.A.R.: Programs are predicates. In: Hoare, C.A.R. Shepherdson, J.C. (eds.), Mathematical Logic and Programming Languages, pp. 141–154. Prentice-Hall (1985).Google Scholar
  29. H86.
    Hoare, C.A.R., He, J.: The weakest prespecification I. Fundamenta Informaticae 9(1), 51–84 (March 1986).zbMATHMathSciNetGoogle Scholar
  30. HS86.
    He, J., Hoare, C.A.R., Sanders, J.W.: Data refinement refined. In Robinet, B., Wilhelm, R. (eds.), ESOP ’86: Proceedings of the European Symposium on Programming, vol. 213 of Lecture Notes in Computer Science. Springer (1986).Google Scholar
  31. H86.
    Roscoe, A.W., Hoare, C.A.R.: Laws of occam programming. Monograph PRG-53,Oxford University Computing Laboratory, Programming Research Group (February 1986).Google Scholar
  32. HH87.
    Hoare, C.A.R., Hayes, I.J., He, J., Morgan, C.C., Roscoe, A.W., Sanders, J.W., Sørensen, I.H., Spivey, J.M., Sufrin, B.A.: The laws of programming. Commun. of the ACM 30(8), 672–687 (August 1987). see Corrigenda in Commun. ACM 30(9), 770. * * * * * * * * * * * * * * * * * * * * *The following is a list of all Hoare’s papers since 1988, complementing the list published in [HJ89].zbMATHGoogle Scholar
  33. G88.
    Hoare, C.A.R., Gordon, M.J.C.: Partial correctness of CMOS switching circuits: An exercise in applied logic. In: LICS, pp. 28–36 (1988).Google Scholar
  34. H88.
    Roscoe, A.W., Hoare, C.A.R.: The laws of occam programming. Theoret. Comput. Sci. 60, 177–229 (1988).zbMATHMathSciNetGoogle Scholar
  35. H89.
    He, J., Hoare, C.A.R.: Categorical semantics for programming languages. In: Mathematical Foundations of Programming Semantics, pp. 402–417 (1989).Google Scholar
  36. J89.
    Hoare, C.A.R., Jones, C.B.: Essays in Computing Science. Prentice Hall International, 1989.Google Scholar
  37. oa89.
    Hoare, C.A.R.: The varieties of programming language. In: TAPSOFT, Vol.1, pages 1–18, 1989.Google Scholar
  38. HL90.
    Bjørner, D., Hoare, C.A.R., Langmaack, H.: VDM ’90, VDM and Z – Formal Methods in Software Development, Third International Symposium of VDM Europe, Kiel, FRG, April 17–21, 1990, Proceedings, vol. 428 of Lecture Notes in Computer Science. Springer (1990).Google Scholar
  39. oa90a.
    Hoare, C.A.R.: Fixed points of increasing functions. Inf. Process. Lett. 34(3), 111–112 (1990).zbMATHMathSciNetGoogle Scholar
  40. oa90b.
    Hoare, C.A.R.: Let’s make models (abstract). In: CONCUR, p. 32 (1990).Google Scholar
  41. oa90c.
    Hoare, C.A.R.: A theory of conjunction and concurrency. In: PARBASE / Architectures, pp. 18–30 (1990).Google Scholar
  42. oa91a.
    Hoare, C.A.R.: A theory for the derivation of combinational CMOS circuit designs. Theoret. Comput. Sci. 90(1), 235–251 (1991).zbMATHMathSciNetGoogle Scholar
  43. oa91b.
    Hoare, C.A.R.: The transputer and occam: A personal story. Concurrency Practice Exp., 3(4), 249–264 (1991).Google Scholar
  44. HH91.
    Martin, C.E., Hoare, C.A.R., He, J.: Pre-adjunctions in order enriched categories. Mathematical Struct. Comput. Sci. 1(2), 141–158 (1991).zbMATHMathSciNetGoogle Scholar
  45. HR91.
    Zhou, Ch., Hoare, C.A.R., Ravn, A.P.: A calculus of durations. Inf. Process. Lett. 40(5), 269–276 (1991).zbMATHMathSciNetGoogle Scholar
  46. G.
    Hoare, C.A.R., Gordon, M.J.C. (eds.), Mechanised Reasoning and Hardware Design. Prentice Hall International Series in Computer Science. ISBN 0-13-572405-8 (1992).Google Scholar
  47. oa92.
    Hoare, C.A.R.: Programs are predicates. In: FGCS, pp. 211–218 (1992).Google Scholar
  48. H92.
    Zhou, C., Hoare, C.A.R.: A model for synchronous switching circuits and its theory of correctness. Formal Methods System Design 1(1), 7–28 (1992).zbMATHGoogle Scholar
  49. H93.
    He, J., Hoare, C.A.R.: From algebra to operational semantics. Inf. Process. Lett. 45(2), 75–80 (1993).zbMATHMathSciNetGoogle Scholar
  50. HS93.
    Hoare, C.A.R., He, J., Sampaio, A.: Normal form approach to compiler design. Acta informatica 30(8), 701–739 (1993).zbMATHMathSciNetGoogle Scholar
  51. oa93.
    Hoare, C.A.R.: Algebra and models. In: SIGSOFT FSE, pp. 1–8 (1993).Google Scholar
  52. HF+94.
    He, J., Hoare, C.A.R., Fränzle, M., Müller-Olm, M., Olderog, E.-R., Schenke, M., Hansen, M.R., Ravn, A.P., Rischel, H.: Provably correct systems. In: FTRTFT, pp. 288–335 (1994).Google Scholar
  53. oa94.
    Hoare, C.A.R.: Editorial. J. Log. Comput. 4(3), 215–216 (1994).Google Scholar
  54. P94.
    Hoare, C.A.R., Page, I.: Hardware and software: The closing gap. In: Programming Languages and System Architectures, pp. 49–68 (1994).Google Scholar
  55. oa95.
    Hoare, C.A.R.: Unification of theories: A challenge for computing science. In: COMPASS/ADT, pp. 49–57 (1995).Google Scholar
  56. KH95.
    Burghard van Karger, B., Hoare, C.A.R.: Sequential calculus. Inf. Process. Lett 53(3), 123–130 (1995).Google Scholar
  57. oa96a.
    Hoare, C.A.R.: How did software get so reliable without proof? In: FME, pp. 1–17 (1996).Google Scholar
  58. oa96b.
    Hoare, C.A.R.: The logic of engineering design. Microprocess. Microprogramm. 41(8-9), 525–539 (1996).Google Scholar
  59. oa96c.
    Hoare, C.A.R.: Mathematical models for computing science. In: NATO ASI DPD, pp. 115–164 (1996).Google Scholar
  60. oa96d.
    Hoare, C.A.R.: The role of formal techniques: Past, current and future or how did software get so reliable without proof? (extended abstract). In: ICSE, pp. 233–234, (1996).Google Scholar
  61. oa96e.
    Hoare, C.A.R.: Unifying theories: A personal statement. ACM Comput. Surv. 28(4es) 46 (1996).Google Scholar
  62. H66.
    Wirth, N., Hoare, C.A.R.: A contribution to the development of ALGOL. Communi. of the ACM 9(6) 413–432 (June 1966).zbMATHGoogle Scholar
  63. H97.
    Hoare, C.A.R., He, J.: Unifying theories for parallel programming. In: Euro-Par, pp. 15–30 (1997).Google Scholar
  64. H98.
    Hoare, C.A.R., He, J.: Unifying Theories of Programming. Prentice Hall (1998).Google Scholar
  65. H99a.
    He, J., Hoare, C.A.R.: Linking theories in probabilistic programming. Inf. Sci. 119, (3-4) 205–218 (1999).zbMATHMathSciNetGoogle Scholar
  66. H99b.
    Hoare, C.A.R., He, J.: A trace model for pointers and objects. In: ECOOP, pp. 1–17 (1999).Google Scholar
  67. oa99a.
    Hoare, C.A.R.: Theories of programming: Top-down and bottom-up and meeting in the middle. In: Correct System Design, pp. 3–28 (1999).Google Scholar
  68. oa99b.
    Hoare, C.A.R.: Theories of programming: Top-down and bottom-up and meeting in the middle. In: World Congress on Formal Methods, pp. 1–27 (1999).Google Scholar
  69. RH99.
    Péyton Jones, S.L., Reid, A., Henderson, F., Hoare, C.A.R., Marlow, S.: A semantics for imprecise exceptions. In: PLDI, pp. 25–36 (1999).Google Scholar
  70. SH99.
    Seres, S., Spivey, M.J., Hoare, C.A.R.: Algebra of logic programming. In: ICLP, pp. 184–199 (1999).Google Scholar
  71. H00.
    He, J., Hoare, C.A.R.: Unifying theories of healthiness condition. In: APSEC, pp. 70–, 2000.Google Scholar
  72. HS00.
    Hoare, C.A.R., He, J., Sampaio, A.: Algebraic derivation of an operational semantics. In: Proof, Language, and Interaction, pp. 77–98 (2000).Google Scholar
  73. oa00a.
    Hoare, C.A.R.: Assertions. In: IFM, pp. 1–2 (2000).Google Scholar
  74. oa00b.
    Hoare, C.A.R.: A hard act to follow. Higher-Order and Symbolic Comput 13(1/2), 71–72 (2000).zbMATHGoogle Scholar
  75. oa00c.
    Hoare, C.A.R.: Legacy code. In: ICFEM, p. 75 (2000).Google Scholar
  76. oa01a.
    Hoare, C.A.R.: Growing use of assertions. In: TOOLS (38), p. 3 (2001).Google Scholar
  77. oa01b.
    Hoare, C.A.R.: Legacy. Inf. Process. Lett., 77(2-4):123–129, 2001.MathSciNetGoogle Scholar
  78. FG+02.
    Boyer, R.S., Feijen, W.H.J., Gries, D., Hoare, C.A.R., Misra, J, Moore, J., Richards, H.: In: memoriam: Edsger w. Dijkstra 1930–2002. Commun. ACM 45(10):21–22 (2002).Google Scholar
  79. oa02a.
    Hoare, C.A.R.: Assertions in modern software engineering practice. In: COMPSAC, pp. 459–462 (2002).Google Scholar
  80. oa02b.
    Hoare, C.A.R.: Assertions in programming: From scientific theory to engineering practice. In: Soft-Ware, pp. 350–351 (2002).Google Scholar
  81. oa02c.
    Hoare, C.A.R.: Towards the verifying compiler. In: 10th Anniversary Colloquium of UNU/IIST, pp. 151–160 (2002).Google Scholar
  82. oa03a.
    Hoare, C.A.R.: Assertions: A personal perspective. IEEE Ann. History Comput. 25(2), 14–25 (2003).MathSciNetGoogle Scholar
  83. oa03f.
    Hoare, C.A.R.: The verifying compiler: A grand challenge for computing research. J. ACM 50(1), 63–69 (2003). (This paper also appeared in a number of other publications).Google Scholar
  84. HF04.
    Butler, M.J., Hoare, C.A.R., Ferreira, C.: A trace semantics for long-running transactions. In: 25 Years Communicating Sequential Processes, pp. 133–150 (2004).Google Scholar
  85. HRR04.
    Fournet, C., Hoare, C.A.R., Rajamani, S.K., Rehof, J.: Stuck-free conformance. In: CAV, pp. 242–254 (2004).Google Scholar
  86. oa04a.
    Hoare, C.A.R.: Process algebra: A unifying approach. In: 25 Years Communicating Sequential Processes, pp. 36–60 (2004).Google Scholar
  87. Hoare, C.A.R.: Towards the verifying compiler. In: Essays in Memory of Ole-Johan Dahl, pp. 124–136 (2004).Google Scholar
  88. BF05.
    Bruni, R., Butler, M.J., Ferreira, C., Hoare, C.A.R., Melgratti, H.C., Montanari, U.: Comparing two approaches to compensable flow composition. In CONCUR, pp. 383–397 (2005).Google Scholar
  89. H05.
    He, J., Hoare, C.A.R.: Linking theories of concurrency. In: ICTAC, pp. 303–317 (2005).Google Scholar
  90. M05a.
    Hoare, C.A.R., Milner, R.: Grand challenges for computing research. Comput. J. 48(1), 49–52 (2005).Google Scholar
  91. M05b.
    Hoare, C.A.R., Misra, J.: Verified software: Theories, tools, experiments vision of a grand challenge project. In: VSTTE, pp. 1–18 (2005).Google Scholar
  92. HH06.
    Beckert, B., Hoare, C.A.R., Hähnle, R., Smith, D.R., Green, C., Ranise, S., Tinelli, C., Ball, T., Rajamani, S.K.: Intelligent systems and formal methods in software engineering. IEEE Intelligent Systems 21(6), 71–81 (2006).Google Scholar
  93. HW06.
    Bicarregui, J., Hoare, C.A.R., Woodcock, J.C.P.: The verified software repository: A step towards the verifying compiler. Formal Asp. Comput. 18(2), 143–151(2006).zbMATHGoogle Scholar
  94. H06.
    He, J., Hoare, C.A.R.: CSP is a retract of CCS. In: UTP, pp. 38–62 (2006). TCS 411 (issue 11--13), pp. 1311--1337, 2010doi:10.1016/j.tcs.2009.12.012Google Scholar
  95. oa06b.
    Hoare, C.A.R.: The ideal of verified software. In: CAV pp. 5–16 (2006).Google Scholar
  96. oa06c.
    Hoare, C.A.R.: Why ever CSP? Electr. Notes Theoret. Comput. Sci. 162, 209–215 (2006).Google Scholar
  97. HHS06.
    Vafeiadis, V., Herlihy, M., Hoare, C.A.R., Shapiro, M.: Proving correctness of highly.concurrent linearisable objects. In: PPOPP, pp. 129–136 (2006).Google Scholar
  98. oa07a.
    Hoare, C.A.R.: Fine-grain concurrency. In: CPA, pp. 1–19 (2007).Google Scholar
  99. oa07b.
    Hoare, C.A.R.: The ideal of program correctness: Third Computer Journal lecture. Comput. J. 50(3), 254–260 (2007).MathSciNetGoogle Scholar
  100. oa07c.
    Hoare, C.A.R.: Science and engineering: A collusion of cultures. In: DSN, pp. 2–9 (2007).Google Scholar
  101. O08.
    Hoare, C.A.R., O’Hearn, P.W.: Separation logic semantics for communicating processes. Electr. Notes Theoret. Comput. Sci. 212:3–25 (2008).Google Scholar
  102. oa08a.
    Hoare, C.A.R.: Keynote: A vision for the science of computing. In: BCS Int. Acad. Conf., pp. 1–29 (2008).Google Scholar
  103. oa08b.
    Hoare, C.A.R.: Verification of fine-grain concurrent programs. Electr. Notes Theoret. Comput. Sci. 209, 165–171 (2008).MathSciNetGoogle Scholar
  104. oa08c.
    Hoare, C.A.R.: Verified software: Theories, tools, experiments. In: ICECCS, p. 3 (2008).Google Scholar
  105. M09.
    Hoare, C.A.R., Misra, J.: Preface to special issue on software verification. ACM Comput. Surv. 41(4) (2009).Google Scholar
  106. MLS09.
    Hoare, C.A.R., Misra, J., Leavens, G.T., Shankar, N.: The verified software initiative: A manifesto. ACM Comput. Surv. 41(4), (2009).Google Scholar
  107. MSW09a.
    Hoare, C.A.R., Mller, B., Struth, G., Wehrman, I.: Concurrent Kleene algebra. In: CONCUR, pp. 399–414 (2009).Google Scholar
  108. MSW09b.
    Hoare, C.A.R., Möller, B., Struth, G., Wehrman, I.: Foundations of concurrent Kleene algebra. In: RelMiCS, pp. 166–186 (2009).Google Scholar
  109. oa09.
    Hoare, C.A.R.: Viewpoint – retrospective: an axiomatic basis for computer programming. Commun. ACM 52(10), 30–32 (2009).Google Scholar
  110. HO09.
    Wehrman, I., Hoare, C.A.R., O’Hearn, P.W.: Graphical models of separation logic. Inf. Process. Lett. 109(17), 1001–1004 (2009).zbMATHMathSciNetGoogle Scholar
  111. 111.
    Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press (1996).zbMATHGoogle Scholar
  112. 112.
    Apt, K.R.: Ten years of Hoare’s logic: A survey – part I. ACM Trans. Programm. Languages Systems 3, 431–483 (1981).zbMATHGoogle Scholar
  113. 113.
    Apt, K.R.: Ten years of Hoare’s logic: A survey – part II: Nondeterminism. Theoret. Comput. Sci., 28, 83–109 (1984).zbMATHMathSciNetGoogle Scholar
  114. 114.
    Bekič, H., Bjørner, D., Henhapl, W., Jones, C.B., Lucas, P.: A formal definition of a PL/I subset. Technical Report 25.139, IBM Laboratory Vienna (December 1974).Google Scholar
  115. 115.
    Bjørner, D., Jones, C.B. (eds.), The Vienna Development Method: The Meta-Language, vol. 61 of Lecture Notes in Computer Science. Springer (1978).Google Scholar
  116. 116.
    Brookes, S.D., Roscoe, A.W.: An improved failures model for communicating processes (1985).Google Scholar
  117. 117.
    Brookes, S.D.: A mathematical theory of communicating processes. PhD thesis, University of Oxford (1983).Google Scholar
  118. 118.
    Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall (1976).zbMATHGoogle Scholar
  119. 119.
    De Nicola, R., Hennessy, M.C.B.: Testing equivalences for processes (1983).Google Scholar
  120. 0.
    Floyd, R.W.: Assigning meanings to programs. In: Proc. Symp. in Applied Mathematics, Vol.19: Mathematical Aspects of Computer Science, pp. 19–32. American Mathematical Society (1967).Google Scholar
  121. 1.
    Goldsmith, M.H., Roscoe, A.W.: Transformation of occam programs. In: Design and Application of Parallel Digital Processors, 1988, pp. 180–188 (1988).Google Scholar
  122. 2.
    Goldstine, H.H., von Neumann, J.: Planning and coding of problems for an electronic computing instrument, 1947. Part II, Vol. 1 of a Report prepared for U.S. Army Ord. Dept.; republished as pp. 80–151 of [34].Google Scholar
  123. 3.
    Holt, R.C., Matthews, P.A., J.A, J.A., Cordy, J.R.: The Turing Programming Language: Design and Defintion. Prentice Hall International (1988).Google Scholar
  124. 4.
    Jones, C.B.: Software Development: A Rigorous Approach. Prentice Hall International (1980).zbMATHGoogle Scholar
  125. 5.
    Jones, C.B.: The early search for tractable ways of reasoning about programs. IEEE, Annals of the History of Comput. 25(2), 26–49 (2003).Google Scholar
  126. 6.
    Jones, C.B.: Splitting atoms safely. Theoret. Comput. Sci. 357, 109–119 (2007).Google Scholar
  127. 7.
    King, J.C.: A Program Verifier. PhD thesis, Department of Computer Science, Carnegie-Mellon University (1969).Google Scholar
  128. 8.
    Lauer, P.E.: Consistent Formal Theories of the Semantics of Programming Languages. PhD thesis, Queen’s University of Belfast, 1971. Printed as TR 25.121, IBM Lab. Vienna.Google Scholar
  129. 9.
    INMOS Ltd. Occam Programming Manual. Prentice Hall (1984).Google Scholar
  130. 0.
    Lucas, P., Walk, K.: On the Formal Description of PL/I, vol. 6, Part 3 of Annual Review in Automatic Programming. Pergamon Press (1969).Google Scholar
  131. 1.
    McCarthy, J.: A basis for a mathematical theory for computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland (1963). (A slightly extended and corrected version of a talk given at the May 1961 Western Joint Computer Conference).Google Scholar
  132. 2.
    McCarthy, J.: A formal description of a subset of ALGOL. In: [33], pp. 1–12 (1966).Google Scholar
  133. 3.
    Milner, R.: Processes: a mathematical model of computing agents. In: Logic Colloquium.73. North Holland (1973).Google Scholar
  134. 4.
    Milner. R.: Flowgraphs and flow algebras. J. ACM 26(4), 794–818 (1979).zbMATHMathSciNetGoogle Scholar
  135. 5.
    Milner, R.: A Calculus of Communicating Systems. Springer, New York, Inc. Secaucus, NJ, USA (1982).Google Scholar
  136. 6.
    Plotkin, G.D.: A powerdomain construction. SIAM. Comput. 5, 452 (1976).zbMATHMathSciNetGoogle Scholar
  137. 7.
    Reilly, E.D.: Milestones in Computer Science and Information Technology. Greenwood Pub Group (2003).Google Scholar
  138. 8.
    Roscoe, A.W.: A mathematical theory of communicating processes. PhD thesis, University of Oxford (1982).Google Scholar
  139. 9.
    Roscoe, A.W.: Denotational Semantics for occam (1985).Google Scholar
  140. 0.
    Roscoe, A.W.: Occam in the specification and verification of microprocessors. Philosophical Transactions: Physical Sciences and Engineering, pp. 137–151 (1992).Google Scholar
  141. 1.
    Roscoe, A.W.: The Theory and Practice of Concurrency. Prentice-Hall (1997).Google Scholar
  142. 2.
    Roscoe, A.W.: Understanding Concurrent Systems. Springer (2010).zbMATHGoogle Scholar
  143. 3.
    Steel, T.B.: Formal Language Description Languages for Computer Programming. North-Holland (1966).Google Scholar
  144. 4.
    Taub, A.H. (ed.), John von Neumann: Collected Works, vol. V: Design of Computers, Theory of Automata and Numerical Analysis. Pergamon Press (1963).Google Scholar
  145. 5.
    Turing. A.M.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, pp. 67–69. University Mathematical Laboratory, Cambridge (June 1949).Google Scholar
  146. 6.
    van Wijngaarden, A.: Numerical analysis as an independent science. BIT 6:66–81 (1966). (Text of 1964 talk).Google Scholar

Copyright information

© Springer London 2010

Authors and Affiliations

  1. 1.School of Computing ScienceNewcastle UniversityNewcastleUK
  2. 2.Oxford University Computing LaboratoryOxfordUK

Personalised recommendations