The concept of a supercompiler

  title={The concept of a supercompiler},
  author={Valentin F. Turchin},
  journal={ACM Trans. Program. Lang. Syst.},
  • V. Turchin
  • Published 1 June 1986
  • Computer Science
  • ACM Trans. Program. Lang. Syst.
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… 

Figures from this paper

A Self-Applicable Supercompiler

This paper describes the first self-applicable model of a supercompiler and presents some tests, which distinguish it from the previous models and make self-application possible.

On the Place of Supercompilation inside Program Specialization

A short survey of the main achievements derived in the field of specialization of functional programs, analyze principal distinctions between supercompilation and other existing methods, and survey the attempts of constructing of su- percompilers.

Certifying Supercompilation for Martin-Löf's Type Theory

The paper describes the design and implementation of a certifying supercompiler TT Lite SC, which takes an input program and produces a residual program and a proof of the fact that the residual

The Supercompiler SCP4: General Structure

Scp4 is a first experimental supercompiler for the real functional language Refal-5 and its principal new tool is an online analysis of global properties of folded-components of the meta-tree MTr of all potential computations.

A Program Specialization Relation Based on Supercompilation and its Properties

An input-output relation for a wide class of program special- izers for a simple functional language in the form of Natural Semantics inference rules is presented, which covers polygenetic specialization and generalizes the author's previous paper on specification of monogenetic specialization.

A Scala framework for supercompilation

A framework that can be used for experimenting with supercompilation techniques and allows supercompilers to be constructed directly from an interpreter, which is demonstrated by implementing a supercompiler for JavaScript.

An Interactive Specializer Based on Partial Evaluation for a Java Subset

It is proposed that the task of specialization requires much greater human involvement into the specialization process, the analysis of its results and conducting computer experiments than in the case of common program optimization in compilers.

Verification as Specialization of Interpreters with Respect to Data

The technique of verification via supercompliation is explained taking as an example verification of the parameterised Load Balancing Monitor system and a new type of non-determinism is involved in the protocol, which has been covered yet in previous applications of the technique.

Supercompilation for Martin-Lof’s type theory

This paper describes the design and implementation of a TT Lite certifying supercompiler, which transforms a source program into a pair consisting of a residual program and a proof that the residual

TT Lite: a supercompiler for Martin-Löf's type theory

Roughly speaking, the existing supercompilers can be divided into two large groups:optimizing" superCompilers that try to make programs morecient, andanalyzing super compilers that are meant for revealing and proving some hidden properties of programs, in order to makeprograms more suitable forsequent analysis and/or veri cation.



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.

Correct and optimal implementations of recursion in a simple programming language

This paper describes an implementation of recursion which is both correct and optimal in a general class of sequential languages, and therefore constitutes an attractive alternative to both “ call-by-name” and “call- by-value”.

An experiment in partial evaluation: the generation of a compiler generator

A running, non-trivial partial evaluator is described, which is the first which has been used in practice to transform interpreters into corresponding stand-alone compilers, or to generate a compile r generator by transforming itself.

Compiler generation from denotational semantics

Two flow analytic optimization methods are described for generating provably correct compilers from denotational definitions of programming languages to determine runtime properties of object programs in general which a compiler can use to produce less redundant STMs.

A lazy evaluator

A different way to execute pure LISP programs is presented. It delays the evaluation of parameters and list structures without ever having to perform more evaluation steps than the usual method.

A Transformation System for Developing Recursive Programs

A system of rules for transforming programs is described, with the programs in the form of recursion equations. An initially very simple, lucid, and hopefully correct program is transformed into a

Parital Computation of Programs

  • Y. Futamura
  • Computer Science
    RIMS Symposium on Software Science and Engineering
  • 1982
The formal theory of partial computation, technical problems in making it practical, and its future research problems are discussed.

Semantics-Directed Compiler Generation

  • N. Jones
  • Computer Science
    Lecture Notes in Computer Science
  • 1980
This book will not become a unity of the way for you to get amazing benefits at all, but it will serve something that will let you get the best time and moment to spend for reading the book.