Results 1 - 10
of
11
The Concept of a Supercompiler
- ACM Transactions on Programming Languages and Systems
, 1986
"... A supercompiler is a program transformer of a certain type. It traces the possible generalized histories of computation by the original program, and compiles an equivalent program, reducing in the process the redundancy that could be present in the original program. The nature of the redundancy that ..."
Abstract
-
Cited by 155 (3 self)
- Add to MetaCart
A supercompiler is a program transformer of a certain type. It traces the possible generalized histories of computation by the original program, and compiles an equivalent program, reducing in the process the redundancy that could be present in the original program. The nature of the redundancy that can be eliminated by supercompilation may be various, e.g., some variables might have predefined values (as in partial evaluation), or the structure of control transfer could be made more efficient (as in lazy evaluation), or it could simply be the fact that the same variable is used more than once. The general principles of supercompilation are described and compared with the usual approach to program transformation as a stepwise application of a number of equivalence rules. It is argued that the language Refal serves the needs of supercompilation best. Refal is formally defined and compared with Prolog and other languages. Examples are given of the operation of a Refal supercompiler implemented at CCNY on an IBM/370.
Occam's Razor in Metacomputation: the Notion of a Perfect Process Tree
, 1993
"... We introduce the notion of a perfect process tree as a model for the
full propagation of in forma tion in metacomputation. Starting with constant
propagation we construct step-by-step the driving mechanism used in supercompilation
which ensures the perfect propagation of information. The concept
of ..."
Abstract
-
Cited by 63 (14 self)
- Add to MetaCart
We introduce the notion of a perfect process tree as a model for the
full propagation of in forma tion in metacomputation. Starting with constant
propagation we construct step-by-step the driving mechanism used in supercompilation
which ensures the perfect propagation of information. The concept
of a simple supercompiler based on perfect driving coupled with a simple
folding strategy is explained. As an example we demonstrate that specializing a
naive pattern matcher with respect to a fixed pattern obtains the efficiency of a
matcher generated by the Knuth, Morris & Pratt al gorithm.
A Roadmap to Metacomputation by Supercompilation
, 1996
"... This paper gives a gentle introduction to Turchin's supercompilation 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. Th ..."
Abstract
-
Cited by 33 (4 self)
- Add to MetaCart
This paper gives a gentle introduction to Turchin's supercompilation 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.
Experiments with a supercompiler
- In ACM Symposium on Lisp and Functional Programming
, 1982
"... This work has been supported by ..."
A program specialization relation based on supercompilation and its properties
- FIRST INTERNATIONAL WORKSHOP ON METACOMPUTATION IN RUSSIA (META 2008)
, 2008
"... An input-output relation for a wide class of program specializers for a simple functional language in the form of Natural Semantics inference rules is presented. It covers polygenetic specialization, which includes deforestation and supercompilation, and generalizes the author’s previous paper on sp ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
An input-output relation for a wide class of program specializers for a simple functional language in the form of Natural Semantics inference rules is presented. It covers polygenetic specialization, which includes deforestation and supercompilation, and generalizes the author’s previous paper on specification of monogenetic specialization like partial evaluation and restricted supercompilation. The specialization relation expresses the idea of what is to be a specialized program, avoiding as much as possible the details of how a specializer builds it. The relation specification follows the principles of Turchin’s supercompilation and captures its main notions: configuration, driving, generalization of a configuration, splitting a configuration, as well as collapsed-jungle driving. It is virtually a formal definition of supercompilation abstracting away the most sophisticated parts of supercompilers— strategies of configuration analysis. Main properties of the program specialization relation—idempotency, transitivity, soundness, completeness, correctness—are formulated and discussed.
SPSC: a Simple Supercompiler in Scala
- PU'09 (INTERNATIONAL WORKSHOP ON PROGRAM UNDERSTANDING) JUNE, 19-23
, 2009
"... The goal of the paper is to demystify supercompilation by presenting the complete source code of a simple, yet operational supercompiler. This may be helpful for a working programmer giving him an opportunity to familiarize himself with supercompilation formulated in terms of his "native language", ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
The goal of the paper is to demystify supercompilation by presenting the complete source code of a simple, yet operational supercompiler. This may be helpful for a working programmer giving him an opportunity to familiarize himself with supercompilation formulated in terms of his "native language", i.e. in form of concrete programs. Besides, these programs are complete and ready to run, so that the supercompilation techniques described in the paper can be immediately tried in practice.
Towards effective two-level supercompilation
, 2010
"... The paper presents a number of improvements to the method of two-level supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
The paper presents a number of improvements to the method of two-level supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and a few techniques of finding simplified versions of lemmas discovered in the process of two-level supercompilation.
Multi-result Supercompilation as Branching Growth of the Penultimate Level in Metasystem Transitions
- PERSPECTIVES OF SYSTEMS INFORMATICS: 8TH INTERNATIONAL ANDREI ERSHOV MEMORIAL CONFERENCE, PSI 2011
, 2011
"... The paper deals with some aspects of metasystem transitions in the context of supercompilation. We consider the manifestations of the law of branching growth of the penultimate level in the case of higher-level supercompilation and argue that this law provides some useful hints regarding the ways of ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
The paper deals with some aspects of metasystem transitions in the context of supercompilation. We consider the manifestations of the law of branching growth of the penultimate level in the case of higher-level supercompilation and argue that this law provides some useful hints regarding the ways of constructing metasystems by combining supercompilers. In particular we show the usefulness of multi-result supercompilation for proving the equivalence of expressions and in two-level supercompilation.
DAT V Programmeringssprog (4): Partial Evaluation, Compiling, and Compiler Generation
, 2002
"... Contents 4 Partial Evaluation, Compiling, and Compiler Generation 2 4.1 Specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.2 The Futamura projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.2.1 Futamura projection 1: a partial evaluator can ..."
Abstract
- Add to MetaCart
Contents 4 Partial Evaluation, Compiling, and Compiler Generation 2 4.1 Specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.2 The Futamura projections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.2.1 Futamura projection 1: a partial evaluator can compile . . . . . . . 4 4.2.2 Futamura projection 2: a partial evaluator can generate a compiler . 5 4.2.3 Futamura projection 3: a partial evaluator can generate a compiler generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.3 Speedups from specialization . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.4 How specialization can be done . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.4.1 An example in more detail . . . . . . . . . . . . . . . . . . . . . . . 7 4.4.2 Annotated programs and o-line partial evaluation . . . . . . . . . . 8 4.5 The rst Futamura projection with unmix . . . . . . . . . . . . . . . . . . . 9 4.6 The second Futamura project
On the Place of Supercompilation inside Program Specialization
"... Abstract. Research in the field of creating systematical methods for specialization of programs with respect to fixed properties of their arguments, compositional structure and given invariants were started by Russian scientists A. P. Ershov (“mixed computation”), V. F. Turchin (“supercompilation”) ..."
Abstract
- Add to MetaCart
Abstract. Research in the field of creating systematical methods for specialization of programs with respect to fixed properties of their arguments, compositional structure and given invariants were started by Russian scientists A. P. Ershov (“mixed computation”), V. F. Turchin (“supercompilation”) and Japanese scientist Y. Futamura (“generalized partial computation”) in the 1970-ths. To the current moment a huge amount of facts mainly related to the object domain of functional programming languages was accumulated in the literature. Ideas of supercompilation were mainly being studied on the base of a functional programming language REFAL, although a series of the results were polished on the LISP’s experimental base. At present time, along with a number of primitive supercompilers constructed for simplest purely theoretical languages, there exists the only experimental supercompiler SCP4 for a real programming language (REFAL-5). The name SCP4 was suggested by V. F. Turchin as reflecting the history of the supercompilation ideas. In this paper we consider various approaches to formulation of the specialization task per se. We give a short survey of the main achievements derived (to the given moment) in the field of specialization of functional programs, analyze principal distinctions between supercompilation and other existing methods. We survey the attempts of constructing of supercompilers.

