An Extensional Characterization of Lambda-Lifting and Lambda-Dropping

Lambda-lifting and lambda-dropping respectively transform a block-structured functional program into recursive equations and vice versa. Lambda-lifting was developed in the early 80’s, whereas lambda-dropping is more recent. Both are split into an analysis and a transformation. Published work, however, has only concentrated on the analysis parts. We focus here on the transformation parts and more precisely on their correctness, which appears never to have been proven. To this end, we define extensional versions of lambda-lifting and lambda-dropping and establish their correctness with respect to a least fixed-point semantics.

[1]  Christian N. S. Pedersen,et al.  An Improved Algorithm for RNA Secondary Structure Prediction , 1999 .

[2]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[3]  Glynn Winskel,et al.  Weak bisimulation and open maps , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[4]  Harald Ruess,et al.  Solving Bit-Vector Equations of Fixed and Non-Fixed Size , 1999 .

[5]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

[6]  Olivier Danvy,et al.  Lambda-dropping: transforming recursive equations into programs with block structure , 1997 .

[7]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[8]  William D. Clinger,et al.  Lambda, the ultimate label or a simple optimizing compiler for Scheme , 1994, LFP '94.

[9]  Olivier Danvy An Extensional Characterization of Lambda-Lifting and Lambda-Dropping , 1998 .

[10]  U. Schultz Implicit and Explicit Aspects of Scope and Block Structure , 1997 .

[11]  Charles Consel,et al.  A tour of Schism: a partial evaluation system for higher-order applicative languages , 1993, PEPM '93.

[12]  Christian N. S. Pedersen,et al.  Protein Folding in the 2D HP Model , 1999 .

[13]  Simon L. Peyton Jones,et al.  Let-floating: moving bindings to give faster programs , 1996, ICFP '96.

[14]  Olivier Danvy,et al.  Lambda-dropping: transforming recursive equations into programs with block structure , 2000, Theor. Comput. Sci..

[15]  G. Winskel The formal semantics of programming languages , 1993 .

[16]  Ulrich Kohlenbach A note on Spector's quantifier-free rule of extensionality , 2001, Arch. Math. Log..

[17]  Mogens Nielsen,et al.  Hereditary History Preserving Bisimilarity Is Undecidable , 1999, STACS.