The Suspension Notation for Lambda Terms and its Use in Metalanguage Implementations

Abstract Many metalanguages and logical frameworks have emerged in recent years that use the terms of the lambda calculus as data structures. A common set of questions govern the suitability of a representation for lambda terms in the implementation of such systems: α-convertibility must be easily recognizable, sharing in reduction steps, term traversal and term structure must be possible, comparison and unification operations should be efficiently supported and it should be possible to examine terms embedded inside abstractions. Explicit substitution notations for lambda calculi provide a basis for realizing such requirements. We discuss here the issues related to using one such notation—the suspension notation of Nadathur and Wilson—in this capacity. This notation has been used in two significant practical systems: the Standard ML of New Jersey compiler and the Teyjus implementation of λ-Prolog. We expose the theoretical properties of this notation, highlight pragmatic considerations in its use in implementing operations such as reduction and unification and discuss its relationship to other explicit substitution notations.

[1]  René David,et al.  A lambda-calculus with explicit weakening and explicit substitution , 2001, Math. Struct. Comput. Sci..

[2]  Pierre Lescanne,et al.  λν, a calculus of explicit substitutions which preserves strong normalisation , 1996, Journal of Functional Programming.

[3]  Zhong Shao,et al.  Implementing typed intermediate languages , 1998, ICFP '98.

[4]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[5]  Gérard P. Huet,et al.  A Unification Algorithm for Typed lambda-Calculus , 1975, Theor. Comput. Sci..

[6]  Martín Abadi,et al.  Explicit substitutions , 1989, POPL '90.

[7]  Claude Kirchner,et al.  Higher Order Unification via Explicit Substitutions , 2000, Inf. Comput..

[8]  Gopalan Nadathur,et al.  System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of lambda-Prolog , 1999, CADE.

[9]  Gopalan Nadathur,et al.  Tradeoffs in the Intensional Representation of Lambda Terms , 2002, RTA.

[10]  Fairouz Kamareddine,et al.  Extending a lambda-Calculus with Explicit Substitution which Preserves Strong Normalisation Into a Confluent Calculus on Open Terms , 1997, J. Funct. Program..

[11]  Dale Miller,et al.  A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification , 1991, J. Log. Comput..

[12]  de Ng Dick Bruijn,et al.  Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[13]  Gopalan Nadathur,et al.  A Notation for Lambda Terms: A Generalization of Environments , 1998, Theor. Comput. Sci..

[14]  Bruno Guillaume The λ s e -calculus does not preserve strong normalisation , 2000 .

[15]  Gopalan Nadathur,et al.  System description : Teyjus : A compiler and abstract machine based implementation of λprolog , 1999 .

[16]  Paul-André Melliès Typed lambda-calculi with explicit substitutions may not terminate , 1995, TLCA.