Formal definition in program development
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.
KeywordsAbnormal Return Phrase Structure Formal Development Abstract Syntax Source Language
- 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
- 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
- H.Bekie, Presentation on "Semantics of Actions" given at Newcastle University, September 1974.Google Scholar
- H.Bekic et al "A Formal Definition of PL/I" to be printed as a Technical Report of IBM Laboratory Vienna.Google Scholar
- A.Hansal, "Software Devices for Processing Graphs Using PL/I Compile-time Facilities", Info Proc Letters. 1974.Google Scholar
- 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
- 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
- C.A.R. Hoare, "Proof of Correctness of Data Representations", Acta Informatica, Vol. 1, pp 271–281, 1972.Google Scholar
- 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
- C.B.Jones, "Sufficient Properties for Implementation Correctness: Assignment Language", IBM Hursley Note, TN 9002, June 1971.Google Scholar
- 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
- C.B.Jones, "Formal Development of Programs", IBM Hursley Technical Report, TR 12.117, June 1973.Google Scholar
- 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
- P.Lucas, "Two Constructive Realisations of the Block Concept and their Equivalence", IBM Vienna Technical Report, TR 25.085, 1968.Google Scholar
- P.Lucas, "On Program Correctness and the Stepwise Development of Implementations", presented at IBM Conference at Pisa University, 1972.Google Scholar
- 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
- J.McCarthy, "Towards a Mathematical Science of Computation" presented at IFIP Congress 1962.Google Scholar
- R.Milner, "An Algebraic Definition of Simulation Between Programs", Stanford University AIM-142, February 1971.Google Scholar
- P. Mosses, "The Mathematical Semantics of Algol 60", Oxford University Computing Laboratory, PRG-12, January 1974.Google Scholar
- P. Naur, "An Experiment on Program Development", BIT 12, pp 347–365, 1972.Google Scholar
- J.C.Reynolds, "Definitional Interpreters for Higher-Order Programming Languages", presented at 25th National ACM Conference, August 1972.Google Scholar
- 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
- C.Strachey, "Continuations: A Mathematical Semantics which can deal with Full Jumps", unpublished.Google Scholar
- K.Walk et al, "Abstract Syntax and Interpretation of PL/I", IBM Vienna Technical Report, TR 25.098, 1969.Google Scholar
- "PL/I BASIS/1" ECMA ANSI working document, February 1974.Google Scholar