Generic Models of the Laws of Programming

  • Tony Hoare
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8051)


The laws of programming are a collection of judgments about the equality and ordering of computer programs. A model of the laws is a mathematical description of the execution of programs, where the model has been proved to satisfy the laws. A generic model is one that has parameters that can be adjusted to the properties of a range of different programming languages and their differing implementations and differing applications. In this way, a generic model serves as the basis of a unifying theory of programming.


Operational Semantic Sequential Composition Concurrent Programming Test Case Generator Communicate Sequential Process 
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.
    Roscoe, A.W.: Laws of occam programming, Tech Mon PRG-53. Oxford University (1986)Google Scholar
  2. 2.
    Tarski, A.: On the Calculus of Relations. J. Symbolic Logic 6(3), 73–89 (1941)MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Hoare, T.: Unifying Semantics for Concurrent Programming (to appear, 2013)Google Scholar
  4. 4.
    Brookes, S.D., Hoare, C.A.R., Roscoe, A.W.: A Theory of Communicating Sequential Processes. JACM 31, 560–599 (1984)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1976)zbMATHGoogle Scholar
  6. 6.
    Pratt, V.: The Pomset Model of Parallel Processses: Unifying the Temporal and the Spatial. Stanford University, STAN-CS-85-1049 (January 1985)Google Scholar
  7. 7.
    Hoare, C.A.R.: An Axiomatic Basis for Computer Programming. Comm. ACM 12(10), 576–580 (1969)CrossRefzbMATHGoogle Scholar
  8. 8.
    Hoare, C.A.R., Hayes, I.J., He, J., Morgan, C., Roscoe, A.W., Sanders, J.W., Sørensen, I.H., Spivey, J.M., Sufrin, B.: Laws of Programming. Comm. ACM 30(8), 672–687 (1987)MathSciNetCrossRefzbMATHGoogle Scholar
  9. 9.
    Hoare, C.A.R., He, J.: Unifying Theories of Programming. Prentice Hall (1998)Google Scholar
  10. 10.
    O’Hearn, P.W.: Resources, Concurrency and Local Reasoning. In: Gardner, P., Yoshida, N. (eds.) CONCUR 2004. LNCS, vol. 3170, pp. 49–67. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  11. 11.
    Plotkin, G.D.: A Structural Approach to Operational Semantics. DAIMI FN-16 Computer Science Department Aarhus University (1981)Google Scholar
  12. 12.
    Milner, R.: A Calculus of Communication Systems. LNCS, vol. 92. Springer, Heidelberg (1980)CrossRefzbMATHGoogle Scholar
  13. 13.
    Hennessy, M.: Algebraic Theory of Processes. MIT Press (1988)Google Scholar
  14. 14.
    Baeten, J.C.M., Basten, T., Reniers, M.A.: Process Algebra: Equational Theories of Communicating Processes. Cambridge University Press (2010)Google Scholar
  15. 15.
    Wehrman, I., Hoare, C.A.R., O’Hearn, P.: Graphical models of separation logic. IPL 109(17), 1001–1004 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  16. 16.
    Hoare, T., Wickerson, J.: Unifying Models of Data Flow. Software and Systems Safety, pp. 211–230. IOS Press (2011)Google Scholar
  17. 17.
    Hoare, C.A.R., Hussain, A., Möller, B., O’Hearn, P.W., Petersen, R.L., Struth, G.: On Locality and the Exchange Law for Concurrent Processes. In: Katoen, J.-P., König, B. (eds.) CONCUR 2011. LNCS, vol. 6901, pp. 250–264. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  18. 18.
    Hoare, T., Moeller, B., Struth, G., Wehrman, I.: Concurrent Kleene Algebra and its Foundations. J. Log. Algebr. Program. 80(6), 266–296 (2011)MathSciNetCrossRefzbMATHGoogle Scholar
  19. 19.
    Hoare, T., van Staden, S.: The Laws of Programming Unify Process Calculi. In: Gibbons, J., Nogueira, P. (eds.) MPC 2012. LNCS, vol. 7342, pp. 7–22. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  20. 20.
    van Staden, S., Hoare, T.: Algebra Unifies Operational Calculi. In: Wolff, B., Gaudel, M.-C., Feliachi, A. (eds.) UTP 2012. LNCS, vol. 7681, pp. 88–104. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  21. 21.
    Back, R.-J., von Wright, J.: Refinement Calculus. Springer Graduate Texts in Computer Science (1998)Google Scholar
  22. 22.
    Morgan, C.: Programming from Specifications. Prentice Hall International (1990)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Tony Hoare
    • 1
  1. 1.Microsoft ResearchCambridgeUnited Kingdom

Personalised recommendations