A Transformation System Combining Partial Evaluation with Term Rewriting

  title={A Transformation System Combining Partial Evaluation with Term Rewriting},
  author={Françoise Bellegarde},
This paper presents a new approach to optimizing functional programs based on combining partial evaluation and rewriting. Programs are composed of higher-order primitives. Partial evaluation is used to eliminate higher-order functions. First-order rewriting is used to process the transformation. Laws about the higher-order primitives that are relevant for optimizations are automatically extracted from a library and transformed into first-order terms using partial evaluation. Such a combination… 
8 Citations
Automatic Transformations by RewritingTechniques ?
The paper shows how term rewriting techniques can be used to automatically transform rst-order functional programs by both deforestation and tupling, and preserves termination of the original set of rules, which is not guaranteed in general by a unfold/fold method.
Automating Synthesis by Completion
This paper shows how to apply static analyses of the rewrite system in order to fully automatize program transformation by the two strategies: deforestation and tupling, which enable us to transform a larger class of programs than the current deforestation algorithms.
ASTRE: Towards a Fully Automated Program Transformation System
Astre has achieved its initial goal: it is fully automatic for deforestation and two-loops fusion of functional programs and plans to automatize derecursion tactical and automatic insertion of laws in a near future.
Higher Order Deforestation
It is shown how the original deforestation algorithm can be extended to deal with higher order functional programs and shown that the higher order deforestation algorithm will terminate if all function definitions are in higher order treeless form.
Calculating Software Generators from Solution Specifications
An automated transformation system is demonstrated that compiles practical software modules from the semantic specification of a domain-specific application design language and demonstrates the feasibility of this approach.
Termination Issues in Automated Syntheses
A set of transition rules for a full automation of a sound and terminating synthesis process which preserves orthogonality and termination of a constructor-based rewrite system is presented.
Generic Program Transformation
A program that is easy to understand often fails to be efficient, while a more efficient solution often compromises clarity.
Contribution aux relations entre les grammaires attribuées et la programmation fonctionnelle. (Contribution to the relation between attribute grammars and functional programming)
Cette technique generale peut etre appliquee sur des grammaires attribuees ou sur des programmes fonctionnels et permet de deforester des programmes pour lesquelles les methodes existantes restaient impuissantes.


Program Transformation and Rewriting
A basis for program transformation using term rewriting tools is presented, which must provide tools to prove inductive properties; to verify that enrichment produces neither junk nor confusion; and to check for ground confluence and termination.
A tour of Schism: a partial evaluation system for higher-order applicative languages
A simple module facility allowing the user to write a program in different files, and to create and use function libraries, makes it possible to split the preprocessing phase into two parts to factorize computations.
Transformational derivation of programs using the focus system
A program derivation support system called Focus is being constructed, which will formally derive programs using the paradigm of program transformation and brings about a synthesis of paradigms that were heretofore considered far apart, such as logical and executable specifications and constructive and transformational approaches toprogram derivation.
A system which automatically improves programs
Methods of mechanically converting programs that are easy to understand into more efficient ones, converting recursion equations using high level operations into lower level flowchart programs are given.
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
Mixed Computation: Potential Applications and Problems for Study
  • A. Ershov
  • Computer Science
    Theor. Comput. Sci.
  • 1982
Functional programming: executable specifications and program transformations
This paper shows how one can give a direct implementation of a constructive specification (an execuiable specification) and then show how program transformation can be used to turn this specification into an efficient version of the program, using techniques from a standard library of transformations.
Why Functional Programming Matters
This paper shows that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute significantly to modularity.
Completion and Its Applications