• Corpus ID: 115475047

Turchin's Supercompiler Revisited - An operational theory of positive information propagation

  title={Turchin's Supercompiler Revisited - An operational theory of positive information propagation},
  author={Morten Heine S{\o}rensen},
Turchin`s supercompiler is a program transformer that includes both partial evaluation and deforestation. Although known in the West since 1979, the essence of its techniques, its more precise relations to other transformers, and the properties of the programs that it produces are only now becomming apparent in the Western functional programming community. This thesis gives a new formulation of the supercompiler in familiar terms; we study the essence of it, how it achieves its e ects, and its… 
An Algorithm of Generalization in Positive Supercompilation
The technique can be viewed as an instance of Martens' and Gallagher's recent framework for global termination of partial deduction, but it is more general in some important respects, e.g. it uses well-quasi orderings rather than well-founded orderings.
A Positive Supercompiler
The authors consider in detail one wellknown example of program transformation: the transformation of a naive string matcher by specializing it for a given specific pattern into an efficient algorithm known as KMP, and show that while supercompilation and generalized partial computation solve the problem, 'regular' partial evaluation and deforestation cannot do this without a non-trivial modification in the original unspecialized matcher.
A Prolog Positive Supercompiler
A positive supercompiler for Prolog is presented and the basic algorithm used in APROPOS is given and the operation andiency of the method is demonstrated by means of examples.
Supercompilation and normalisation by evaluation
The focus of this paper is to formalise the relationship between supercompilation and normalisation by evaluation for System F with recursive types and terms.
Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC
We study four transformation methodologies which are automatic instances of Burstall and Darlington's fold/unfold framework: partial evaluation, deforestation, supercompilation, and generalized
A Formal Approach to Reasoning about the Effectiveness of Partial Evaluation
A framework for assessing the effectiveness of partial evaluators in functional logic languages is introduced, based on properties of the rewrite system that models a functional logic program, and several criteria for measuring the cost of a computation are defined.
Measuring the Effectiveness of Partial Evaluation in Functional Logic Languages
A framework for assessing the effectiveness of partial evaluators in functional logic languages is introduced, based on properties of the rewrite system that models a functional logic program, and several criteria for measuring the cost of a computation are defined.
Multi-result Supercompilation as Branching Growth of the Penultimate Level in Metasystem Transitions
The usefulness of multi-resultsupercompilation for proving the equivalence of expressions and in two-level supercompilation is shown.
A comparison of program transformation systems
This paper focuses on three fold/unfold based transformation systems, positive supercompilation and distillation and derivatives of both that use labelled transition systems and an analysis of how they compare to each other, and another transformation system, HOSC, when applied to a sample of real-world programs.


Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree
The notion of a perfect process tree as a model for the full propagation of information in metacomputation is introduced and it is demonstrated that specializing a naive pattern matcher with respect to a fixed pattern obtains the efficiency of a matcher generated by the Knuth, Morris & Pratt algorithm.
The concept of a supercompiler
It is argued that the language Refal serves the needs of supercompilation best, and it is described and compared with the usual approach to program transformation as a stepwise application of a number of equivalence rules.
Automatic Online Partial Evaluation
We have solved the problem of constructing a fully automatic online program specializer for an untyped functional language (specifically, the functional subset of Scheme). We designed our
Application of metasystem transition to function inversion and transformation
It is proved by construction an application considered theoretically by Turchin that self-application of metacomputation will allow the automatic construction of inverse algorithms, in particular the algorithm of binary subtraction from the algorithm that leads to the Knuth, Morris and Pratt algorithm.
Partial Evaluation, Self-Application and Types
Questions of computational complexity and the desirability of a theoretical framework for studying complexity in partial evaluation are discussed and some first steps toward the problem of verifying type correctness in interpreters, compilers and partial evaluators are outlined.
Listlessness is better than laziness II: composing listless functions
  • P. Wadler
  • Economics
    Programs as Data Objects
  • 1985
The listless transformer applies only to programs from which all intermediate lists can be removed, and defines the class of programs that are subject to bounded evaluation (b.e. programs), that is, programs that can be lazily evaluated in constant bounded space.
Transformation in a Non-Strict Language: An Approach to Instantiation
A two-phase solution to the problem of case analysis by instantiation comprises a suitable form of strictness analysis to determine whether a proposed instantiation is safe, and a procedure to re-formulate troublesome definitions so that, in effect, case analysis is shifted to a nearby safe context.
Specifying the correctness of binding-time analysis
  • M. Wand
  • Computer Science
    POPL '93
  • 1993
This proof suggests a framework for the incorporating flow analyses into verified compilers and shows that the conventional properties of partial evaluators, such as the Futamura projections, are consequences of this specification.
Experiments with a supercompiler
This paper presents and discusses some examples of the operation of the first experimental model of a supercompiler, and highlights most important features of the supercompilers and intimate its potential uses.
Proofs by structural induction using partial evaluation
This paper shows how partial evaluation can be used in developing proofs about program transformations and proves a theorem arising in the earlier study of the CPS transformation.