MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Logic Programming in the LF Logical Framework (1991) [168 citations — 50 self]

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