Validity and Correctness Before the OS: the Case of LEO I and LEO II

  • Rabia Arif
  • Elisabetta MoriEmail author
  • Giuseppe Primiero
Part of the Philosophical Studies Series book series (PSSP, volume 133)


Efficient and reliable computing is based on validity and correctness. Techniques to ensure these essential features have been in place since the early days of computing. The present study focuses on the hardware testing, data validation and program correctness techniques designed and implemented for LEO I and II machines in the UK during the 1950s.


British computing industry LEO computers Early computers Data validation Program correctness Hardware checking 



The authors wish to thank Patrick Ashcroft, Balbir Barn, Patrick Blakes, John Daines, Gloria Guy, Cliff Jones and Frank Land for sharing their memories and commenting on early drafts of this paper. Thanks to the LEO Computers Society for their helpful suggestions. Rabia Arif and Elisabetta Mori have been supported by grants generously offered by the Association for Information Technology Trust.


  1. Agar, J. 2008. The government machine. A revolutionary history of the computer. Cambridge/London: The MIT Press.Google Scholar
  2. Ammann, P., and J. Offutt. 2008. Introduction to software testing. Cambridge: Cambridge University Press.CrossRefGoogle Scholar
  3. Apt, K., F.S. de Boer, and E.R. Olderog. 2009. Verification of sequential and concurrent programs. Dordrecht: Springer.CrossRefGoogle Scholar
  4. Aris, J.B.B. 2000. Inventing systems engineering. IEEE Annals of the History of Computing 22(3): 4–15.CrossRefGoogle Scholar
  5. Arkoudas, K., and S. Bringsjord. 2007. Computers, justification, and mathematical knowledge. Minds and Machines 17(2): 185–202.CrossRefGoogle Scholar
  6. Ashenhurst, R.L. 1989. Letters in the ACM forum, Communications of the ACM 32(3): 287.CrossRefGoogle Scholar
  7. Bird, P.J. 1994. LEO: The first business computer. Wokingham: Hasler Publishing Limited.Google Scholar
  8. Bringsjord, S. 2015. A vindication of program verification. History & Philosophy of Logic 36(3): 262–277.CrossRefGoogle Scholar
  9. Burge, T. 1998. Computer proof, apriori knowledge, and other minds. Noûs 32(S12): 1–37.CrossRefGoogle Scholar
  10. Caminer, D. 1950–1960. Private Archive. Held by H. Caminer.Google Scholar
  11. Caminer, D. 1958. …And how to avoid them. The Computer Journal 1(1): 11–14.CrossRefGoogle Scholar
  12. Caminer, D., J. Aris, P. Hermon, and F. Land. 1998. LEO: The incredible story of the world’s first business computer. New York: McGraw-Hill.Google Scholar
  13. Cantwell Smith, B. 1985. The limits of correctness. ACM SIGCAS Computers and Society 14,15(1,2,3,4): 18–26.CrossRefGoogle Scholar
  14. Chen, G. 2012. A short historical survey of functional hardware languages. ISRN Electronics Article ID: 271836.Google Scholar
  15. Coombs, M. 1958. LEO I Synthesis Order, 10 Oct 1958. UK National Archive for the History of Computing, University of Manchester, reference number NAHC/LEO/C27.Google Scholar
  16. Cory, W.E., and W.M. van Cleemput. 1980. Development in verification of design correctness. In IEEE Proceedings of the 17th Conference on Design Automation, 156–164. CrossRefGoogle Scholar
  17. Curry, H.B. 1949. On the composition of programs for automatic computing. Naval Ordnance Laboratory Memorandum 9806(52): 19–8.Google Scholar
  18. De Millo, R.L., R.J. Lipton, and A.J. Perlis. 1979. Social processes and proofs of theorems and programs. Communications of the ACM 22(5): 271–281.CrossRefGoogle Scholar
  19. Dijkstra, E.W.D. 1968. A constructive approach to the problem of program correctness. BIT Numerical Mathematics 8(3): 174–186. CrossRefGoogle Scholar
  20. Ferry, G. 2004. A computer called LEO. Lyons teashops and the world’s first office computer. London: Harper Perennial.Google Scholar
  21. Fetzer, J.H. 1988. Program verification: The very idea. Communications of the ACM 31(9): 1048–1063.CrossRefGoogle Scholar
  22. Floridi, L., and P. Illari. 2014. The philosophy of information quality. Cham: Synthese Library 358, Springer International Publishing Switzerland.Google Scholar
  23. Floyd, R. 1967. Assigning meaning to programs. Proceedings of Symposia in Applied Mathematics 19: 19–32.CrossRefGoogle Scholar
  24. Gill, S. 1951. The diagnosis of mistakes in programmes on the EDSAC. Proceedings of the Royal Society of London. Series A, Mathematical and Physical Sciences 206(1087): 538–554.Google Scholar
  25. Gill, S. 1954. Getting programmes right. In National Physical Laboratory, 1954, 80–83.Google Scholar
  26. Goldstine, H.H., and J. von Neumann. 1947. Planning and coding of problems for an electronic computing instrument. Technical Report, Institute of Advanced Studies, Princeton.Google Scholar
  27. Gosden, J. 1997. Mathematics and software at leo computers. Resurrection, Journal of the Computer Conservation Society 17: 15–22.Google Scholar
  28. Gosden, J. 1998. Toward System Software. In Caminer et al., 1998, ch. 16, 185–206.Google Scholar
  29. Haigh, T. 2001a. The chromium-plated tabulator: Institutionalizing an electronic revolution, 1954–1958. IEEE Annals of the History of Computing 23(4): 75–104.CrossRefGoogle Scholar
  30. Haigh, T. 2001b. Inventing information systems: The systems men and the computer, 1950–1968. The Business History Review 75(1): 15–61.CrossRefGoogle Scholar
  31. Haigh, T., M. Priestley, and C. Rope. 2016. ENIAC in action. Making and remaking the modern computer. Cambridge/London: The MIT Press.Google Scholar
  32. Hamming, R.W. 1950. Error detecting and error correcting codes. Bell System Technical Journal 26(2): 147–160.CrossRefGoogle Scholar
  33. Hoare, T. 1969. An axiomatic basis for computer programming. Communications of the ACM 12(10): 576–583.CrossRefGoogle Scholar
  34. Holzmann, G.J. 2003. The SPIN model checker—primer and reference manual. Boston: Addison-Wesley Professional.Google Scholar
  35. Hsiao, M.Y., W.C. Carter, J.W. Thomas, and W.R. Stringfellow. 1981. Reliability, availability, and serviceability of IBM computer systems: A quarter century of progress. IBM Journal of Research and Development 25(5): 453–465.CrossRefGoogle Scholar
  36. Huth, M.R.A., and M.D. Ryan. 2004. Logic in computer science: Modelling and reasoning about systems. Cambridge: Cambridge University Press.CrossRefGoogle Scholar
  37. IBM Knowledge Center. 2010. Mainframe strengths: Reliability, availability, and serviceability
  38. IBM Knowledge Center. 2011. IBM content manager data validation utility for z/OS.
  39. Illari, P. 2014. IQ: Purpose and dimensions. In Floridi and Illari, 2014, 281–301.Google Scholar
  40. Jones, C.B. 2003. The early search for tractable ways of reasoning about programs. IEEE Annals of the History of Computing 25(2): 26–49.CrossRefGoogle Scholar
  41. Jones, C.B. 2017. Turing’s 1949 paper in context. In Unveiling dynamics and complexity, ed. J. Kari, F. Manea, and I. Petre, 13th Conference on Computability in Europe, CiE 2017, Turku, 12–16 June 2017, Lecture Notes in Computer Science, 10307: 32–41.CrossRefGoogle Scholar
  42. Knuth, D.E. 2003. Robert W. Floyd, In Memoriam ACM SIGACT News.Google Scholar
  43. Land, F. 2000. The first business computer: A case study in user-driven innovation. IEEE Annals of the History of Computing 22(3): 16–26.CrossRefGoogle Scholar
  44. Lyons and Co. 1947. Electric machines: Report of a visit by Mr Booth and others to Cambridge, 11 Nov 1947. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/2/1/41.
  45. Lyons and Co. 1947–1954. LEO chronicle 1947–1954. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/11.
  46. Lyons and Co. 1951. LEO (memorandum), 04 Feb 1951. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/3/2/6.
  47. Lyons and Co. 1953. Diagnosis of Equipment Faults—Draft, 05 July 1953. In Papers of David Caminer, Modern Records Centre, University of Warwick, reference number 1092/3/3.Google Scholar
  48. Lyons and Co. 1954 L1. Bakery Wages—Draft Job Analysis, Jan 1954. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/6/2.Google Scholar
  49. Lyons and Co. 1958. Automatic checks on card output, 30 Apr 1958. In Papers of A. L. Jacobs, UK National Archive for the History of Computing, University of Manchester, reference number NAHC/LEO/C27.Google Scholar
  50. Maydanchik, A. 2007. Data quality assessment. Bradley Beach: Technics Publications.Google Scholar
  51. McKenzie, D. 1995. The automation of proof: A historical and sociological exploration. IEEE Annals of the History of Computing 17(3): 7–29.CrossRefGoogle Scholar
  52. Mills, G. 1954. Taking revised orders from Teashops, 01 Aug 1954. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/8/1.Google Scholar
  53. National Physical Laboratory. 1954. Automatic digital computation. In Proceedings of a Symposium Held at the National Physical Laboratory on March 25–28, 1953. London: Her Majesty’s Stationery Off.Google Scholar
  54. Nielson, F., H.R. Nielson, and C. Hankin. 2005. Principles of program analysis. Berlin: Springer.Google Scholar
  55. Piccinini, G. 2015. Physical computation: A mechanistic account. Oxford: Oxford University Press.CrossRefGoogle Scholar
  56. Pinkerton, J.M.M. 1954. Operating and engineering experience gained with LEO. In National Physical Laboratory, 1954, 21–32.Google Scholar
  57. Pinkerton, J.M.M. 1975. Performance problems with LEO I. The Radio and Electronic Engineer 45(8): 411–414.CrossRefGoogle Scholar
  58. Pinkerton, J.M.M. 1991. Taming LEO. Overcoming the inherent unreliability of Leo I. IEE Review 37(1): 13–17.CrossRefGoogle Scholar
  59. Plotkin, G. 2004. The origins of structural operational semantics. The Journal of Logic and Algebraic Programming 60–61: 3–15.CrossRefGoogle Scholar
  60. Primiero, G. 2015. Realist consequence, epistemic inference, computational correctness. In The road to universal logic, ed. A. Koslow, and A. Buchsbaum. Studies in Universal Logic, vol. II, 573–588. Springer, Cham.CrossRefGoogle Scholar
  61. Pristley, M. 2011. A science of operations—machines, logic and the invention of programming. History of computing series. London: Springer.Google Scholar
  62. Randell, B., P.A. Lee, and P.C. Treleaven. 1978. Reliability issues in computing system design. ACM Computing Surveys (CSUR) Surveys 10(2): 123–165.CrossRefGoogle Scholar
  63. Ratliff, T.A. 2003. The laboratory quality assurance system. Hoboken: Wiley, Inc.CrossRefGoogle Scholar
  64. Scannapieco, M. 2014. Object matching: New challenges for record linkage. In Floridi and Illari, 2014, 95–106.Google Scholar
  65. Simkin, M.G. 2008. Five data validation cases. Journal of Information Systems Education 19(3): 271–276.Google Scholar
  66. Simmons, J. 1955a. LEO Job Requirements—Modifications. L4—Tea Blending, 17 June 1955. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/7.Google Scholar
  67. Simmons, J. 1955b. Specification of the Standard LEO II, 22 Nov 1955. In Papers of John Simmons, Modern Records Centre, University of Warwick, reference number MSS.363/S4/4/1.Google Scholar
  68. Sun, S., J.L. Bertrand-krajewski, A. Lynggaard-Jensen, J. van den Broeke, F. Edthofer, M. do C´eu Almeida, `A. Silva Ribeiro, and J. Menaia. 2011. D3.1.1 report prepared 2011.019, 7th framework programme.
  69. Tedre, M. 2015. The science of computing—shaping a discipline. Taylor & Francis: CRC Press.Google Scholar
  70. Thompson, T.R. 1954. Special requirements for commercial or administrative applications. In National Physical Laboratory, 1954, 85–101.Google Scholar
  71. Thompson, T.R., and O.W. Standingford. 1947. American Tour Report May & June 1947, 20 Oct 1947. London Science Museum Archive.Google Scholar
  72. Turing, A.M. 1949. Checking a large routine. In Report of a Conference on High Speed Automatic Calculating Machines, 67–69. Republished in Morris, F.L., and C.B. Jones. 1984. Annals of the History of Computing 6(2): 139–134. Google Scholar
  73. Turner, R. 2012. Machines. In A computable universe: Understanding and exploring nature as computation, ed. H. Zenil, 63–76. London: World Scientific Publishing Company/Imperial College Press.CrossRefGoogle Scholar
  74. Turner, R., and N. Angius. 2017. The philosophy of computer science. The Stanford Encyclopedia of Philosophy (Spring 2017 Edition), ed. E.N. Zalta.
  75. Unidentified Author—ABS. 1953. Marginal Testing, 30 Mar 1953. In Papers of David Caminer, Modern Records Centre, University of Warwick, reference number 1092/3/3.Google Scholar
  76. Wilkes, M.V., M. Phister, and S.A. Barton. 1954. Experience with marginal checking and automatic routining. In National Physical Laboratory, 1954, 239–246.Google Scholar
  77. Wilkes, M.V., D.J. Wheeler, and S. Gill. 1957. The preparation of programs for an electronic digital computer. Reading: Addison-Wesley Publishing.Google Scholar
  78. Yates, J. 2005. Structuring the information age. Baltimore: The Johns Hopkins University Press.Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  • Rabia Arif
    • 1
  • Elisabetta Mori
    • 1
    Email author
  • Giuseppe Primiero
    • 2
  1. 1.Department of Computer ScienceMiddlesex UniversityLondonUK
  2. 2.Department of PhilosophyUniversity of MilanMilanoItaly

Personalised recommendations