Goal-Directed Program Transformation

Program development often proceeds by transforming simple, clear programs into complex, involuted, but more efficient ones. This paper examines ways this process can be rendered more systematic. We show how analysis of program performance, partial evaluation of functions, and abstraction of recursive function definitions from recurring subgoals can be combined to yield many global transformations in a methodical fashion. Examples are drawn from compiler optimization, list processing, very high-evel languages, and APL execution.

[1]  J. Earley High level operations in automatic programming , 1974, SIGPLAN Symposium on Very High Level Languages.

[2]  Erik Sandewall,et al.  A Partial Evaluator, and its Use as a Programming Tool , 1976, Artif. Intell..

[3]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[4]  Jean Vuillemin,et al.  Correct and optimal implementations of recursion in a simple programming language , 1973, J. Comput. Syst. Sci..

[5]  Jean Vuillemin Correct and Optimal Implementations of Recursion in a Simple Programming Language , 1974, J. Comput. Syst. Sci..

[6]  Zohar Manna,et al.  Knowledge and Reasoning in Program Synthesis , 1974, IJCAI.

[7]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[8]  Erik Sandewall A Programming Tool for Management of a Predicate-Calculus-Oriented Data Base , 1971, IJCAI.

[9]  Richard C. T. Lee,et al.  Symbolic logic and mechanical theorem proving , 1973, Computer science classics.

[10]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[11]  J. T. Schwartz Automatic and semiautomatic optimization of SETL , 1974 .

[12]  Jacques Cohen,et al.  Two languages for estimating program efficiency , 1974, Commun. ACM.

[13]  Ben Wegbreit,et al.  Mechanical program analysis , 1975, CACM.

[14]  John Darlington,et al.  Some transformations for developing recursive programs , 1975, Reliable Software.

[15]  Susan L. Gerhart,et al.  Correctness-preserving program transformations , 1975, POPL '75.

[16]  Philip S. Abrams,et al.  An APL machine , 1970 .

[17]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.