# 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} }

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

- Computer Science
- ELP
- 1989

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

- Mathematics, Computer Science
- ICLP
- 1991

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 language… Expand

The Architecture of an Implementation of

- 1992

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-terms… Expand

A treatment of higher-order features in logic programming

- 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

- Computer Science
- 2014

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

- Computer Science
- ArXiv
- 2009

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

- 2014

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 of… Expand

Implementing tactics and tacticals in a higher-order logic programming language

- 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

- Computer Science
- ELP
- 1989

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

- Mathematics, Computer Science
- ICLP
- 1991

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

- 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 building… Expand

A Logical Analysis of Modules in Logic Programming

- Computer Science
- J. Log. Program.
- 1989

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

- Mathematics
- 1990

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 within… Expand