Skip to main content

Partial computation of programs

  • Conference paper
  • First Online:
RIMS Symposia on Software Science and Engineering

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 147))

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

7. References

[Theory and practice of partial computation]

  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. Babich,G.Kh. et al., The Incol algorithmic language for computations over incomplete information. Programmirovanie, No.4, 1976,24–32 (Russian).

    Google Scholar 

  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. Chang,C,-L. and Lee, R., Symbolic Logic and Mechanical Theorem-Proving, (Chapter 10.9) Academic Press, 1973.

    Google Scholar 

  5. Dixon,J., The SPECIALIZER, a method of automatically writing computer programs. Div. of computer Res. and Technology, NIH: Bethesda, Md

    Google Scholar 

  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. 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. —, On the partial computation principle. Information Processing Letters, No. 2, 1977.

    Google Scholar 

  9. — and Itkin, V.E., Correctness of mixed computation in Algol-like programs. LNCS,Springer-Verlag, Heidelberg, 1977.

    Google Scholar 

  10. — and Grushetsky, V.V., An implementation-oriented method for describing algorithmic languages. Proc. of IFIP 77, 1977.

    Google Scholar 

  11. —,A theoretical principle of system programming, Soviet Math. Dokl. Vol. 18 (1977), No. 2.

    Google Scholar 

  12. —,On the essence of compilation. IFIP Working Conference on formal description of programming concepts, August 1977.

    Google Scholar 

  13. —,Mixed computation in the class of recursive program schema. Acta Cyberneticca, Tom. 4, Fosc. 1, Szeged, 1978.

    Google Scholar 

  14. —,Mixed computation: Potential applications and problems for study, Theoretical Computer Science 18(1982) 41–67.

    Google Scholar 

  15. —, On Futamura projection. bit, Vol. 12, No. 14, 1980 (Japanese).

    Google Scholar 

  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. —,EL1 partial evaluator. Term paper manuscript, AM260, DEAP, Harvard University, 1972.

    Google Scholar 

  18. —,Compilation of Basic Transition Networks. Term paper manuscript, AM221, DEAP, Harvard University, 1972.

    Google Scholar 

  19. —,Partial computation of computer programs. AL78–80, Inst. Electronics Comm. Engrs. Japan, 1978 (Japanese).

    Google Scholar 

  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. —, Experiences from a program manipulation systems. Informatic Laboratory, Linkoping University, 1980.

    Google Scholar 

  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. 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. —, 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. 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. 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. —, Incremental computation. Advances in computers, Vol. 8, 1967.

    Google Scholar 

  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. 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. Allen,F.E. et al., The experimental compiling system. IBM J,RES DEVELOP. Vol. 24, No. 6, November 1980.

    Google Scholar 

  2. Bird, R.S., Tabulation techniques for recursive programs. Computing Surveys, Vol. 12, No. 4, December 1980.

    Google Scholar 

  3. 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. 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. Rish, T., REMREC — A program for automatic recursion removal in LISP. Datalogilaboratoriet, Uppsala University, DLU 37/24, 1973.

    Google Scholar 

  6. 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. 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. Kahn, K., Unique Features of Lisp Machine Prolog. UPMAIL, Dept. of Computing Science, Uppsala University, March 1982.

    Google Scholar 

  9. McCarthy, J. et al., LISP 1.5 Programmer's manual. M.I.T. Press, Cambridge, Massachusetts, 1962.

    Google Scholar 

  10. Nakashima, H., Prolog/KR User's Manual for Version C-2. Wada Laboratory, Information Engineering Course, University of Tokyo, August 1981.

    Google Scholar 

  11. Weinreb, D. and Moon, D., Lisp machine manual. MIT AI Laboratory, March 1981.

    Google Scholar 

[Mathematical theory of computation]

  1. Kleene, S.C., Introduction to Meta-Mathematics. North-Holland Publishing Co., Amsterdam, 1952.

    Google Scholar 

  2. Manna, Z., Mathematical Theory of Computation. McGraw-Hill, New York, 1974.

    Google Scholar 

  3. Nakajima, R., Introduction to Mathematical Information Science, Asakura-Shoten, Tokyo, 1982 (Japanese).

    Google Scholar 

  4. Wegner, P., Programming, Languages, Information science and Computer Organization. McGraw-Hill, New York, 1968.

    Google Scholar 

  5. Yasuhara, A., Recursive Function Theory and Logic. Academic Press, New York, 1971.

    Google Scholar 

[5th generation computer project]

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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Eiichi Goto Koichi Furukawa Reiji Nakajima Ikuo Nakata Akinori Yonezawa

Rights and permissions

Reprints and permissions

Copyright information

© 1983 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Futamura, Y. (1983). Partial computation of programs. In: Goto, E., Furukawa, K., Nakajima, R., Nakata, I., Yonezawa, A. (eds) RIMS Symposia on Software Science and Engineering. Lecture Notes in Computer Science, vol 147. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-11980-9_13

Download citation

  • DOI: https://doi.org/10.1007/3-540-11980-9_13

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-11980-7

  • Online ISBN: 978-3-540-39442-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics