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
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Preservation of stronger equivalence in unfold/fold logic program transformation
Theoretical Computer Science - Special issue on the international conference on fifth generation computer systems. Tokyo, 1988
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
Unfold/fold transformation of stratified programs
Theoretical Computer Science
Co-induction in relational semantics
Theoretical Computer Science
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 call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Higher-order expression procedures
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Program Transformation Systems
ACM Computing Surveys (CSUR)
Communications of the ACM
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
Proving the Correctness of Recursion-Based Automatic Program Transformations
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
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
Super-combinators a new implementation method for applicative languages
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Expression procedures and program derivation
Expression procedures and program derivation
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Future directions in program transformation
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Constraints to stop higher-order deforestation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From SOS rules to proof principles: an operational metatheory for functional languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cheap eagerness: speculative evaluation in a lazy functional language
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Possibilities and limitations of call-by-need space improvement
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Using circular programs to deforest in accumulating parameters
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Measuring the Effectiveness of Partial Evaluation in Functional Logic Languages
LOPSTR '00 Selected Papers form the 10th International Workshop on Logic Based Program Synthesis and Transformation
On Deforesting Parameters of Accumulating Maps
LOPSTR '01 Selected papers from the 11th International Workshop on Logic Based Program Synthesis and Transformation
Guaranteed Optimization: Proving Nullspace Properties of Compilers
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Conditions for Efficiency Improvement by Tree Transducer Composition
RTA '02 Proceedings of the 13th International Conference on Rewriting Techniques and Applications
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Rules + strategies for transforming lazy functional logic programs
Theoretical Computer Science
A framework for the integration of partial evaluation and abstract interpretation of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
An unfold/fold transformation framework for definite logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using Circular Programs to Deforest in Accumulating Parameters
Higher-Order and Symbolic Computation
Transformations of logic programs with goals as arguments
Theory and Practice of Logic Programming
Relating models of backtracking
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Transformation Rules and Strategies for Functional-Logic Programs: Thesis
AI Communications - CASC
Infinite Unfolding and Transformations of Nondeterministic Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Distillation: extracting the essence of programs
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Totally correct logic program transformations via well-founded annotations
Higher-Order and Symbolic Computation
Behavioural Theory at Work: Program Transformations in a Service-Centred Calculus
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Optimizing Fuzzy Logic Programs by Unfolding, Aggregation and Folding
Electronic Notes in Theoretical Computer Science (ENTCS)
A fold/unfold transformation framework for rewrite theories extended to CCT
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Automatic correctness proofs for logic program transformations
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Data movement optimisation in point-free form
AMAST'06 Proceedings of the 11th international conference on Algebraic Methodology and Software Technology
Multi-result supercompilation as branching growth of the penultimate level in metasystem transitions
PSI'11 Proceedings of the 8th international conference on Perspectives of System Informatics
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Infinite Unfolding and Transformations of Nondeterministic Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Determinization of conditional term rewriting systems
Theoretical Computer Science
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 article 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 nonstrict) including lazy data structures. The main technical result is an improvement theorem which says that if the local transformation steps are guided by certain optimization concerns (a fairly natural condition for a transformation), then correctness of the transformation follows. The improvement theorem makes essential use of a formalized 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, and 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.