Formal definition in program development

  • C. B. Jones
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 23)


The intent of the current paper is to show how a large problem like compiler development can be divided in a way which provides a structure for arguments of correctness. Although mechanically checked proofs are not envisaged, the use of formal notation is recommended so that the basis for correctness arguments exists.

The paper reviews three topics: the first two are relevant particularly to the development of compilers: the third is more general. The subject of the first section is the style of language definition to be used as a basis for development. Beginning with a small language, possible ways of describing added features are discussed.

The selection criterion for definition techniques is their usability in developing a specification of the compiling process: it is this development which is the subject of the second section.

The third section briefly reviews the process of "Formal Development" which has been described more fully elsewhere.


Abnormal Return Phrase Structure Formal Development Abstract Syntax Source Language 


  1. [1]
    C.D.Allen, D.N.Chapman and C.B.Jones, "A Formal Definition of Algol 60", IBM Hursley Technical Report, TR 12.105 August 1972.Google Scholar
  2. [2]
    H.Bekie and K.Walk, "Formalisation of Storage Properties" in "Symposium on Semantics of Algorithmic Languages" (Ed.) E.Engeler, Springer-Verlag Lecture Notes in Mathematics No. 188, October 1970.Google Scholar
  3. [3]
    H.Bekie, Presentation on "Semantics of Actions" given at Newcastle University, September 1974.Google Scholar
  4. [4]
    H.Bekic et al "A Formal Definition of PL/I" to be printed as a Technical Report of IBM Laboratory Vienna.Google Scholar
  5. [5]
    A.Hansal, "Software Devices for Processing Graphs Using PL/I Compile-time Facilities", Info Proc Letters. 1974.Google Scholar
  6. [6]
    W.Henhapl and C.B.Jones, "On the Interpretation of Goto Statements in the VDL", IBM Vienna Note, LN 25.3.065, March 1970.Google Scholar
  7. [7]
    W.Henhapl and C.B.Jones, "The Block Concept and Some Possible Implementations, with Proofs of Equivalence", IBM Vienna Technical Report, TR 25.104, April 1970.Google Scholar
  8. [8]
    C.A.R. Hoare, "Proof of Correctness of Data Representations", Acta Informatica, Vol. 1, pp 271–281, 1972.Google Scholar
  9. [9]
    C.B.Jones and P.Lucas, "Proving Correctness of Implementation Techniques", in "Symposium on Semantics of Algorithmic Languages" (Ed.) F. Engeler, Springer-Verlag Lecture Notes in Mathematics No. 188, October 1970.Google Scholar
  10. [10]
    C.B.Jones, "Sufficient Properties for Implementation Correctness: Assignment Language", IBM Hursley Note, TN 9002, June 1971.Google Scholar
  11. [11]
    C.B.Jones, "Formal Development of Correct Algorithms: An Example Based on Earley's Recogniser", presented at ACM SIGPLAN Conference, SIGPLAN Notices Vol. 7, No. 1, January 1972.Google Scholar
  12. [12]
    C.B.Jones, "Formal Development of Programs", IBM Hursley Technical Report, TR 12.117, June 1973.Google Scholar
  13. [13]
    P.J.Landin, "A Correspondence Between Algol 60 and Church's Lambda-Notation: Part I", Comm. of ACM, Vol. 8, No. 2, February 1965.Google Scholar
  14. [14]
    P.Lucas, "Two Constructive Realisations of the Block Concept and their Equivalence", IBM Vienna Technical Report, TR 25.085, 1968.Google Scholar
  15. [15]
    P.Lucas, "On Program Correctness and the Stepwise Development of Implementations", presented at IBM Conference at Pisa University, 1972.Google Scholar
  16. [16]
    P.Lucas and K. Walk, "On the Formal Description of PL/I" in Annual Review in Automatic Programming, Vol. 6, Part 3, Pergamon Press, 1969.Google Scholar
  17. [17]
    J.McCarthy, "Towards a Mathematical Science of Computation" presented at IFIP Congress 1962.Google Scholar
  18. [18]
    R.Milner, "An Algebraic Definition of Simulation Between Programs", Stanford University AIM-142, February 1971.Google Scholar
  19. [19]
    P. Mosses, "The Mathematical Semantics of Algol 60", Oxford University Computing Laboratory, PRG-12, January 1974.Google Scholar
  20. [20]
    P. Naur, "An Experiment on Program Development", BIT 12, pp 347–365, 1972.Google Scholar
  21. [21]
    J.C.Reynolds, "Definitional Interpreters for Higher-Order Programming Languages", presented at 25th National ACM Conference, August 1972.Google Scholar
  22. [22]
    D. Scott and C. Strachey, "Toward a Mathematical Semantics for Computer Languages", in "Proceedings of the Symposium on Computers and Automata", Microwave Research Institute Symposia Series Vol.21, Polytechnic Institute of Brooklyn, 1971.Google Scholar
  23. [23]
    C.Strachey, "Continuations: A Mathematical Semantics which can deal with Full Jumps", unpublished.Google Scholar
  24. [24]
    K.Walk et al, "Abstract Syntax and Interpretation of PL/I", IBM Vienna Technical Report, TR 25.098, 1969.Google Scholar
  25. [25]
    "PL/I BASIS/1" ECMA ANSI working document, February 1974.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1975

Authors and Affiliations

  • C. B. Jones
    • 1
  1. 1.IBM Laboratory ViennaAustria

Personalised recommendations