Results 1  10
of
12
Partial polymorphic type inference and higherorder unification
 IN PROCEEDINGS OF THE 1988 ACM CONFERENCE ON LISP AND FUNCTIONAL PROGRAMMING, ACM
, 1988
"... We show that the problem of partial type inference in the nthborder polymorphic Xcalculus is equivalent to nthorder unification. On the one hand, this means that partial type inference in polymorphic Xcalculi of order 2 or higher is undecidable. On the other hand, higherorder unification is oft ..."
Abstract

Cited by 88 (8 self)
 Add to MetaCart
We show that the problem of partial type inference in the nthborder polymorphic Xcalculus is equivalent to nthorder unification. On the one hand, this means that partial type inference in polymorphic Xcalculi of order 2 or higher is undecidable. On the other hand, higherorder unification is often tractable in practice, and our translation entails a very useful algorithm for partial type inference in the worder polymorphic Xcalculus. We present an implementation in AProlog in full.
Elf: A Language for Logic Definition and Verified Metaprogramming
 In Fourth Annual Symposium on Logic in Computer Science
, 1989
"... We describe Elf, a metalanguage for proof manipulation environments that are independent of any particular logical system. Elf is intended for metaprograms such as theorem provers, proof transformers, or type inference programs for programming languages with complex type systems. Elf unifies logic ..."
Abstract

Cited by 81 (7 self)
 Add to MetaCart
(Show Context)
We describe Elf, a metalanguage for proof manipulation environments that are independent of any particular logical system. Elf is intended for metaprograms such as theorem provers, proof transformers, or type inference programs for programming languages with complex type systems. Elf unifies logic definition (in the style of LF, the Edinburgh Logical Framework) with logic programming (in the style of Prolog). It achieves this unification by giving types an operational interpretation, much the same way that Prolog gives certain formulas (Hornclauses) an operational interpretation. Novel features of Elf include: (1) the Elf search process automatically constructs terms that can represent objectlogic proofs, and thus a program need not construct them explicitly, (2) the partial correctness of metaprograms with respect to a given logic can be expressed and proved in Elf itself, and (3) Elf exploits Elliott's unification algorithm for a calculus with dependent types. This research was...
A Notation for Lambda Terms I: A Generalization of Environments
 THEORETICAL COMPUTER SCIENCE
, 1994
"... A notation for lambda terms is described that is useful in contexts where the intensions of these terms need to be manipulated. This notation uses the scheme of de Bruijn for eliminating variable names, thus obviating ffconversion in comparing terms. This notation also provides for a class of terms ..."
Abstract

Cited by 36 (12 self)
 Add to MetaCart
