A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
An efficient context-free parsing algorithm
Communications of the ACM
High level operations in automatic programming
Proceedings of the ACM SIGPLAN symposium on Very high level languages
Goal-directed program transformation
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
Expression procedures and program derivation
Expression procedures and program derivation
Mechanical translation of set theoretic problem specifications into efficient RAM code-A case study
Journal of Symbolic Computation
Transformational derivation of programs using the focus system
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Total correctness by local improvement in program transformation
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
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Rules and strategies for transforming functional and logic programs
ACM Computing Surveys (CSUR)
Partial evaluation of functional logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
From recursion to iteration: what are the optimizations?
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Program optimization using indexed and recursive data structures
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Compilers and staging transformations
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Transformational programming: applications to algorithms and systems
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automatic Accurate Cost-Bound Analysis for High-Level Languages
IEEE Transactions on Computers
IEEE Transactions on Software Engineering
Dynamic Programming via Static Incrementalization
Higher-Order and Symbolic Computation
Dynamic Programming via Static Incrementalization
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
An Automatic Composition Algorithm for Functional Logic Programs
SOFSEM '00 Proceedings of the 27th Conference on Current Trends in Theory and Practice of Informatics
Listlessness is better than laziness: Lazy evaluation and garbage collection at compile-time
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A powerful strategy for deriving efficient programs by transformation
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Toward an algebra of nondeterministic programs
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Applicative style programming, program transformation, and list operators
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
The essence of computation
Rules + strategies for transforming lazy functional logic programs
Theoretical Computer Science
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
Hi-index | 0.00 |
We investigate the specialization of programs by means of program transformation techniques. There are two goals of this investigation: the construction of program synthesis tools, and a better understanding of the development of algorithms.By extending an ordinary language of recursion equations to include a generalized procedure construct (the expression procedure), our ability to manipulate programs in that language is greatly enhanced. The expression procedure provides a means of expressing information not just about the properties of individual program elements, but also about the way they relate to each other.A set of four operations for transforming programs in this extended language is presented. These operations, unlike the transformation rules of Burstall and Darlington and of Manna and Waldinger, preserve the strong equivalence of programs.This set of operations forms the basis of a general-purpose specialization technique for recursive programs. The practical value of this technique has been demonstrated in the systematic development of many programs, including several context-free parsing algorithms. We outline here the development of Earley's algorithm by specialization.This paper is an informal exposition of part of the results of the author's Ph.D. thesis [Scherlis80].