MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  A fine-grained notation for lambda terms and its use in intensional operations (1999) [20 citations — 9 self]

Download:
Download as a PDF | Download as a PS
by Gopalan Nadathur
Journal of Functional and Logic Programming
ftp://ftp.cs.uchicago.edu/pub/publications/tech-reports/TR-96-13.ps
Add To MetaCart

Abstract:

We discuss issues relevant to the practical use of a previously proposed notation for lambda terms in contexts where the intensions of such terms have to be manipulated. This notation uses the `nameless ' scheme of de Bruijn, includes expressions for encoding terms together with substitutions to be performed on them and contains a mechanism for combining such substitutions so that they can be effected in a common structure traversal. The combination mechanism is a general one and consequently difficult to implement. We propose a simplification to it that retains its functionality in situations that occur commonly in fi-reduction. We then describe a system for annotating terms to determine if they can be affected by substitutions generated by external fi-contractions. These annotations can lead to a conservation of space and time in implementations of reduction by permitting substitutions to be performed trivially in certain situations. The use of the resulting notation in the reduction and comparison of terms is examined. Notions of head normal forms and head reduction sequences are defined in its context and shown to be useful in equality computations. Our head reduction sequences generalize the usual ones for lambda terms so that they subsume the sequences of terms produced by a variety of graph- and environment-based reduction procedures for the lambda calculus. They can therefore be used in correctness arguments for such procedures. This fact and the efficacy of our notation are illustrated in the context of a particular reduction procedure that we present. The relevance of the present discussions to the unification of lambda terms is also outlined. 1

Citations

916 The Lambda-Calculus: its Syntax and Semantics – Barendregt - 1984
621 A formulation of the simple theory of types, The – Church - 1940
553 A framework for defining logics – Harper, Honsell, et al. - 1993
380 The calculus of constructions – Coquand, Huet - 1988
341 Explicit substitutions – Abadi, Cardelli, et al. - 1990
268 A logic programming language with lambda-abstraction, function variables, and simple unification – Miller - 1991
233 Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser Theorem – Bruijn - 1972
192 An overview of Prolog – Nadathur, Miller - 1988
179 A unification algorithm for typed *-calculus – Huet - 1975
159 Isabelle: The Next 700 Theorem Provers – Paulson - 1990
119 The categorical abstract machine – Cousineau - 1990
96 A survey of the project Automath – Bruijn - 1980
74 Higher-order unification via explicit substitutions – Dowek, Hardin, et al. - 1995
72 Resolution in type theory, The – Andrews - 1971
72 Elf: A language for logic definition and verified metaprogramming – Pfenning - 1989
71 Edinburgh LCF: a Mechanised Logic – Gordon, Milner, et al. - 1979
70 Introduction to Standard ML – Harper - 1986
60 A lazy evaluator – Henderson, Morris - 1976
49 Functional unification of higher-order patterns – Nipkow - 1993
45 On Laziness and Optimality in Lambda Interpreters: Tools for Specification and Analysis – Field - 1990
36 A representation of lambda terms suitable for operations on their intensions – Nadathur, Wilson - 1990
30 A notation for lambda terms: A generalization of environments – Nadathur, Wilson - 1998
24 Incremental reduction in the lambda calculus – Field, Teitelbaum - 1990
22 Naive reverse can be linear – Brisset, Ridoux - 1991
18 Introduction to Combinatory Logic and Lambda Calculus – Hindley, Seldin - 1986
16 Implementation considerations for higher-order features in logic programming – Nadathur, Jayaraman, et al. - 1993
7 An efficient interpreter for the lambda-calculus – Aiello, Prini - 1981
1 A notation for lambda terms: A generalization of environments. Submitted. Early version appears as – Nadathur, Wilson - 1994