Three Syntactic Theories for Combinatory Graph Reduction

We present a purely syntactic theory of graph reduction for the canonical combinators S, K, and I, where graph vertices are represented with evaluation contexts and let expressions. We express this syntactic theory as a reduction semantics. We then factor out the introduction of let expressions to denote as many graph vertices as possible upfront instead of on demand, resulting in a second syntactic theory, this one of term graphs in the sense of Barendregt et al. We then interpret let expressions as operations over a global store (thus shifting, in Strachey's words, from denotable entities to storable entities), resulting in a third syntactic theory, which we express as a reduction semantics. This store-based reduction semantics corresponds to a store-based abstract machine whose architecture coincides with that of Turner's original reduction machine. The three syntactic theories presented here therefore properly account for combinatory graph reduction As We Know It.

[1]  Marko C. J. D. van Eekelen,et al.  Functional Programming and Parallel Graph Rewriting , 1993 .

[2]  Olivier Danvy,et al.  Defunctionalization at work , 2001, PPDP '01.

[3]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

[4]  Zena M. Ariola,et al.  Properties of a First-Order Functional Language with Sharing , 1995, Theor. Comput. Sci..

[5]  Pieter Koopman,et al.  Functional programs as executable specifications , 1990 .

[6]  Simon Peyton Jones,et al.  The Implementation of Functional Programming Languages (Prentice-hall International Series in Computer Science) , 1987 .

[7]  Olivier Danvy,et al.  A Functional Correspondence between Evaluators and Abstract Machines , 2003 .

[8]  Olivier Danvy,et al.  A computational formalization for partial evaluation , 1996, Mathematical Structures in Computer Science.

[9]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[10]  Masahito Hasegawa,et al.  Small-step and big-step semantics for call-by-need , 2009, J. Funct. Program..

[11]  Olivier Danvy,et al.  On the equivalence between small-step and big-step abstract machines: a simple application of lightweight fusion , 2007, Inf. Process. Lett..

[12]  Ian Zerny,et al.  On Graph Rewriting, Reduction and Evaluation , 2009, Trends in Functional Programming.

[13]  Alan Jeffrey,et al.  A fully abstract semantics for concurrent graph reduction , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[14]  Marko C. J. D. van Eekelen,et al.  Term Graph Rewriting , 1987, PARLE.

[15]  Matthias Felleisen,et al.  The call-by-need lambda calculus , 1997, Journal of Functional Programming.

[16]  Zena M. Ariola,et al.  Equational Term Graph Rewriting , 1996, Fundam. Informaticae.

[17]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[18]  Martin Odersky,et al.  The call-by-need lambda calculus , 1998, Journal of Functional Programming.

[19]  Lasse R. Nielsen,et al.  Refocusing in Reduction Semantics , 2004 .

[20]  Haskell B. Curry,et al.  Apparent Variables From the Standpoint of Combinatory Logic , 1933 .

[21]  Stefan Blom,et al.  Term Graph Rewriting. Syntax and semantics , 2001 .

[22]  Olivier Danvy From Reduction-Based to Reduction-Free Normalization , 2008, Advanced Functional Programming.

[23]  George Angelos Papadopoulos,et al.  Dactl: an experimental graph rewriting language , 1990, J. Program. Lang..

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

[25]  Matthias Felleisen,et al.  A call-by-need lambda calculus , 1995, POPL '95.

[26]  Harry G. Mairson,et al.  On global dynamics of optimal graph reduction , 1997, ICFP '97.

[27]  Olivier Danvy Defunctionalized interpreters for programming languages , 2008, ICFP 2008.

[28]  Olivier Danvy,et al.  A generic account of continuation-passing styles , 1994, POPL '94.

[29]  Amr Sabry,et al.  Lazy evaluation and delimited control , 2009, POPL '09.

[30]  Olivier Danvy,et al.  Defunctionalized Interpreters for Call-by-Need Evaluation , 2010, FLOPS.