Unifying Semantics for Concurrent Programming
Four well-known methods for presenting semantics of a programming language are: denotational, deductive, operational, and algebraic. This essay presents algebraic laws for the structural features of a class of imperative programming languages which provide both sequential and concurrent composition; and it illustrates the way in which the laws are consistent with the other three semantic presentations of the same language. The exposition combines simplicity with generality by postponing consideration of the possibly more complex basic commands of particular programming languages. The proofs are given only as hints, but they are easily reconstructed, even with the aid of a machine.
Unable to display preview. Download preview PDF.
- 1.Stoy, J.E.: Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press (1977)Google Scholar
- 4.Plotkin, G.D.: A structural approach to operational semantics. Technical Report DAIMI FN-19, Aarhus University (1981)Google Scholar
- 6.Hennessy, M.: Algebraic Theory of Processes. MIT Press (1988)Google Scholar
- 7.Baeten, J., Basten, T., Reniers, M.A.: Process Algebra: Equational Theories of Communicating Processes. Cambridge Tracts in Theoretical Computer Science, vol. 50. Cambridge University Press (2009)Google Scholar
- 9.Back, R.J., Wright, J.: Refinement calculus: a systematic introduction. Springer (1998)Google Scholar
- 10.Morgan, C.: Programming from specifications. Prentice-Hall, Inc. (1990)Google Scholar
- 13.Hoare, C.A.R., Jifeng, H.: Unifying Theories of Programming. Prentice Hall (1998)Google Scholar
- 15.Hoare, T., Wickerson, J.: Unifying models of data flow. In: Software and Systems Safety - Specification and Verification, pp. 211–230 (2011)Google Scholar