A notation for lambda terms is described that is useful in contexts where the intensions of these terms need to be manipulated. This notation uses the scheme of de Bruijn for eliminating variable names, thus obviating ffconversion in comparing terms. This notation also provides for a class of terms that can encode other terms together with substitutions to be performed on them. The notion of an environment is used to realize this `delaying' of substitutions. The precise mechanism employed here is, however, more complex than the usual environment mechanism because it has to support the ability to examine subterms embedded under abstractions. The representation presented permits a ficontraction to be realized via an atomic step that generates a substitution and associated steps that percolate this substitution over the structure of a term. The operations on terms that are described also include ones for combining substitutions so that they might be performed simultaneously. Our notatio...
A Proof Procedure for the Logic of Hereditary Harrop Formulas
 JOURNAL OF AUTOMATED REASONING
, 1993
"... A proof procedure is presented for a class of formulas in intuitionistic logic. These formulas are the socalled goal formulas in the theory of hereditary Harrop formulas. Proof search inintuitionistic logic is complicated by the nonexistence of a Herbrandlike theorem for this logic: formulas cann ..."
Abstract

Cited by 34 (12 self)
 Add to MetaCart
(Show Context)
A proof procedure is presented for a class of formulas in intuitionistic logic. These formulas are the socalled goal formulas in the theory of hereditary Harrop formulas. Proof search inintuitionistic logic is complicated by the nonexistence of a Herbrandlike theorem for this logic: formulas cannot in general be preprocessed into a form such as the clausal form and the construction of a proof is often sensitive to the order in which the connectives and quantifiers are analyzed. An interesting aspect of the formulas we consider here is that this analysis can be carried out in a relatively controlled manner in their context. In particular, the task of finding a proof can be reduced to one of demonstrating that a formula follows from a set of assumptions with the next step in this process being determined by the structure of the conclusion formula. An acceptable implementation of this observation must utilize unification. However, since our formulas may contain universal and existential quantifiers in mixed order, care must be exercised to ensure the correctness of unification. One way of realizing this requirement involves labelling constants and variables and then using these labels to constrain unification. This form of unification is presented and used in a proof procedure for goal formulas in a firstorder version of hereditary Harrop formulas. Modifications to this procedure for the relevant formulas in a higherorder logic are also described. The proof procedure that we present has a practical value in that it provides the basis for an implementation of the logic programming language lambdaProlog.
Extensions and Applications of Higherorder Unification
, 1990
"... ... unification problems. Then, in this framework, we develop a new unification algorithm for acalculus with dependent function (II) types. This algorithm is especially useful as it provides for mechanization in the very expressive Logical Framework (LF). The development (objectlanguages). The ric ..."
Abstract

Cited by 27 (1 self)
 Add to MetaCart
(Show Context)
... unification problems. Then, in this framework, we develop a new unification algorithm for acalculus with dependent function (II) types. This algorithm is especially useful as it provides for mechanization in the very expressive Logical Framework (LF). The development (objectlanguages). The rich structure of a typedcalculus,asopposedtotraditional,rst generalideaistouseacalculusasametalanguageforrepresentingvariousotherlanguages thelattercase,thealgorithmisincomplete,thoughstillquiteusefulinpractice. Thelastpartofthedissertationprovidesexamplesoftheusefulnessofthealgorithms.The algorithmrstfordependentproduct()types,andsecondforimplicitpolymorphism.In involvessignicantcomplicationsnotarisingHuet'scorrespondingalgorithmforthesimply orderabstractsyntaxtrees,allowsustoexpressrules,e.g.,programtransformationand typedcalculus,primarilybecauseitmustdealwithilltypedterms.Wethenextendthis Wecanthenuseunicationinthemetalanguagetomechanizeapplicationoftheserules.
Higherorder Unification with Dependent Function Types
 3rd Int. Conf. Rewriting Techniques and Applications, LNCS 355
, 1989
"... Roughly fifteen years ago, Huet developed a complete semidecision algorithm for unification in the simply typed calculus ( ! ). In spite of the undecidability of this problem, his algorithm is quite usable in practice. Since then, many important applications have come about in such areas as theorem ..."
Abstract

Cited by 17 (0 self)
 Add to MetaCart
(Show Context)
Roughly fifteen years ago, Huet developed a complete semidecision algorithm for unification in the simply typed calculus ( ! ). In spite of the undecidability of this problem, his algorithm is quite usable in practice. Since then, many important applications have come about in such areas as theorem proving, type inference, program transformation, and machine learning. Another development is the discovery that by enriching ! to include dependent function types, the resulting calculus ( \Pi ) forms the basis of a very elegant and expressive Logical Framework, encompassing the syntax, rules, and proofs for a wide class of logics. This paper presents an algorithm in the spirit of Huet's, for unification in \Pi . This algorithm gives us the best of both worlds: the automation previously possible in ! , and the greatly enriched expressive power of \Pi . It can be used to considerable advantage in many of the current applications of Huet's algorithm, and has important new applications as w...
Implementation Considerations for HigherOrder Features in Logic Programming
, 1993
"... This paper examines implementation problems that arise from providing for aspects of higherorder programming within and enhancing the metalanguage abilities of logic programming. One issue of concern is a representation for the simplytyped lambda terms that replace the usual firstorder terms as ..."
Abstract

Cited by 14 (10 self)
 Add to MetaCart
This paper examines implementation problems that arise from providing for aspects of higherorder programming within and enhancing the metalanguage abilities of logic programming. One issue of concern is a representation for the simplytyped lambda terms that replace the usual firstorder terms as data structures; this representation must support an efficient realization of ...conversion operations on these terms. Another issue is the handling of higherorder unification that becomes an integral part of the computational model. An implementation must cater to the branching nature of this operation and also provide a means for temporarily suspending the solution of a unification problem. A final issue concerns the treatment of goals whose structure is not statically apparent. These problems are discussed in detail and solutions to them are described. A representation for lambda terms is presented that uses the de Bruijn "nameless" notation and also permits reduction substitutions to be performed lazily. This notation obviates ...conversion and also supports an efficient implementation of ...reduction. Branching in unification is implemented by using a depthfirst search strategy with backtracking. A structure that is called a branch point record and is akin to the choice point record of the Warren Abstract Machine (WAM) is described for remembering alternatives in unification. An explicit representation for unification problems is presented that permits sharing and also supports the rapid reinstatement of earlier versions of the problem. The implementation of unification is tuned to yield an efficient solution to firstorder like problems, in fact through the use of compiled code as in the WAM. A compilation method is also discussed for goals whose structure changes during execution. Th...
A Notation for Lambda Terms II: Refinements and Applications
, 1994
"... Issues that are relevant to the representation of lambda terms in contexts where their intensions have to be manipulated are examined. The basis for such a representation is provided by the suspension notation for lambda terms that is described in a companion paper. This notation obviates ffconver ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
Issues that are relevant to the representation of lambda terms in contexts where their intensions have to be manipulated are examined. The basis for such a representation is provided by the suspension notation for lambda terms that is described in a companion paper. This notation obviates ffconversion in the comparison of terms by using the `nameless' scheme of de Bruijn and also permits a delaying of substitutions by including a class of terms that encode other terms together with substitutions to be performed on them. The suspension notation contains a mechanism for `merging' substitutions so that they can be effected in a common structure traversal. The mechanism is cumbersome to implement in its full generality and a simplification to it is considered. In particular, the old merging operations are eliminated in favor of new ones that capture some of their functionality and that permit a simplified syntax for terms. The resulting notation is refined by the addition of annotations ...
Towards a formal theory of program construction
 REVUE D'INTELLIGENCE ARTIFICIELLE
