Results 1  10
of
25
Higherorder Unification via Explicit Substitutions (Extended Abstract)
 Proceedings of LICS'95
, 1995
"... Higherorder unification is equational unification for βηconversion. But it is not firstorder equational unification, as substitution has to avoid capture. In this paper higherorder unification is reduced to firstorder equational unification in a suitable theory: the &lambda ..."
Abstract

Cited by 102 (13 self)
 Add to MetaCart
Higherorder unification is equational unification for &beta;&eta;conversion. But it is not firstorder equational unification, as substitution has to avoid capture. In this paper higherorder unification is reduced to firstorder equational unification in a suitable theory: the &lambda;&sigma;calculus of explicit substitutions.
Compiler Construction in Higher Order Logic Programming
 In Practical Aspects of Declarative Languages
, 2002
"... This paper describes a general method of compiler implementation using higher order abstract syntax and logic programming. A working compiler written in Prolog is used to demonstrate this method. ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
This paper describes a general method of compiler implementation using higher order abstract syntax and logic programming. A working compiler written in Prolog is used to demonstrate this method.
Tradeoffs in the Intensional Representation of Lambda Terms
 Rewriting Techniques and Applications (RTA 2002), volume 2378 of LNCS
, 2002
"... Higherorder representations of objects such as programs, specifications and proofs are important to many metaprogramming and symbolic computation tasks. Systems that support such representations often depend on the implementation of an intensional view of the terms of suitable typed lambda calculi. ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
Higherorder representations of objects such as programs, specifications and proofs are important to many metaprogramming and symbolic computation tasks. Systems that support such representations often depend on the implementation of an intensional view of the terms of suitable typed lambda calculi. Refined lambda calculus notations have been proposed that can be used in realizing such implementations. There are, however, choices in the actual deployment of such notations whose practical consequences are not well understood. Towards addressing this lacuna, the impact of three specific ideas is examined: the de Bruijn representation of bound variables, the explicit encoding of substitutions in terms and the annotation of terms to indicate their independence on external abstractions. Qualitative assessments are complemented by experiments over actual computations using the lambdaProlog language.
Comparing and Implementing Calculi of Explicit Substitutions with Eta Reduction
 Annals of Pure and Applied Logic
, 2005
"... The past decade has seen an explosion of work on calculi of explicit substitutions. Numerous work has illustrated the usefulness of these calculi for practical notions like the implementation of typed functional programming languages and higher order proof assistants. It has also been shown that e ..."
Abstract

Cited by 10 (8 self)
 Add to MetaCart
The past decade has seen an explosion of work on calculi of explicit substitutions. Numerous work has illustrated the usefulness of these calculi for practical notions like the implementation of typed functional programming languages and higher order proof assistants. It has also been shown that eta reduction is useful for adapting substitution calculi for practical problems like higher order uni cation. This paper concentrates on rewrite rules for eta reduction in three dierent styles of explicit substitution calculi: , se and the suspension calculus. Both and se when extended with eta reduction, have proved useful for solving higher order uni cation. We enlarge the suspension calculus with an adequate etareduction which we show to preserve termination and conuence of the associated substitution calculus and to correspond to the etareductions of the other two calculi. We prove that and se as well as and the suspension calculus are non comparable while se is more adequate than the suspension calculus in simulating one step of betacontraction.
Choices in representation and reduction strategies for lambda terms in intensional contexts
 J. Autom. Reasoning
, 2004
"... ..."
A Treatment of HigherOrder Features in Logic Programming
, 2003
"... The logic programming paradigm provides the basis for a new intensional view of higherorder notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
The logic programming paradigm provides the basis for a new intensional view of higherorder notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions have important metaprogramming applications but they also pose nontrivial implementation problems. One issue concerns the machine representation of lambda terms suitable to their intended use: an adequate encoding must facilitate comparison operations over terms in addition to supporting the usual reduction computation. Another aspect relates to the treatment of a unification operation that has a branching character and that sometimes calls for the delaying of the solution of unification problems. A final issue concerns the execution of goals whose structures becomes apparent only in the course of computation. These various problems are exposed in this paper and solutions to them are described. A satisfactory representation for lambda terms is developed by exploiting the nameless notation of de Bruijn as well as explicit encodings of substitutions. Special mechanisms are molded into the structure of traditional Prolog implementations to support branching in unification and carrying of unication problems over other computation steps; a premium is placed in this context on exploiting determinism and on emulating usual firstorder behaviour. An extended compilation model is presented that treats higherorder unification and also handles dynamically emergent goals. The ideas described here have been employed in the Teyjus implementation of the Prolog language, a fact that is used to obtain a preliminary assessment of their efficacy.
Explicit Substitutions and All That
, 2000
"... Explicit substitution calculi are extensions of the lambdacalculus where the substitution mechanism is internalized into the theory. This feature makes them suitable for implementation and theoretical study of logic based tools as strongly typed programming languages and proof assistant systems. In ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
Explicit substitution calculi are extensions of the lambdacalculus where the substitution mechanism is internalized into the theory. This feature makes them suitable for implementation and theoretical study of logic based tools as strongly typed programming languages and proof assistant systems. In this paper we explore new developments on two of the most successful styles of explicit substitution calculi: the lambdasigma and lambda_secalculi.
A Lambda Term Representation Inspired by Linear Ordered Logic
"... We introduce a new nameless representation of lambda terms inspired by ordered logic. At a lambda abstraction, number and relative position of all occurrences of the bound variable are stored, and application carries the additional information where to cut the variable context into function and argu ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We introduce a new nameless representation of lambda terms inspired by ordered logic. At a lambda abstraction, number and relative position of all occurrences of the bound variable are stored, and application carries the additional information where to cut the variable context into function and argument part. This way, complete information about free variable occurrence is available at each subterm without requiring a traversal, and environments can be kept exact such that they only assign values to variables that actually occur in the associated term. Our approach avoids space leaks in interpreters that build function closures. In this article, we prove correctness of the new representation and present an experimental evaluation of its performance in a proof checker for the Edinburgh Logical Framework.
SUBSEXPL: A Tool for Simulating and Comparing Explicit Substitutions Calculi ⋆
"... Abstract. We present the system SUBSEXPL used for simulating and comparing explicit substitutions calculi. The system allows the manipulation of expressions of the λcalculus and of three different styles of explicit substitutions: the λσ, the λse and the suspension calculus. Implementations of the ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. We present the system SUBSEXPL used for simulating and comparing explicit substitutions calculi. The system allows the manipulation of expressions of the λcalculus and of three different styles of explicit substitutions: the λσ, the λse and the suspension calculus. Implementations of the ηreduction are provided for each calculi. Other explicit substitutions calculi can be incorporated into the system easily due to its modular structure. Its applications include: the visualisation of the contractions of the λcalculus, and of guided onestep reductions as well as normalisation via each of the associated substitution calculi. Many useful facilities are available: reductions can be easily recorded and stored into files or Latex outputs and several examples for dealing with arithmetic operations and computational operators such as conditionals and repetitions in the λcalculus are available. The system has been of great help for systematically comparing explicit substitutions calculi, as well as for understanding properties of explicit substitutions such as the Preservation of Strong Normalisation. In addition, it has been used for teaching basic properties of the λcalculus such as: computational adequacy, the importance of de Bruijn’s notation and of making explicit substitutions in real implementations.