Results 1  10
of
20
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 λσcal ..."
Abstract

Cited by 103 (13 self)
 Add to MetaCart
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 λσ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.
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.
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.
Choices in representation and reduction strategies for lambda terms in intensional contexts
 J. Autom. Reasoning
, 2004
"... ..."
A User Guide to Bedwyr
, 2006
"... Some recent theoretical work in proof search has illustrated that it is possible to combine the following two computational principles into one computational logic. 1. A symmetric treatment of finite success and finite failure. This allows capturing both aspects of may and must behavior in operation ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Some recent theoretical work in proof search has illustrated that it is possible to combine the following two computational principles into one computational logic. 1. A symmetric treatment of finite success and finite failure. This allows capturing both aspects of may and must behavior in operational semantics and mixing model checking and logic programming. 2. Direct support for λtree syntax, as in λProlog, via termlevel λbinders, higherorder pattern unification, and the ∇quantifier. All these features have a clean proof theory. The combination of these features allow, for example, specifying rather declarative approaches to model checking syntactic expressions containing bindings. The Bedwyr system is intended as an implementation of these computational logic principles. Why the name Bedwyr? In the legend of King Arthur and the round table, several knights shared in the search for the holy grail. The name of one of them, Parsifal, is used for an INRIA team associated with the “Slimmer ” effort. Bedwyr was another one of those knights. Wikipedia (using the spelling “Bedivere”) mentions that Bedwyr appears in Monty Python and the Holy Grail where he is “portrayed as a master of the extremely odd logic in the ancient times, whom occasionally blunders. ” Bedwyr is a reimplementation and rethinking ∗ Support has been obtained for this work from the following sources: from INRIA through
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.
SUBSEXPL: A Framework for Simulating and Comparing Explicit Substitutions Calculi A Tutorial
, 2005
"... In this paper we present a framework, called SUBSEXPL, for simulating and comparing explicit substitutions calculi. This framework was developed in Ocaml, a language of the ML family, and it allows the manipulation of expressions of the λcalculus and of several styles of explicit substitutions calc ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
In this paper we present a framework, called SUBSEXPL, for simulating and comparing explicit substitutions calculi. This framework was developed in Ocaml, a language of the ML family, and it allows the manipulation of expressions of the λcalculus and of several styles of explicit substitutions calculi. Applications of this framework include: the visualisation of the contractions of the λcalculus, and of guided onestep reductions and normalisation via each of the associated substitution calculi. Many useful facilities are available: reductions can be easily recorded and stored into files, latex output and useful examples for dealing with, among other things, arithmetic operations and computational operators such as conditionals and repetitions in the λcalculus. The current implementation of SUBSEXPL includes treatment of three different calculi of explicit substitutions: the λσ, the λse and the suspension calculus; other explicit substitutions calculi can be easily incorporated into the system. An implementation of the ηreduction is provided for each of these explicit substitutions calculi. This 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 based on the λcalculus. Keywords: λCalculus, Explicit Substitutions, Visualisation of β and ηContraction and Normalisation. 1
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.