A Roadmap to Metacomputation by Supercompilation

This paper gives a gentle introduction to Turchin's super-compilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Then a taxonomy of related transformers is given and compared to the supercompiler. Finally, we put supercompilation into the larger perspective of metacomputation and consider three metacomputation tasks: specialization, composition, and inversion.

[1]  Jan Komorowski,et al.  An Introduction to Partial Deduction , 1992, META.

[2]  Robert Glück,et al.  Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC , 1994, ESOP.

[3]  D. Bobrow,et al.  THE PROGRAMMING LANGUAGE LISP: ITS OPERATION AND APPLICATIONS, , 1967 .

[4]  Yoshihiko Futamura,et al.  Parital Computation of Programs , 1982, RIMS Symposium on Software Science and Engineering.

[5]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[6]  Robert Glück,et al.  Metasystem transition schemes in computer science and mathematics , 1995 .

[7]  Robert Glück Towards Multiple Self-Application , 1991, PEPM.

[8]  John P. Gallagher,et al.  Ensuring Global Termination of Partial Deduction while Allowing Flexible Polyvariance , 1995, ICLP.

[9]  Robert Glück,et al.  Application of metasystem transition to function inversion and transformation , 1990, ISSAC '90.

[10]  Richard C. T. Lee,et al.  Symbolic logic and mechanical theorem proving , 1973, Computer science classics.

[11]  Robert Glück Towards multiple self-application , 1991 .

[12]  Valentin F. Turchin,et al.  Semantic definitions in REFAL and the automatic production of compilers , 1980, Semantics-Directed Compiler Generation.

[13]  Valentin F. Turchin,et al.  Program transformation with metasystem transitions , 1993, Journal of Functional Programming.

[14]  S. J. Cyvin,et al.  Algorithm: A Generalization , 1988 .

[15]  Valentin F. Turchin,et al.  The phenomenon of science , 1977 .

[16]  Philip Wadler,et al.  When Will Deforestation Stop , 1988 .

[17]  Valentin F. Turchin,et al.  The Cybernetic Ontology of Action , 1993 .

[18]  Andrei P. Ershov,et al.  On the Essence of Compilation , 1977, Formal Description of Programming Concepts.

[19]  S. A. Romanenko,et al.  A compiler generator produced by a self-applicable specializer can have a surprisingly natural and u , 1988 .

[20]  Robert Glück,et al.  Controlling conjunctive partial deduction of definite logic programs , 1996 .

[21]  Olivier Danvy,et al.  For a Better Support of Static Data Flow , 1991, FPCA.

[22]  María Alpuente,et al.  Narrowing-Driven Partial Evaluation of Functional Logic Programs , 1996, ESOP.

[23]  Andrei Klimov Dynamic specialization in extended functional language with monotone objects , 1991 .

[24]  Robert Glück,et al.  On the generation of specializers , 1994, Journal of Functional Programming.

[25]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[26]  Olivier Danvy,et al.  Tutorial notes on partial evaluation , 1993, POPL '93.

[27]  David Sands,et al.  Total correctness by local improvement in program transformation , 1995, POPL '95.

[28]  Siau-Cheng Khoo,et al.  Parameterized partial evaluation , 1993, TOPL.

[29]  Neil D. Jones,et al.  Mix: A self-applicable partial evaluator for experiments in compiler generation , 1989, LISP Symb. Comput..

[30]  Robert Glück,et al.  Reasoning about Hierarchies of Online Program Specialization Systems , 1996, Dagstuhl Seminar on Partial Evaluation.

[31]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[32]  Erik Sandewall,et al.  A Partial Evaluator, and its Use as a Programming Tool , 1976, Artif. Intell..

[33]  Alberto Pettorossi,et al.  Unfolding - Definition - Folding, in this Order, for Avaoiding Unnecessary Variables in Logic Programs , 1991, PLILP.

[34]  Robert Glück,et al.  Generating Transformers for Deforestation and Supercompilation , 1994, SAS.

