On the action semantics of concurrent programming languages
Action semantics is a framework for semantic description of programming languages. In this framework, actions are semantic entities, used to represent the potential behaviour of programs—also the contributions that parts of programs make to such behaviour. The notation for expressing actions, called action notation, is combinator-based. It is used in much the same way that lambda-notation is used in denotational semantics. However, the essence of action notation is operational, rather than mathematical, and its meaning is formally defined by a structural operational semantics together with a bisimulation equivalence.
This paper briefly motivates action semantics, and explains the basic concepts. It then illustrates the use of the framework by giving an action semantic description of a small example language. This language includes a simple form of concurrency: tasks that may synchronize by means of rendezvous. The paper also discusses the operational semantics of action notation, focusing on the primitive actions that represent asynchronous message transmission and process initiation.
Keywordssemantics action semantics action notation concurrency synchronization asynchrony distributed processing
Unable to display preview. Download preview PDF.
- E. Astesiano. Inductive and operational semantics. In E. J. Neuhold and M. Paul, editors, Formal Description of Programming Concepts, IFIP State-of-the-Art Report, pages 51–136. Springer-Verlag, 1991.Google Scholar
- D. Goodman. The Complete HyperCard Handbook. Bantam, 1987.Google Scholar
- C. A. R. Hoare. Communicating sequential processes. Commun. ACM, 21:666–677, 1978.Google Scholar
- C. A. R. Hoare. Communicating Sequential Processes. Prentice-Hall, 1985.Google Scholar
- G. Kahn. Natural semantics. In STACS'87, Proc. Symp. on Theoretical Aspects of Computer Science, number 247 in Lecture Notes in Computer Science. Springer-Verlag, 1987.Google Scholar
- P. Krishnan and P. D. Mosses. Specifying asynchronous transfer of control. In RTFT'92, Proc. Symp. on Formal Techniques in Real-Time and Fault-Tolerant Systems, Delft, number 571 in Lecture Notes in Computer Science. Springer-Verlag, 1992.Google Scholar
- R. Milner. A Calculus of Communicating Systems. Number 92 in Lecture Notes in Computer Science. Springer-Verlag, 1980.Google Scholar
- R. Milner. Communication and Concurrency. Prentice-Hall, 1989.Google Scholar
- R. Milner. Operational and algebraic semantics of concurrent processes. In J.van Leeuwen, A. Meyer, M. Nivat, M. Paterson, and D. Perrin, editors, Handbook of Theoretical Computer Science, volume B, chapter 19. Elsevier Science Publishers, Amsterdam; and MIT Press, 1990.Google Scholar
- P. D. Mosses. Denotational semantics. In J. van Leeuwen, A. Meyer, M. Nivat, M. Paterson, and D. Perrin, editors, Handbook of Theoretical Computer Science, volume B, chapter 11. Elsevier Science Publishers, Amsterdam; and MIT Press, 1990.Google Scholar
- P. D. Mosses. A practical introduction to denotational semantics. In E. J. Neuhold and M. Paul, editors, Formal Description of Programming Concepts, IFIP State-of-the-Art Report, pages 1–49. Springer-Verlag, 1991.Google Scholar
- P. D. Mosses. Action Semantics. Number 26 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.Google Scholar
- G. D. Plotkin. A structural approach to operational semantics. Lecture Notes DAIMI FN-19, Computer Science Dept., Aarhus University, 1981. Now available only from University of Edinburgh.Google Scholar
- D. A. Watt. Programming Language Syntax and Semantics. Prentice-Hall, 1991.Google Scholar