Program optimization using invariants

  • Shmuel Katz
Program Development And Program Verification
Part of the Lecture Notes in Computer Science book series (LNCS, volume 44)


Optimizing a computer program is defined as improving the execution time without disturbing the correctness. We show how to use invariants generated from the program to change the statements in and around the program's loops. This approach is shown to systematize existing optimization methods, and to sometimes allow stronger optimizations than are possible under the standard transformation approach.


Outer Loop Output Specification Ancestor Statement Correctness Proof Program Verification 
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.


  1. Allen [1969]
    Allen F.E.: Program Optimization, Annual Review in Automatic Programming, Vol. 5, Permagon, Elmsford, N.Y., 1969.Google Scholar
  2. Allen [1971]
    Allen F.E.: A basis for program optimization. Proc. IFIP 1971, Vol. 1, Ljublijana, Yugoslavia (August 1971).Google Scholar
  3. Allen & Cocke [1972]
    Allen F.E. and Cocke J.: A Catalogue of optimizing transformations in Design and Optimization of Compilers (R. Rustin, ed.), Prentice Hall, 1972, pp.1–30.Google Scholar
  4. Burstall & Darlington [1975]
    Burstall R., and Darlington J.: Some transformations for developing recursive programs. Proc. International Conference on Reliable Software, Los Angeles, April 1975.Google Scholar
  5. Cheatham & Wegbreit [1972]
    Cheatham, T.E. and Wegbreit B.: A laboratory for the study of automating programming. Spring Joint Computer Conference, 1972, pp. 11–20.Google Scholar
  6. Darlington & Burstall [1973]
    Burstall, R. and Darlington, J.: A system for the automatically improves programs. Proc. 3rd Intl. Conf. on Artificial Intelligence. Stanford, 1973, pp. 479–485.Google Scholar
  7. Elspas [1974]
    Elspas, B.: The semiautomatic generation of inductive assertions for proving program correctness. Research report, SRI, Memlo Park, Calif. (July 1974).Google Scholar
  8. Gerhart [1975]
    Gerhart, S.: Correctness-Preserving program transformations, Proc. 2nd ACM Symposium on Principles of Programming Languages, Palo Alto, January 1975, pp. 54–65.Google Scholar
  9. Katz [1976]
    Katz, S.: Logical analysis and invariants of programs, Ph.D. thesis Weizmann Institute of Science, Rechovot, Israel, to appear, 1976Google Scholar
  10. Katz & Manna [1973]
    Katz, S. and Manna Z.: A Heuristic approach to program verification. Proc. 3rd Intl. Conf. on Artificial Intelligence, Stanford, 1973, pp. 500–512.Google Scholar
  11. Katz & Manna [1976]
    Katz, S. and Manna Z.: Logical analysis of programs, CACM, to appear, 1976Google Scholar
  12. Knuth [1974]
    Knuth, D.: Structured Programming with GØTØ statements, AGM Computing Surveys, Vol. 6, No.4, December 1974.Google Scholar
  13. Manna [1969]
    Manna, Z.: The correctness of programs, J. Computer and System Science, 3, 2, May 1969, pp. 119–127.Google Scholar
  14. Wegbreit [1974]
    Wegbreit, B.: The synthesis of loop predicates. CACM 17, 2 (February 1974), pp. 102–112.Google Scholar
  15. Wirth [1973]
    Wirth, N.: Systematic Programming, Prentice-Hall, 1973.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1976

Authors and Affiliations

  • Shmuel Katz
    • 1
  1. 1.IBM Israel Scientific Center Technion CityHaifaIsrael

Personalised recommendations