# A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification

@article{Miller1991ALP,
title={A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification},
author={Dale A. Miller},
journal={J. Log. Comput.},
year={1991},
volume={1},
pages={497-536}
}
• Dale A. Miller
• Published 1991
• Mathematics, Computer Science
• J. Log. Comput.
by containing implementations of higher-order unification. In this paper, we present a logic programming language, called L),, that also contains both function variables and A-abstractions, but certain restriction are placed on occurrences of function variables. As a result, an implementation of LA does not need to implement full higher-order unification. Instead, an extension to first-order unification that respects bound variable names and scopes is all that is required. Such unification… Expand
563 Citations
A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification
This paper presents a logic programming language, called Lλ, that also contains both function variables and λ-abstractions, but certain restriction are placed on occurrences of function variables, so that an implementation of Lλ does not need to implement full higher-order unification. Expand
Predicate abstractions in higher-order logic programming
• Computer Science
• New Generation Computing
• 2009
It is shown that under certain conditions, computing with predicate abstractions does not incur any extra search space, and programs in this language can be compiled statically into efficient Prolog programs and all most general answers are still preserved. Expand
Unification of Simply Typed Lamda-Terms as Logic Programming
This paper shows that the unification of simply typed ‚-terms modulo the rules of fl- and ·-conversions can be coded as a query of the logic programming language L‚ in a natural and clear fashion. Expand
alpha-Prolog: A Logic Programming Language with Names, Binding and a-Equivalence
• Computer Science
• ICLP
• 2004
There are two well-known approaches to programming with names, binding, and equivalence up to consistent renaming: representing names and bindings as concrete identifiers in a first-order languageExpand
The Architecture of an Implementation of
1 Abstract Prolog is a logic programming language accepting a more general clause form than standard Prolog (namely hereditary Harrop formulas instead of Horn formulas) and using simply typed-termsExpand
A treatment of higher-order features in logic programming
• G. Nadathur
• Computer Science
• Theory and Practice of Logic Programming
• 2005
An extended compilation model is presented that treats higher-order unification and also handles dynamically emergent goals, and a satisfactory representation for lambda terms is developed by exploiting the nameless notation of de Bruijn as well as explicit encodings of substitutions. Expand
Logic Programming and Type Inference with the Calculus of Constructions
Because every result of execution is a term in the consistent calculus of constructions, Caledon can be considered an interactive theorem prover with a less orthogonal combination of proof search and proof checking than has previously been designed or implemented. Expand
An Implementation of the Language Lambda Prolog Organized around Higher-Order Pattern Unification
A new virtual machine and compilation based scheme for the language λProlog is developed by embedding a higher-order pattern unification algorithm due to Nadathur and Linnell within the well-known Warren Abstract Machine model for Prolog. Expand
Unification Of Simply Typed Lambda-Terms As Logic Programming MS-CIS-91-24 LINC LAB 198
The unification of simply typed λ-terms modulo the rules of ßand η-conversions is often called "higherorder" unification because of the possible presence of variables of functional type. This kind ofExpand
Implementing tactics and tacticals in a higher-order logic programming language
• A. Felty
• Computer Science
• Journal of Automated Reasoning
• 2004
It is argued that a logic programming language with a higher-order intuitionistic logic as its foundation can be used both to naturally specify and implement tactic-style theorem provers and proof systems that can integrate many diversified operations on formulas and proofs for a variety of logics. Expand

#### References

SHOWING 1-10 OF 83 REFERENCES
A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification
This paper presents a logic programming language, called Lλ, that also contains both function variables and λ-abstractions, but certain restriction are placed on occurrences of function variables, so that an implementation of Lλ does not need to implement full higher-order unification. Expand
A Logic Programming Approach to Manipulating Formulas and Programs
• Mathematics, Computer Science
• SLP
• 1987
This paper shows how a simple natural deduction theorem prover may be implemented in $\lambda$Prolog, and how some simple program transformers for a functional programming language may be written in this language. Expand
Unification of Simply Typed Lamda-Terms as Logic Programming
This paper shows that the unification of simply typed ‚-terms modulo the rules of fl- and ·-conversions can be coded as a query of the logic programming language L‚ in a natural and clear fashion. Expand
Specifying Theorem Provers in a Higher-Order Logic Programming Language
• Mathematics, Computer Science
• CADE
• 1988
An extended logic programming language where first-order terms are replaced with simply-typed λ-terms, higher-order unification replaces first- order unification, and implication and universal quantification are allowed in queries and the bodies of clauses is presented. Expand
Uses of Higher-Order Unification for Implementing Program Transformers
• Computer Science, Mathematics
• ICLP/SLP
• 1988
This paper details some properties of higher-order unification that make it suitable for analyzing program structures and presents (in λProlog) the specification of several simple program transformers together with a more involved partial evaluator. Expand
Elf: a language for logic definition and verified metaprogramming
• F. Pfenning
• Mathematics, Computer Science
• [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science
• 1989
Novel features of Elf include: the Elf search process automatically constructs terms that can represent object-logic proofs, and thus a program need not construct them explicitly; and the partial correctness of metaprograms with respect to a given logic can be expressed and proved in Elf itself. Expand
Uniform Proofs as a Foundation for Logic Programming
• Computer Science
• Ann. Pure Appl. Log.
• 1991
A proof-theoretic characterization of logical languages that form suitable bases for Prolog-like programming languages is provided and it is shown that first-order and higher-order Horn clauses with classical provability are examples of such a language. Expand
AN OVERVIEW OF PROLOG
• Mathematics
• 1988
λProlog is a logic programming language that extends Prolog by incorporating notions of higher-order functions, λ-terms, higher-order unification, polymorphic types, and mechanisms for buildingExpand
A Logical Analysis of Modules in Logic Programming
A logical language which extends the syntax of positive Horn clauses by permitting implications in goals and in the bodies of clauses is presented and it is shown how to build a Kripke-like model for programs by a fixed-point construction and shown that the operational meaning of implication is sound and complete for intuitionistic logic. Expand
Extensions and applications of higher-order unification
This dissertation explores the problem of unification in various typed $\lambda$-calculi, developing and proving the correctness and completeness of unification algorithms for various calculi withinExpand