Unifying theories of programming

Professional practice in a mature engineering discipline is based on relevant scientific theories, usually expressed in the language of mathematics. A mathematical theory of programming aims to provide a similar basis for specification, design and implementation of computer programs. The theory can be presented in a variety of styles, including 1. Denotational, relating a program to a specification of its observable properties and behaviour. 2. Algebraic, providing equations and inequations for comparison, transformation and optimisation of designs and programs. 3. Operational, describing individual steps of a possible mechanical implementation. This paper presents simple theories of sequential non-deterministic programming in each of these three styles; by deriving each presentation from its predecessor in a cyclic fashion, mutual consistency is assured.

[1]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

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

[3]  C. A. R. Hoare,et al.  A Theory of Communicating Sequential Processes , 1984, JACM.

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

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

[6]  Eric C. R. Hehner,et al.  Predicative programming Part I , 1984, CACM.

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

[8]  A. Tarski A LATTICE-THEORETICAL FIXPOINT THEOREM AND ITS APPLICATIONS , 1955 .

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

[10]  Jan A. Bergstra,et al.  Algebra of Communicating Processes with Abstraction , 1985, Theor. Comput. Sci..

[11]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.