[35]  Valentin F. Turchin,et al.  The Use of Metasystem Transition in Theorem Proving and Program Optimization , 1980, ICALP.

[36]  Robert M. Nirenberg A practical turing machine representation , 1986, SIGA.

[37]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation , 1987 .

[38]  Michael Leuschel,et al.  Global Control for Partial Deduction through Characteristic Atoms and Global Trees , 1996, Dagstuhl Seminar on Partial Evaluation.

[39]  Valentin F. Turchin,et al.  Experiments with a supercompiler , 1982, LFP '82.

[40]  Valentin F. Turchin,et al.  The concept of a supercompiler , 1986, TOPL.

[41]  Donald A. Smith,et al.  Partial evaluation of pattern matching in constraint logic programming languages , 1991, PEPM '91.

[42]  Morten Heine Sørensen,et al.  Call-By-Name CPS-Translation as a Binding-Time Improvement , 1995, SAS.

[43]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[44]  John P. Gallagher,et al.  Tutorial on specialisation of logic programs , 1993, PEPM '93.

[45]  Danny De Schreye,et al.  A Conceptual Embedding of Folding into Partial Deduction: Towards a Maximal Integration , 1996, JICSLP.

[46]  Manuel V. Hermenegildo,et al.  Implementation of multiple specialization in logic programs , 1995, PEPM '95.

[47]  Andrei P. Nemytykh,et al.  A Self-Applicable Supercompiler , 1996, Dagstuhl Seminar on Partial Evaluation.

[48]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[49]  Robert Glück,et al.  Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree , 1993, WSA.

[50]  Valentin F. Turchin,et al.  The language refal - the theory of compilation and metasystem analysis , 1980 .

[51]  F. Metavariables : their Implementation and Use in Program Transformation , 1995 .

[52]  Robert Glück,et al.  Controlling Conjunctive Partial Deduction , 1996, PLILP.

[53]  Alexander Romanenko,et al.  Inversion and metacomputation , 1991, PEPM '91.

[54]  Akihiko Takano Generalized Partial Computation using Disunification to Solve Constraints , 1992, CTRS.

[55]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[56]  Robert Glück On the Mechanics of Metasystem Hierarchies in Program Transformation , 1995, LOPSTR.

[57]  Valentin F. Turchin,et al.  A constructive interpretation of the full set theory , 1987, The Journal of Symbolic Logic.

[58]  Roland N. Bol,et al.  Loop checking in partial deduction , 1993, J. Log. Program..

[59]  Lionello Lombardi Incremental Computation: The Preliminary Design of a Programming System Which Allows for Incremental Data Assimilation in Open-Ended Man-Computer Information Systems , 1967, Adv. Comput..

[60]  Robert Glück,et al.  An Algorithm of Generalization in Positive Supercompilation , 1995, ILPS.

[61]  David Sands,et al.  Proving the Correctness of Recursion-Based Automatic Program Transformations , 1995, Theor. Comput. Sci..

[62]  V. F. Turchin,et al.  A supercompiler system based on the language REFAL , 1979, SIGP.

[63]  Andrei P. Ershov,et al.  On the Partial Computation Principle , 1977, Inf. Process. Lett..

[64]  John W. Lloyd,et al.  Partial Evaluation in Logic Programming , 1991, J. Log. Program..

[65]  Sergei A. Romanenko Arity Raiser and its Use in Program Specialization , 1990, ESOP.

[66]  Yoshihiko Futamura Program Evaluation and Generalized Partial Computation , 1988, FGCS.

[67]  Robert Glück,et al.  Efficient Multi-level Generating Extensions for Program Specialization , 1995, PLILP.

[68]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[69]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[70]  Robert Glück,et al.  A positive supercompiler , 1996, Journal of Functional Programming.

[71]  Donald A. Smith,et al.  Partial evaluation of pattern matching in constraint logic programming languages , 1991, PEPM '91.

[72]  Robert Glück,et al.  Partial Deduction and Driving are Equivalent , 1994, PLILP.