Abstract:
this paper we describe Elf, a meta-language intended for environments dealing with deductive systems represented in LF. While this paper is intended to include a full description of the Elf core language, we only state, but do not prove here the most important theorems regarding the basic building blocks of Elf. These proofs are left to a future paper. A preliminary account of Elf can be found in [26]. The range of applications of Elf includes theorem proving and proof transformation in various logics, definition and execution of structured operational and natural semantics for programming languages, type checking and type inference, etc. The basic idea behind Elf is to unify logic definition (in the style of LF) with logic programming (in the style of Prolog, see [22, 24]). It achieves this unification by giving types an operational interpretation, much the same way that Prolog gives certain formulas (Horn-clauses) an operational interpretation. An alternative approach to logic programming in LF has been developed independently by Pym [28]. Here are some of the salient characteristics of our unified approach to logic definition and metaprogramming. First of all, the Elf search process automatically constructs terms that can represent object-logic proofs, and thus a program need not construct them explicitly. This is in contrast to logic programming languages where executing a logic program corresponds to theorem proving in a meta-logic, but a meta-proof is never constructed or used and it is solely the programmer's responsibility to construct object-logic proofs where they are needed. Secondly, the partial correctness of many meta-programs with respect to a given logic can be expressed and proved by Elf itself (see the example in Section 5). This creates the possibilit...
Citations
|
709
|
Constraint logic programming
– Jaffar, Lassez
- 1987
|
|
544
|
A framework for defining logics
– Harper, Honsell, et al.
- 1993
|
|
299
|
Uniform proofs as a foundation for logic programming
– Miller, Nadathur, et al.
- 1991
|
|
292
|
An efficient unification algorithm
– Martelli, Montanari
- 1982
|
|
245
|
A Logic Programming Language with Lambda Abstraction, Function Variables, and Simple Unification
– Miller
- 1986
|
|
174
|
An overview of Prolog
– Nadathur, Miller
- 1988
|
|
168
|
A uni algorithm for typed -calculus
– Huet
- 1975
|
|
111
|
The undecidability of the second-order unification problem
– Goldfarb
- 1981
|
|
99
|
An algorithm for testing conversion in type theory
– Coquand
- 1991
|
|
93
|
Unification under a mixed prefix
– Miller
- 1992
|
|
76
|
A unification algorithm for typed λ-calculus
– Huet
- 1975
|
|
74
|
Using typed lambda calculus to implement formal systems on a machine
– Avron, Honsell, et al.
- 1992
|
|
66
|
Elf: A language for logic definition and verified metaprogramming
– Pfenning
- 1989
|
|
63
|
An Overview of λProlog
– Nadathur, Miller
- 1988
|
|
53
|
Automating higher-order logic
– Andrews, Miller, et al.
- 1984
|
|
47
|
Higher-order unification revisited: Complete sets of transformations
– Snyder, Gallier
- 1989
|
|
41
|
Specifying and Implementing Theorem Provers in a Higher-Order Logic Programming Language
– Felty
- 1989
|
|
37
|
Computational metatheory in NuPRL
– Howe
- 1988
|
|
25
|
Isabelle tutorial and user’s manual
– Paulson, Nipkow
- 1990
|
|
24
|
Hereditary Harrop Formulas and Uniform Proofs Systems
– Miller, Nadathur, et al.
- 1987
|
|
23
|
Formalized metareasoning in type theory
– Knoblock, Constable
- 1986
|
|
21
|
Higher-order unification with dependent types
– Elliott
- 1989
|
|
21
|
Extensions and Applications of Higher-order Unification
– Elliott
- 1990
|
|
18
|
and Computation in General Logic
– Proofs
- 1990
|
|
15
|
Encoding a Dependent-Type -Calculus in a Logic Programming Language. Rapport de recherche 1259, Inria
– Felty, Miller
- 1990
|
|
12
|
The Church-Rosser theorem for LF with fij-reduction. Unpublished notes to a talk given at the First Workshop on Logical Frameworks in
– Salvesen
- 1990
|
|
11
|
The Church-Rosser theorem for LF with βη-reduction. Unpublished notes to a talk given at
– Salvesen
- 1990
|
|
8
|
Investigations into proof-search in a system of first-order dependent function types
– Pym, Wallen
- 1990
|
|
6
|
Encoding a dependent-type λ-calculus in a logic programming language
– Felty, Miller
- 1990
|
|
6
|
Goal directed proof construction in type theory
– Helmink
- 1991
|
|
5
|
A proof synthesis algorithm for a mathematical vernacular in a restriction of the Calculus of Constructions. Unpublished manuscript
– Dowek
- 1991
|
|
5
|
The calculus of constructions, documentation and user's guide. Rapport technique 110
– Huet
- 1989
|
|
3
|
eLP: A Common Lisp implementation of Prolog in the Ergo Support System. Available via ftp over the Internet
– Elliott, Pfenning
- 1989
|
|
2
|
eLP: A Common Lisp implementation of λProlog in the Ergo Support System. Available via ftp over the Internet
– Elliott, Pfenning
- 1989
|
|
2
|
Extensions and Applications of Higher-Order
– Elliott
- 1990
|
|
1
|
Implicit syntax. Unpublished notes to a talk given at
– Pollack
- 1990
|