Results 1 
7 of
7
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 168 (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.
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 35 (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.
A Constraintbased Partial Evaluator for Functional Logic Programs and its Application
, 1998
"... The aim of this work is the development and application of a partial evaluation procedure for rewritingbased functional logic programs. Functional logic programming languages unite the two main declarative programming paradigms. The rewritingbased computational model extends traditional functional ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
The aim of this work is the development and application of a partial evaluation procedure for rewritingbased functional logic programs. Functional logic programming languages unite the two main declarative programming paradigms. The rewritingbased computational model extends traditional functional programming languages by incorporating logical features, including logical variables and builtin search, into its framework. This work is the first to address the automatic specialisation of these functional logic programs. In particular, a theoretical framework for the partial evaluation of rewritingbased functional logic programs is defined and its correctness is established. Then, an algorithm is formalised which incorporates the theoretical framework for the procedure in a fully automatic technique. Constraint solving is used to represent additional information about the terms encountered during the transformation in order to improve the efficiency and size of the residual programs. ...
Analysis and Transformation of Proof Procedures
, 1994
"... Automated theorem proving has made great progress during the last few decades. Proofs of more and more difficult theorems are being found faster and faster. However, the exponential increase in the size of the search space remains for many theorem proving problems. Logic program analysis and transfo ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
Automated theorem proving has made great progress during the last few decades. Proofs of more and more difficult theorems are being found faster and faster. However, the exponential increase in the size of the search space remains for many theorem proving problems. Logic program analysis and transformation techniques have also made progress during the last few years and automated theorem proving can benefit from these techniques if they can be made applicable to general theorem proving problems. In this thesis we investigate the applicability of logic program analysis and transformation techniques to automated theorem proving. Our aim is to speed up theorem provers by avoiding useless search. This is done by detecting and deleting parts of the theorem prover and theory under consideration that are not needed for proving a given formula. The analysis and transformation techniques developed for logic programs can be applied in automated theorem proving via a programming technique called ...
ABSTRACT:
"... FPGAs are finding an increasing number of applications within NASA in deep space probes, planetary rovers and manned vehicles. Like other silicon devices, FPGAs can be damaged by high energy cosmic ray impacts, resulting in permanent latchup conditions that manifest as ‘stuckat ’ faults. Tradition ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
FPGAs are finding an increasing number of applications within NASA in deep space probes, planetary rovers and manned vehicles. Like other silicon devices, FPGAs can be damaged by high energy cosmic ray impacts, resulting in permanent latchup conditions that manifest as ‘stuckat ’ faults. Traditionally, multiple redundancy and voting logic have been employed as a workaround, particularly for high reliability, extreme environment applications. However, reconfigurable FPGAs are becoming increasingly common in flight systems, offering a potentially valuable possibility for improved levels of fault recovery – after a fault is detected and localised within an FPGA, it is feasible to reprogram the device, in flight, with an alternative, equivalent, circuit that does not depend upon the damaged portion of the chip. Designing such alternative chip layouts by hand is a valid option, though costly in terms of the manhours of effort required; a fully automated alternative would be far preferable. In this paper, a technique is presented that allows the automatic generation of FPGA configurations for fault recovery purposes by means of nonclausal SAT solver technology. 1
Bitlevel partial evaluation of synchronous circuits. In preparation, draft available at http://findatlantis.com/mypapers
, 2004
"... Partial evaluation has been known for some time to be very effective when applied to software; in this paper we demonstrate that it can also be usefully applied to hardware. We present a bitlevel algorithm that supports the partial evaluation of synchronous digital circuits. Full PE of combinationa ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Partial evaluation has been known for some time to be very effective when applied to software; in this paper we demonstrate that it can also be usefully applied to hardware. We present a bitlevel algorithm that supports the partial evaluation of synchronous digital circuits. Full PE of combinational logic is noted to be equivalent to Boolean minimisation. A loop unrolling technique, supporting both partial and full unrolling, is described. Experimental results are given, showing that partial evaluation of a simple microprocessor against a ROM image is equivalent to compiling the ROM program directly into low level hardware. 1.
Automatic Call Unfolding in a Partial Evaluator
"... Partial evaluation of a functional language may be done by specialization of functions, implemented by reduction of expressions and unfolding of function calls. Expression reduction is fairly straightforward, but it is difficult to decide when to unfold a function call and when to leave it in the pr ..."
Abstract
 Add to MetaCart
Partial evaluation of a functional language may be done by specialization of functions, implemented by reduction of expressions and unfolding of function calls. Expression reduction is fairly straightforward, but it is difficult to decide when to unfold a function call and when to leave it in the program produced by partial evaluation. A call unfolding strategy must be adopted in order to make this decision in each particular case. In the partial evaluators reported in the literature, this strategy is not formalized, and the user of a partial evaluator must guide the call unfolding by his own informal criteria. This is an obstacle to many applications of partial evaluation. In the present paper we describe a simple twophase call unfolding method which is fully automatic. The first phase is based on static call annotations, obtained by a local analysis to avoid infinite unfolding and a global analysis to avoid call duplication. The second phase does additional unfolding based on a global analysis. The method has been employed in a recent version of the partial evaluator mix, developed by Neil D. Jones, Harald S~ndergaard, and the author.