The concept of a supercompiler
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Unfold/fold program transformations
Algebraic methods in semantics
A syntactic theory of sequential control
Theoretical Computer Science
Communication and concurrency
Rewriting techniques for program synthesis
RTA-89 Proceedings of the 3rd international conference on Rewriting Techniques and Applications
Equality in lazy computation systems
Proceedings of the Fourth Annual Symposium on Logic in computer science
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Semantics preserving transformation rules for Prolog
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Research topics in functional programming
A self-applicable partial evaluator for the lambda calculus: correctness and pragmatics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Program improvement by internal specialization
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transforming Normal Programs by Replacement
META-92 Proceedings of the 3rd International Workshop on Meta-Programming in Logic
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Unfold/fold Transformations Preserving Termination Properties
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Transformation in a Non-Strict Language: An Approach to Instantiation
Proceedings of the 1989 Glasgow Workshop on Functional Programming
Operational Theories of Improvement in Functional Languages (Extended Abstract)
Proceedings of the 1991 Glasgow Workshop on Functional Programming
An Equivalence Preserving First Order Unfold/fold Transformation System
Proceedings of the Second International Conference on Algebraic and Logic Programming
A System for Proving Equivalences of Recursive Programs
Proceedings of the 5th Conference on Automated Deduction
Expression procedures and program derivation
Expression procedures and program derivation
Higher-order expression procedures
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Constraints to stop higher-order deforestation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Trace-Based Abstract Interpretation of Operational Semantics
Lisp and Symbolic Computation
Efficiency by Incrementalization: An Introduction
Higher-Order and Symbolic Computation
Introduction to Supercompilation
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Hi-index | 0.00 |
The goal of program transformation is to improve efficiency while preserving meaning. One of the best known transformation techniques is Burstall and Darlington's unfold-fold method. Unfortunately the unfold-fold method itself guarantees neither improvement in efficiency nor total-correctness. The correctness problem for unfold-fold is an instance of a strictly more general problem: transformation by locally equivalence-preserving steps does not necessarily preserve (global) equivalence.This paper presents a condition for the total correctness of transformations on recursive programs, which, for the first time, deals with higher-order functional languages (both strict and non-strict) including lazy data structures. The main technical result is an improvement theorem which says that if the local transformation steps are guided by certain optimisation concerns (a fairly natural condition for a transformation, then correctness of the transformation follows.The improvement theorem makes essential use of a formalised improvement-theory; as a rather pleasing corollary it also guarantees that the transformed program is a formal improvement over the original. The theorem has immediate practical consequences:• It is a powerful tool for proving the correctness of existing transformation methods for higher-order functional programs, without having to ignore crucial factors such as memoization or folding. We have applied the theorem to obtain a particularly simple proof of correctness for a higher-order variant of deforestation.• It yields a simple syntactic method for guiding and constraining the unfold/fold method in the general case so that total correctness (and improvement) is always guaranteed.