Parameterized partial evaluation

Besides specializing programs with respect to concrete values, it is often necessary to specialize programs with respect to abstract values, i.e., static properties such as signs, ranges, and types. Specializing programs with respect to static properties is a natural extension of partial evaluation and significantly contributes towards adapting partial evaluation to larger varieties of applications. This idea was first investigated by Haraldsson [14] and carried out in practice with a system called Redfun in the late seventies. This system partially evaluates Interlisp programs. It manipulates symbolic values such as data types to describe the possible values of a variable and a processed expression. Although the work on Redfun certainly started in the right direction, it has some limitations: (1) the static properties cannot be defined by the user; they are fixed; (2) the approach is not formally defined: no safety condition for the definition of symbolic values, no finiteness criteria for fixpoint iteration, etc.; and (3) because Redfun is an on-line partial evaluator—the treatment of the

[1]  Neil D. Jones,et al.  Mix: A self-applicable partial evaluator for experiments in compiler generation , 1989, LISP Symb. Comput..

[2]  Anders Bondorf,et al.  Automatic Autoprojection of Higher Order Recursive Equations , 1990, Sci. Comput. Program..

[3]  Anders Haraldsson,et al.  On compiling embedded languages in LISP , 1980, LISP Conference.

[4]  Erik Ruf,et al.  Automatic Online Partial Evaluation , 1991, FPCA.

[5]  Peter Sestoft,et al.  The structure of a self-applicable partial evaluator , 1985, Programs as Data Objects.

[6]  Paul Hudak,et al.  A collecting interpretation of expressions , 1988, POPL '88.

[7]  Akihiko Takano Generalized partial computation for a lazy functional language , 1991 .

[8]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation , 1987 .

[9]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

[10]  Siau-Cheng Khoo,et al.  Parameterized partial evaluation , 1993, TOPL.

[11]  Harald Ganzinger,et al.  Programs as Data Objects , 1986, Lecture Notes in Computer Science.

[12]  Flemming Nielson,et al.  Two-Level Semantics and Abstract Interpretation , 1989, Theor. Comput. Sci..

[13]  Charles Consel Analyse de programmes, evaluation partielle et generation de compilateurs , 1989 .

[14]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[15]  P. Hudak,et al.  A Collecting Interpretation of Expressions (Without Powerdomains). , 1988 .

[16]  Samson Abramsky,et al.  Abstract Interpretation, Logical Relations and Kan Extensions , 1990, J. Log. Comput..

[17]  Anders Haraldsson A program manipulation system based on partial evaluation , 1977 .

[18]  R. Schooler,et al.  PARTIAL EVALUATION AS A MEANS OF LANGUAGE EXTENSIBILITY , 1984 .

[19]  David A. Schmidt,et al.  Denotationaisemantics: a methodology for language development , 1986 .

[20]  Erik Ruf,et al.  Computing Types During Program Specialization , 1990 .

[21]  Charles Consel,et al.  Binding time analysis for high order untyped functional languages , 1990, LISP and Functional Programming.

[22]  Paul Hudak,et al.  Higher-order strictness analysis in untyped lambda calculus , 1986, POPL '86.

[23]  Andrew A. Berlin,et al.  Partial evaluation applied to numerical computation , 1990, LISP and Functional Programming.

[24]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.