Efficient self-interpretation in lambda calculus

We start by giving a compact representation schema for λ-terms, and show how this leads to an exceedingly small and elegant self-interpreter. We then define the notion of a self-reducer , and show how this too can be written as a small λ-term. Both the self-interpreter and the self-reducer are proved correct. We finally give a constructive proof for the second fixed point theorem for the representation schema. All the constructions have been implemented on a computer, and experiments verify their correctness. Timings show that the self-interpreter and self-reducer are quite efficient, being about 35 and 50 times slower than direct execution using a call-by-need reductions strategy

[1]  Peter Lee,et al.  Metacircularity in the Polymorphic lambda-Calculus , 1991, Theor. Comput. Sci..

[2]  Henk Barendregt,et al.  Theoretical Pearls: Self-interpretation in lambda calculus , 1991, Journal of Functional Programming.

[3]  Ulrich Berger,et al.  An inverse of the evaluation functional for typed lambda -calculus , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[4]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[5]  Jørgen Steensgaard-Madsen,et al.  Typed representation of objects by functions , 1989, TOPL.

[6]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[7]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[8]  Henk Barendregt,et al.  Self-interpretation in lambda calculus , 1991 .