, 1990
"... A unified framework for formal reasoning about programs and deductive mechanisms involved in programming is developed. Within it principal approaches to program synthesis are formally investigated. We will show that a high degree of abstraction opens a way to combine their strengths, simplifies form ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
A unified framework for formal reasoning about programs and deductive mechanisms involved in programming is developed. Within it principal approaches to program synthesis are formally investigated. We will show that a high degree of abstraction opens a way to combine their strengths, simplifies formal proofs, and leads to clearer insights into the metamathematics of program construction. All definitions and theorems are presented completely formal which allows to straightforwardly implement them with a proof system for the underlying calculus and derive verified implementations of programming methods from them.
Proof Procedures for Logic Programming
, 1994
"... Proof procedures are an essential part of logic applied to artificial intelligence tasks, and form the basis for logic programming languages. As such, many of the chapters throughout this handbook utilize, or study, proof procedures. The study of proof procedures that are useful in artificial intell ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Proof procedures are an essential part of logic applied to artificial intelligence tasks, and form the basis for logic programming languages. As such, many of the chapters throughout this handbook utilize, or study, proof procedures. The study of proof procedures that are useful in artificial intelligence would require a large book so we focus on proof procedures that relate to logic programming. We begin with the resolution procedures that influenced the definition of SLDresolution, the procedure upon which Prolog is built. Starting with the general resolution procedure we move through linear resolution to a very restricted linear resolution, SLresolution, which actually is not a resolution restriction, but a variant using an augmented logical form. (SLresolution actually is a derivative of the Model Elimination procedure, which was developed independently of resolution.) We then consider logic programming itself, reviewing SLDresolution and then describing a general criterion for ...