Acta Informatica

, Volume 6, Issue 1, pp 41–60 | Cite as

A system which automatically improves programs

  • J. Darlington
  • R. M. Burstall


Here we give methods of mechanically converting programs that are easy to understand into more efficient ones, converting recursion equations using high level operations into lower level flowchart programs.

The main transformations involved are (i) recursion removal (ii) eliminating common subexpressions and combining loops (iii) replacing procedure calls by their bodies (iv) introducing assignments which overwrite list cells no longer in use (compiletime garbage collection).


Information System Operating System Data Structure Communication Network Information Theory 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Burstall, R. M., Collins, J. S., Popplestone, R. J.: Programming in POP-2. Edinburgh: Edinburgh University Press 1971zbMATHGoogle Scholar
  2. 2.
    Minsky, M.: Form and content in computer science. 1970 A.C.M. Turing Lecture. J. ACM 17, 197–215 (1970)CrossRefGoogle Scholar
  3. 3.
    Dijkstra, E. W.: Notes on structured programming. Technische Hogeschool, Eindhoven, The Netherlands, TH Report 70-WSK-03, 2nd edition, 1970Google Scholar
  4. 4.
    Ambler, A. P., Burstall, R. M.: LIB POLYSETS. POP-2 Program Library Specification. Department of Machine Intelligence and Perception, University of Edinburgh, 1971Google Scholar
  5. 5.
    Strong, H.R., Jr.: Translating recursion equations into flow charts. Proc. 2nd Annual A.C.M. Symposium on Theory of Computing, New York 1970, p. 184–197Google Scholar
  6. 6.
    Garland, S. J., Luckham, D. C.: Program schemes, recursion schemes and formal languages. School of Engineering and Applied Science, University of California, Los Angeles, UCLA-ENG-7154, 1971zbMATHGoogle Scholar
  7. 7.
    Cooper, D. C.: The equivalence of certain computations. Computer Journal 9, 45–52 (1966)MathSciNetCrossRefGoogle Scholar
  8. 8.
    Darlington, J.: A semantic approach to automatic program improvement. Department of Machine Intelligence, University of Edinburgh, Ph.D. thesis. 1972Google Scholar
  9. 9.
    Ernst, G. W., Newell, A.: Generality and GPS. Carnegie Institute of Technology, Pittsburgh, Pennsylvania, 1967zbMATHGoogle Scholar
  10. 10.
    Simon, H. A.: The heuristic compiler. In: Simon, H. A., Siklossy, L. (eds.): Representation and Meaning. New Jersey: Prentice Hall 1972Google Scholar
  11. 11.
    Topor, R. W.: Interactive program verification using virtual programs. Department of Artificial Intelligence, University of Edinburgh, Ph.D. thesis. 1975Google Scholar
  12. 12.
    Boyer, R. S., Moore, J. S.: Proving theorems about LISP functions. J. ACM 22, 129–144 (1975)MathSciNetCrossRefGoogle Scholar
  13. 13.
    Sheridan, P. B.: The arithmetic translator-compiler of the IBM Fortran automatic coding system. Comm. ACM 2, 9 (1959)CrossRefGoogle Scholar
  14. 14.
    Rohl, J. S., Lin, J. A.: A note on compiling arithmetic expressions. Computer Journal 15, 13–14 (1972)CrossRefGoogle Scholar
  15. 15.
    Hopgood, F. R. A.: Compiling techniques. Computer monographs. London: Macdonald and New York: American Eisevier 1969Google Scholar
  16. 16.
    Burstall, R. M., Darlington, J.: Some transformations for developing recursive programs. Proc. of 1975 International Conference on Reliable Software, Los Angeles, 1975, p. 465–472 (to appear in Journal ACM)Google Scholar
  17. 17.
    Darlington, J.: Application of program transformation to program synthesis. Proc. of IRIA Symposium on Proving and Improving Programs, Arc-et-Senans, 1975, p. 133–144Google Scholar

Copyright information

© Springer-Verlag 1976

Authors and Affiliations

  • J. Darlington
    • 1
  • R. M. Burstall
    • 1
  1. 1.Dept. of Artificial IntelligenceUniv. of EdinburghEdinburghUK

Personalised recommendations