Turing’s 1949 Paper in Context
Anyone who has written one knows how frustratingly difficult it can be to perfect a computer program. Some of the founding fathers of computing set out ideas for reasoning about software — one would say today ‘techniques for proving that a program satisfies its specification’. Alan Turing presented a paper entitled Checking a Large Routine that laid out a workable method for reasoning about programs. Sadly his paper had little impact. Understanding the problem faced, Turing’s proposal and what followed provides insight into how ideas evolve. Comparing three contributions from the 1940s with the current state of the art clarifies a problem that still costs society a fortune each year.
KeywordsFormal Method Turing Machine Proof Obligation Current Author Machine Code
I should like to dedicate this paper to Lockwood Morris (1943–2014) who was a great but under-appreciated scientist. We worked together on [MJ84] when we were both in Oxford and he subsequently spent his sabbatical with me in Manchester. As well as many happy memories, Lockwood did me a great personal favour in December 2013 which was sadly the last time we met.
I am extremely grateful to Liesbeth de Mol for bringing Curry’s work to my attention and to Gerard Alberts for interesting input on van Wijngaarden. Comments from anonymous referees have also helped improve the paper although some of their suggestions will not fit in the page ration. My funding for this research comes from the EPSRC Strata Platform Grant.
- [Cur49]Curry, H.B.: On the composition of programs for automatic computing. Naval Ordnance Laboratory Memorandum 9806, 19-8, 52 pp. (1949)Google Scholar
- [Flo67]Floyd, R.W.: Assigning meanings to programs. In: Proceedings of Symposium in Applied Mathematics. Mathematical Aspects of Computer Science, vol. 19, pp. 19–32. American Mathematical Society (1967)Google Scholar
- [GvN47]Goldstine, H.H., von Neuman, J.: Planning and coding of problems for an electronic computing instrument. Technical report, Institute of Advanced Studies, Princeton (1947)Google Scholar
- [Hoa69]Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580, 583 (1969)Google Scholar
- [Kin71]King, J.C.: A program verifier. In: Freiman, C.V. (ed.) Proceedings of the Information Processing, IFIP 1971, pp. 234–249. North-Holland (1971)Google Scholar
- [Pét66]Péter, R.: Recursive Functions. Academic Press, New York (1966)Google Scholar
- [Tur49]Turing, A.M.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, pp. 67–69. University Mathematical Laboratory, Cambridge, June 1949Google Scholar