The Essence of Program Transformation by Partial Evaluation and Driving

Neil D. Jones. The Essence of Program Transformation by Partial Evaluation and Driving. In Neil D. Jones, Masami Hagiya, Masahiko Sato, editors, Logic, Language and Computation, Festschrift in Honor of Satoru Takasu. Volume 792 of Lecture Notes in Computer Science, pages 206-224, Springer, 1994. [doi]


An abstract framework is developed to describe program transformation by specializing a given program to a restricted set of inputs. Particular cases include partial evaluation [19] and Turchin’s more powerful “driving” transformation [33]. Such automatic program speedups have been seen to give quite significant speedups in practical applications. This paper’s aims are similar to those of [18]: better to understand the fundamental mathematical phenomena that make such speedups possible. The current paper is more complete than [18], since it precisely formulates correctness of code generation; and more powerful, since it includes program optimizations not achievable by simple partial evaluation. Moreover, for the first time it puts Turchin’s driving methodology on a solid semantic foundation which is not tied to any particular programming language or data structure. This paper is dedicated to Satoru Takasu with thanks for good advice early in my career on how to do research, and for insight into how to see the essential part of a new problem. This work was supported in part by the Danish Natural Science Research Council (DART project) and by an Esprit Basic Research Action (Semantique).