Formal Aspects of Computing

, Volume 23, Issue 2, pp 221–238 | Cite as

VDM semantics of programming languages: combinators and monads

Original Article

Abstract

The Vienna Development Method (VDM) was developed in the early 1970s as a variant of denotational semantics. VDM descriptions of programming languages differ from the original Scott–Strachey style by making extensive use of combinators which have a fixed operational interpretation. After recalling the main features of denotational semantics and the Scott–Strachey style, we examine the combinators of the VDM specification language, and relate them to monads, which were introduced more than 15 years later. We also suggest that use of further monadic combinators in VDM could be beneficial. Finally, we provide an overview of published VDM semantic descriptions of major programming languages.

Keywords

Programming language semantics Denotational semantics VDM Combinators Monads 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. AH82.
    Andrews DJ, Henhapl W (1982) Pascal. In: Formal specification and software development, ch 7. Computer science series. Prentice-Hall Int., Englewood Cliffs, pp 175–252Google Scholar
  2. AR87.
    Astesiano E, Reggio G (1987) Direct semantics of concurrent languages in the SMoLCS approach. IBM J Res Dev 31(5): 512–534MATHCrossRefGoogle Scholar
  3. BBG+63.
    Backus JW, Bauer FL, Green J, Katz C, McCarthy J, Perlis AJ, Rutishauser H, Samelson K, Vauquois B, Wegstein JH, van Wijngaarden A, Woodger M (1963) Revised report on the algorithmic language ALGOL 60. Commun ACM 6(1): 1–17CrossRefGoogle Scholar
  4. BBH+84.
    Bekič H, Bjørner D, Henhapl W, Jones CB, Lucas P (1984) On the formal definition of a PL/I subset (selected parts). In: Programming languages and their definition—Hans Bekič (1936–1982). LNCS, vol 177. Springer, Berlin, pp 107–155. Available at http://homepages.cs.ncl.ac.uk/cliff.jones/ftp-stuff/LNCS177-Bekic/. Full version published as Technical Report 25.139, IBM Lab. Vienna, Dec. 1974; available at http://homepages.cs.ncl.ac.uk/cliff.jones/ftp-stuff/TR25139/
  5. BJ78.
    Bjørner, D, Jones, CB (eds) (1978) The Vienna Development Method: the meta-language. LNCS, vol61. Springer, BerlinGoogle Scholar
  6. BJ82.
    Bjørner D, Jones CB (1982) Formal specification and software development. Computer science series. Prentice-Hall Int., Englewood Cliffs. Available at http://homepages.cs.ncl.ac.uk/cliff.jones/ftp-stuff/BjornerJones1982/
  7. BNK87.
    Nielsen CB, Karlsen EW (1987) The draft formal definition of Ada, the dynamic semantics definition, vols 1–3. Technical report, Dansk Datamatik Center, Lyngby, DenmarkGoogle Scholar
  8. BO80.
    Bjørner D, Oest ON (1980) Towards a formal description of Ada. LNCS, vol 98. Springer, BerlinGoogle Scholar
  9. BSP87.
    Botta N, Pedersen JS (1987) The draft formal definition of Ada, the static semantics definition, vols 1–4. Technical report, Dansk Datamatik Center, Lyngby, DenmarkGoogle Scholar
  10. CO84.
    Clemmensen GB, Oest ON (1984) Formal specification and development of an Ada compiler—a VDM case study. In: ICSE ’84: Proceedings of the 7th international conference on software engineering. IEEE Press, USA, pp 430–440Google Scholar
  11. FM09.
    Findler RB, Matthews J (2009) Revised6 report on the algorithmic language Scheme, App. A: formal semantics. J Funct Program 19(S1): 125–145MathSciNetGoogle Scholar
  12. GMRZ86.
    Giovini A, Mazzanti F, Reggio G, Zucca E (1986) The draft formal definition of Ada, the dynamic semantics definition, vol 4. Technical report, Dansk Datamatik Center, Lyngby, DenmarkGoogle Scholar
  13. Gor79.
    Gordon MJC (1979) The denotational description of programming languages: an introduction. Springer, BerlinMATHGoogle Scholar
  14. HH98.
    Hoare CAR, He J (1998) Unifying theories of programming. Prentice-Hall, Englewood CliffsGoogle Scholar
  15. HJ82.
    Henhapl W, Jones CB (1982) ALGOL 60. In: Formal specification and software development, ch 6. Computer science series. Prentice-Hall Int., Englewood Cliffs, pp 141–173Google Scholar
  16. Jon82.
    Jones CB (1982) More on exception mechanisms. In: Formal specification and software development, ch 5. Computer science series. Prentice-Hall Int., Englewood Cliffs, pp 125–140Google Scholar
  17. Jon01.
    Jones CB (2001) The transition from VDL to VDM. J UCS 7(8): 631–640MATHGoogle Scholar
  18. Lan65.
    Landin PJ (1965) Correspondence between ALGOL 60 and Church’s lambda-notation: Part I. Commun ACM 8(2): 89–101MathSciNetCrossRefGoogle Scholar
  19. LH96.
    Liang S, Hudak P (1996) Modular denotational semantics for compiler construction. In: ESOP’96. LNCS, vol 1058. Springer, Berlin, pp 219–234Google Scholar
  20. Man76.
    Manes EG (1976) Algebraic theories. Graduate texts in mathematics, vol 26. Springer, BerlinGoogle Scholar
  21. ML71.
    Mac Lane S (1971) Categories for the working mathematician. Graduate texts in mathematics, vol 5. Springer, BerlinGoogle Scholar
  22. Mog89.
    Moggi E (1989) An abstract view of programming languages. Technical Report ECS-LFCS-90-113, Edinburgh UniversityGoogle Scholar
  23. Mog91.
    Moggi E (1991) Notions of computation and monads. Inf Comput 93(1): 55–92MathSciNetMATHCrossRefGoogle Scholar
  24. Mos74.
    Mosses PD (1974) The mathematical semantics of Algol60. Technical Monograph PRG-12, Oxford Univ. Comp. LabGoogle Scholar
  25. Mos77.
    Mosses PD (1977) Making denotational semantics less concrete. In: Proceedings of the international workshop on semantics of programming languages, Bad Honnef, Bericht 41. Abteilung Informatik, Universität Dortmund, pp 102–109Google Scholar
  26. Mos90.
    Mosses PD (1990) Denotational semantics. In: van Leeuwen J (ed) Handbook of theoretical computer science, vol B, ch 11. Elsevier Science Publishers, Amsterdam and MIT Press, CambridgeGoogle Scholar
  27. Mos07.
    Mosses PD (2007) VDM semantics of programming languages: combinators and monads. In: Formal methods and hybrid real-time systems. LNCS, vol 4700. Springer, Berlin, pp 483–503Google Scholar
  28. PL92.
    Plat N, Larsen PG (1992) An overview of the ISO/VDM-SL standard. SIGPLAN Not 27(8): 76–82CrossRefGoogle Scholar
  29. PP04.
    Plotkin GD, Power AJ (2004) Computational effects and operations: an overview. In: Proceedings of workshop on domains VI. Electr. Notes Theor. Comput. Sci. vol 73. Elsevier, Amsterdam, pp 149–163Google Scholar
  30. PS96.
    Pronk C, Schönhacker M (1996) ISO/IEC 105141, the standard for Modula-2: process aspects. SIGPLAN Not 31(8): 74–83CrossRefGoogle Scholar
  31. PS03.
    Pronk C, Schönhacker M (2003) Formal definition of programming language standards. SIGPLAN Not 38(8): 20–21CrossRefGoogle Scholar
  32. Sch86.
    Schmidt DA (1986) Denotational semantics: a methodology for language development. Allyn and Bacon. Available at http://people.cis.ksu.edu/~schmidt/text/densem.html
  33. Sco70.
    Scott DS (1970) Outline of a mathematical theory of computation. In: Proceedings of the fourth annual princeton conference on information sciences and systems, pp 169–176. Princeton University, 1970. Superseded by Technical Monograph PRG-2, Oxford Univ. Comp. LabGoogle Scholar
  34. SS71.
    Scott DS, Strachey C (1971) Towards a mathematical semantics for computer languages. In: Proceedings of symposium on computers and automata. Microwave Research Inst. Symposia, vol 21, pp 19–46. Polytechnic Institute of Brooklyn, 1971. Also Technical Monograph PRG-6, Oxford Univ. Comp. LabGoogle Scholar
  35. Sto77.
    Stoy JE (1977) Denotational semantics: the Scott–Strachey approach to programming language theory. The MIT Press Series in Computer Science, vol 1. The MIT Press, CambridgeGoogle Scholar
  36. Str66.
    Strachey C (1966) Towards a formal semantics. In: Steel TB Jr (ed) Formal language description languages for computer programming, Proceedings of the IFIP working conference, Vienna, 1964. North-Holland, Amsterdam, pp 198–220Google Scholar
  37. Str00.
    Strachey C (2000) Fundamental concepts in programming languages. Higher-Order and Symbolic Computation, 13(1/2):11–49. Originally lecture notes, NATO Copenhagen Summer School, 1967Google Scholar
  38. SW00.
    Strachey C, Wadsworth CP (1974) Continuations: a mathematical semantics for handling full jumps. Higher Order Symbol. Comput., 13(1–2):135–152, 2000. Originally published as Technical Monograph PRG-11, Oxford Univ. Comput. LabGoogle Scholar
  39. Ten76.
    Tennent RD (1976) The denotational semantics of programming languages. Commun ACM 19(8): 437–453MathSciNetMATHCrossRefGoogle Scholar
  40. Ten77.
    Tennent RD (1977) A denotational definition of the programming language Pascal. Technical Report 77–47, Queen’s University, Kingston, OntGoogle Scholar
  41. Weg72.
    Wegner P (1972) The Vienna Definition Language. ACM Comput Surv 4(1): 5–63MathSciNetMATHCrossRefGoogle Scholar
  42. WH97.
    Wansbrough K, Hamer J (1997) A modular monadic action semantics. In: DSL’97. USENIXGoogle Scholar

Copyright information

© British Computer Society 2010

Authors and Affiliations

  1. 1.Department of Computer ScienceSwansea UniversitySwanseaUK

Personalised recommendations