Abstract. Stimulated by concerns of software certication especially as it relates to mobile code, formal structures such as specications and proofs are beginning to play an explicit role in computing. In representing and manipulating such structures, an approach is needed that pays attention to the binding operation that is present in them. The language Prolog provides programming support for a higher-order treatment of abstract syntax that is especially suited to this task. This support is realized by enhancing the traditional strength of logic programming in the metalanguage realm with an ability for dealing directly with binding structure. This paper identies the features of Prolog that endow it with such a capability, illustrates their use and and describes methods for their implementation. Also discussed is a new realization of Prolog called Teyjus that incorporates the implementation ideas presented. 1
|
811
|
Proof-Carrying Code
– Necula
- 1997
|
|
448
|
An abstract Prolog instruction set
– Warren
|
|
334
|
Explicit substitutions
– Abadi, Cardelli, et al.
- 1991
|
|
332
|
Uniform proofs as a foundation for logic programming
– Miller, Nadathur, et al.
- 1991
|
|
263
|
A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification
– Miller
- 1991
|
|
206
|
Higher-order abstract syntax
– Pfenning, Elliot
- 1988
|
|
186
|
C.: System description: Twelf - a meta-logical framework for deductive systems,Proceedings of the 16th International Conference on Automated Deduction (CADE-16
– Pfenning, Schurmann
- 1999
|
|
182
|
Logic programming in the LF logical framework
– Pfenning
- 1991
|
|
178
|
A unification algorithm for typed -calculus
– Huet
- 1975
|
|
148
|
Higher-order logic programming
– Nadathur, Miller
- 1998
|
|
131
|
Proving and applying program transformations expressed with second-order patterns
– Huet, Lang
- 1978
|
|
113
|
An algorithm for optimal lambda calculus reduction
– Lamping
- 1990
|
|
79
|
Optimal Reductions in the Lambda-Calculus
– L'evy
- 1980
|
|
62
|
Implementing tactics and tacticals in a higher-order logic programming language
– Felty
- 1993
|
|
50
|
From operational semantics to abstract machines
– Hannan, Miller
- 1992
|
|
38
|
Proof search in the intuitionistic sequent calculus
– Shankar
- 1992
|
|
30
|
An empirical study of the runtime behavior of higher-order logic programs
– Michaylov, Pfenning
- 1992
|
|
30
|
A notation for lambda terms: A generalization of environments
– Nadathur, Wilson
- 1998
|
|
28
|
System description: Teyjus—a compiler and abstract machine based implementation of Lambda Prolog
– Nadathur, Mitchell
- 1999
|
|
27
|
Higher-order Uni via Explicit Substitutions
– Dowek, Hardin, et al.
- 2000
|
|
24
|
A Proof Procedure for the Logic of Hereditary Harrop Formulas
– Nadathur
- 1993
|
|
23
|
The Type System of a Higher-Order Logic Programming Language
– Nadathur, Pfenning
- 1992
|
|
22
|
Naive reverse can be linear
– Brisset, Ridoux
- 1991
|
|
21
|
Scoping constructs in logic programming: Implementation problems and their solution
– Nadathur, Jayaraman, et al.
- 1995
|
|
20
|
A fine-grained notation for lambda terms and its use in intensional operations
– Nadathur
- 1999
|
|
19
|
Implementing polymorphic typing in a logic programming language
– Kwon, Nadathur, et al.
- 1994
|
|
16
|
Implementation considerations for higher-order features in logic programming
– Nadathur, Jayaraman, et al.
- 1993
|
|
15
|
A proposal for modules in *Prolog
– Miller
- 1994
|
|
5
|
The compilation of Prolog and its execution with
– Brisset, Ridoux
- 1992
|
|
5
|
Let-polymorphism and eager type schemes
– Liang
- 1980
|
|
5
|
Uni under a mixed pre
– Miller
- 1992
|
|
4
|
An explicit substitution notation in a Prolog implementation
– Nadathur
- 1998
|
|
3
|
Lightweight lemmas in Prolog
– Appel, Felty
- 1999
|
|
2
|
MALIv06: Tutorial and reference manual
– Ridoux
- 1991
|
|
1
|
Realizing modularity in Prolog
– Nadathur, Tong
- 1999
|