The laws of programming unify process calculi

Abstract We survey the well-known algebraic laws of sequential programming, and propose some less familiar laws for concurrent programming. On the basis of these laws, we derive the rules of a number of classical programming and process calculi, for example, those due to Hoare, Milner, and Kahn. The algebraic laws are simpler than each of the calculi derived from it, and they are stronger than all the calculi put together. Conversely, most of the laws are derivable from one or more of the calculi. This suggests that the laws are useful as a presentation of program semantics, and correspond to a widely held common understanding of the meaning of programs. For further evidence, Appendix A describes a realistic and generic model of program behaviour, which has been proved to satisfy the laws.

[1]  Hongseok Yang,et al.  Views: compositional reasoning for concurrent programs , 2013, POPL.

[2]  Flemming Nielson,et al.  Semantics with applications - a formal introduction , 1992, Wiley professional computing.

[3]  Dexter Kozen On Hoare logic and Kleene algebra with tests , 2000, TOCL.

[4]  Peter W. O'Hearn,et al.  Graphical models of separation logic , 2009, Inf. Process. Lett..

[6]  Peter W. O'Hearn,et al.  Resources, concurrency, and local reasoning , 2007 .

[7]  Georg Struth,et al.  Concurrent Kleene Algebra , 2009, CONCUR.

[8]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[9]  S C Kleene,et al.  Representation of Events in Nerve Nets and Finite Automata , 1951 .

[10]  Cliff B. Jones,et al.  Developing methods for computer programs including a notion of interference , 1981 .

[11]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[12]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[13]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[14]  C. A. R. Hoare,et al.  Algebra Unifies Operational Calculi , 2012, UTP.

[15]  Dexter Kozen A Completeness Theorem for Kleene Algebras and the Algebra of Regular Events , 1994, Inf. Comput..

[16]  C. A. R. Hoare,et al.  The Laws of Programming Unify Process Calculi , 2012, MPC.

[17]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[18]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[19]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[20]  C. A. R. Hoare,et al.  Unifying Models of Data Flow , 2011, Software and Systems Safety - Specification and Verification.

[21]  Jay L. Gischer,et al.  The Equational Theory of Pomsets , 1988, Theor. Comput. Sci..

[22]  Patrice Godefroid,et al.  SAGE: Whitebox Fuzzing for Security Testing , 2012, ACM Queue.

[23]  C. A. R. Hoare,et al.  Laws of programming , 1987, CACM.

[24]  Wan Fokkink,et al.  Introduction to Process Algebra , 1999, Texts in Theoretical Computer Science. An EATCS Series.

[25]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[26]  Alfred Tarski,et al.  Relational selves as self-affirmational resources , 2008 .

[27]  Ralph-Johan Back,et al.  Refinement Calculus: A Systematic Introduction , 1998 .

[28]  C. A. R. Hoare,et al.  In praise of algebra , 2012, Formal Aspects of Computing.