Learn More
This paper presents a termination technique for positive supercompilation, based on notions from term algebra. The technique is not particularily biased towards positive supercompilation, but also works for deforestation and partial evaluation. It appears to be well suited for partial deduction too. The technique guarantees termination, yet it is not overly(More)
The principles of reversible programming languages are explicated and illustrated with reference to the design of a high-level imperative language, Janus. The fundamental properties for such languages include backward as well as forward determinism and reversible updates of data. The unique design features of the language include explicit post-condition(More)
We study four transformation methodologies which are automatic instances of Burstall and Darlington's fold/unfold framework: partial evaluation, deforestation, supercompilation, and generalized partial computation (GPC). One can classify these and other fold/unfold based transformers by how much information they maintain during transformation. We introduce(More)
We introduce the notion of a perfect process tree as a model for the full propagation of informa tion in metacomputation. Starting with constant propagation we construct step-by-step the driving mechanism used in super-compila tion which ensures the perfect propagation of information. The concept of a simple supercompil er based on perfect driving coupled(More)
Partial deduction in the Lloyd-Shepherdson framework cannot achieve certain optimisations which are possible by unfold/fold transformations. We introduce conjunctive partial deduction, an extension of partial deduction accommodating such optimisations, e.g., tupling and deforestation. We rst present a framework for conjunctive partial deduction, extending(More)
We describe generative programming, an approach to generating customized programming components or systems, and active libraries , which are based on this approach. In contrast to conventional libraries, active libraries may contain metaprograms that implement domain specific code generation, optimizations, debugging, profiling and testing. Several working(More)