Partial computation of programs

  • Yoshihiko Futamura
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 147)


This paper attempts to clarify the difference between partial and ordinary computation. Partial computation of a computer program is by definition "specializing a general program based upon its operating environment into a more efficient program". It also shows the usefulness of partial computation. Finally, the formal theory of partial computation, technical problems in making it practical, and its future research problems are discussed.

The main purpose of this paper is to make partial computation effectiveness widely known. However, two new results are also reported:
  1. (1)

    a partial computation compiler, and

  2. (2)

    a tabulation technique to terminate partial computation.



Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

7. References

[Theory and practice of partial computation]

  1. [1]
    Babich,G.Kh., The DecAS algorithmic language for the solution of problems with incomplete information and its interpreting algorithms. Kibernetika, No., 1974, 61–71 (Russian).Google Scholar
  2. [2]
    Babich,G.Kh. et al., The Incol algorithmic language for computations over incomplete information. Programmirovanie, No.4, 1976,24–32 (Russian).Google Scholar
  3. [3]
    Beckman,L. et al., A partial evaluator and its use as a programming tool. Datalogilaboratoriet, Memo 74/34, Uppsala University, Uppsala, 1974 (also: Artificial Intelligence,vol.7, 1976, 319–357).Google Scholar
  4. [4]
    Chang,C,-L. and Lee, R., Symbolic Logic and Mechanical Theorem-Proving, (Chapter 10.9) Academic Press, 1973.Google Scholar
  5. [5]
    Dixon,J., The SPECIALIZER, a method of automatically writing computer programs. Div. of computer Res. and Technology, NIH: Bethesda, MdGoogle Scholar
  6. [6]
    Emanuelson, P., Performance enhancement in a well-structured pattern matcher through partial evaluation. Linkoping Studies in Science and Technology Dissertations,No.55, Software Systems Research Center,Linkoping University, 1980.Google Scholar
  7. [7]
    Ershov., A.P., Problems in many-language programming syatems. Language hierarchies and interfaces. LNCS, vol. 46, Springer-Verlag, Heidelberg, 1976, 358–428.Google Scholar
  8. [8]
    —, On the partial computation principle. Information Processing Letters, No. 2, 1977.Google Scholar
  9. [9]
    — and Itkin, V.E., Correctness of mixed computation in Algol-like programs. LNCS,Springer-Verlag, Heidelberg, 1977.Google Scholar
  10. [10]
    — and Grushetsky, V.V., An implementation-oriented method for describing algorithmic languages. Proc. of IFIP 77, 1977.Google Scholar
  11. [11]
    —,A theoretical principle of system programming, Soviet Math. Dokl. Vol. 18 (1977), No. 2.Google Scholar
  12. [12]
    —,On the essence of compilation. IFIP Working Conference on formal description of programming concepts, August 1977.Google Scholar
  13. [13]
    —,Mixed computation in the class of recursive program schema. Acta Cyberneticca, Tom. 4, Fosc. 1, Szeged, 1978.Google Scholar
  14. [14]
    —,Mixed computation: Potential applications and problems for study, Theoretical Computer Science 18(1982) 41–67.Google Scholar
  15. [15]
    —, On Futamura projection. bit, Vol. 12, No. 14, 1980 (Japanese).Google Scholar
  16. [16]
    Futamura, Y., Partial evaluation of computation process: an approach to a compiler-compiler. Systems Computers Controls, Vol. 2, No. 5, 1971.Google Scholar
  17. [17]
    —,EL1 partial evaluator. Term paper manuscript, AM260, DEAP, Harvard University, 1972.Google Scholar
  18. [18]
    —,Compilation of Basic Transition Networks. Term paper manuscript, AM221, DEAP, Harvard University, 1972.Google Scholar
  19. [19]
    —,Partial computation of computer programs. AL78–80, Inst. Electronics Comm. Engrs. Japan, 1978 (Japanese).Google Scholar
  20. [20]
    Haraldsson, A., A program manipulation system based on partial evaluation. Linkoping Studies in Science and Technology Dissertations, No.14, Department of Mathematics, Linkoping University, 1977.Google Scholar
  21. [21]
    —, Experiences from a program manipulation systems. Informatic Laboratory, Linkoping University, 1980.Google Scholar
  22. [22]
    Heuderson,P. and Morris,J.H., Jr., A lazy evaluator, Techn. Report No. 75, January 1976, Computing Laboratory, The University of Newcastle upon Tyne (also: 3rd ACM Symposium on principle of programming languages, January, 1976.Google Scholar
  23. [23]
    Kahn, K., A partial evaluator of Lisp written in a Prolog written in Lisp intended to be applied to the Prolog and itself which in turn is intended to be given to itself together with the Prolog to produce a Prolog compiler. UPMAIL, Dept. of Computing Science, Uppsala University, March 1982.Google Scholar
  24. [24]
    —, The automatic translation of Prolog programs to Lisp via partial evaluation. UPMAIL, Dept. of computing Science, Uppsala University, P.O. Box 2059, Uppsala, Sweden.Google Scholar
  25. [25]
    Komorowski, H.J., A specification of an abstract Prolog machine and its application to partial evaluation. Linkoping Studies in Science and Technology Dissertations, No. 69, Software Systems Research Center, Linkoping University, 1981.Google Scholar
  26. [26]
    Lombardi, L.A. and Raphael, B., LISP as the language for an incremental computer. In E. Berkley and D. Bobrow (Eds), The programming language LISP: Its operation and application, MIT Press, Cambridge, 1964.Google Scholar
  27. [27]
    —, Incremental computation. Advances in computers, Vol. 8, 1967.Google Scholar
  28. [28]
    Ostrovsky, B.N., Obtaining language oriented parser systematically by means of mixed computation, in I.V. Pttosin, Ed., Translation and Program Models (Computing Center, Novosibirsk, 1980) 68–80 (in Russian).Google Scholar
  29. [29]
    Turchin, V.F., Equivalent program transformation in REFAL. The automated system for construction control. Trans. of the CNIIPIASS institute, issue 6, M., 1974, 36–68 (Russian).Google Scholar

[Program optimization, recurtion removal and tabulation]

  1. [30]
    Allen,F.E. et al., The experimental compiling system. IBM J,RES DEVELOP. Vol. 24, No. 6, November 1980.Google Scholar
  2. [31]
    Bird, R.S., Tabulation techniques for recursive programs. Computing Surveys, Vol. 12, No. 4, December 1980.Google Scholar
  3. [32]
    Goto, E, Monocopy and associative algorithms in an extended Lisp. Report of the FLATS Project, Vol. 1, October 1978, Information Science Laboratory, The Institute of Physical and Chemical Research, Wako-Shi, Saitama 351, Japan.Google Scholar
  4. [33]
    Keller, R.M. and Sleep, M.R., Applicative caching: Programmer control of object sharing and lifetime in distributed implementation of applicative languages. Proc. Functional Programming Language and Computer Architecture, 131–140, Dec. 1981.Google Scholar
  5. [34]
    Rish, T., REMREC — A program for automatic recursion removal in LISP. Datalogilaboratoriet, Uppsala University, DLU 37/24, 1973.Google Scholar
  6. [35]
    Fuchi, K., Programming languages based on predicate logic. Inf. Processing journal of Japan, Vol. 22, No. 6, 588–591, June 1981 (Japanese).Google Scholar
  7. [36]
    Futamura, Y. et al., Development of computer programs by PAD (Problem Analysis Diagram). Proc. of the Fifth International Conference on Software Engineering (New York: IEEE Computer Society, 1981), 325–332.Google Scholar
  8. [37]
    Kahn, K., Unique Features of Lisp Machine Prolog. UPMAIL, Dept. of Computing Science, Uppsala University, March 1982.Google Scholar
  9. [38]
    McCarthy, J. et al., LISP 1.5 Programmer's manual. M.I.T. Press, Cambridge, Massachusetts, 1962.Google Scholar
  10. [39]
    Nakashima, H., Prolog/KR User's Manual for Version C-2. Wada Laboratory, Information Engineering Course, University of Tokyo, August 1981.Google Scholar
  11. [40]
    Weinreb, D. and Moon, D., Lisp machine manual. MIT AI Laboratory, March 1981.Google Scholar

[Mathematical theory of computation]

  1. [41]
    Kleene, S.C., Introduction to Meta-Mathematics. North-Holland Publishing Co., Amsterdam, 1952.Google Scholar
  2. [42]
    Manna, Z., Mathematical Theory of Computation. McGraw-Hill, New York, 1974.Google Scholar
  3. [43]
    Nakajima, R., Introduction to Mathematical Information Science, Asakura-Shoten, Tokyo, 1982 (Japanese).Google Scholar
  4. [44]
    Wegner, P., Programming, Languages, Information science and Computer Organization. McGraw-Hill, New York, 1968.Google Scholar
  5. [45]
    Yasuhara, A., Recursive Function Theory and Logic. Academic Press, New York, 1971.Google Scholar

[5th generation computer project]

  1. [46]
    Motooka, S., Overview of the 5th generation computer. Information Processing Journal of Japan, 426–432, Vol. 23, No. 5, May 1982 (Japanese).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1983

Authors and Affiliations

  • Yoshihiko Futamura
    • 1
  1. 1.Central Research LaboratoryHitachi, Ltd.Kokubunji, TokyoJapan

Personalised recommendations