Results 1  10
of
22
Uniform proofs as a foundation for logic programming
 ANNALS OF PURE AND APPLIED LOGIC
, 1991
"... A prooftheoretic characterization of logical languages that form suitable bases for Prologlike programming languages is provided. This characterization is based on the principle that the declarative meaning of a logic program, provided by provability in a logical system, should coincide with its ..."
Abstract

Cited by 373 (108 self)
 Add to MetaCart
A prooftheoretic characterization of logical languages that form suitable bases for Prologlike programming languages is provided. This characterization is based on the principle that the declarative meaning of a logic program, provided by provability in a logical system, should coincide with its operational meaning, provided by interpreting logical connectives as simple and fixed search instructions. The operational semantics is formalized by the identification of a class of cutfree sequent proofs called uniform proofs. A uniform proof is one that can be found by a goaldirected search that respects the interpretation of the logical connectives as search instructions. The concept of a uniform proof is used to define the notion of an abstract logic programming language, and it is shown that firstorder and higherorder Horn clauses with classical provability are examples of such a language. Horn clauses are then generalized to hereditary Harrop formulas and it is shown that firstorder and higherorder versions of this new class of formulas are also abstract logic programming languages if the inference rules are those of either intuitionistic or minimal logic. The programming language significance of the various generalizations to firstorder Horn clauses is briefly discussed.
Logic Programming in the LF Logical Framework
, 1991
"... this paper we describe Elf, a metalanguage 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 b ..."
Abstract

Cited by 175 (50 self)
 Add to MetaCart
this paper we describe Elf, a metalanguage 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 (Hornclauses) 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 objectlogic 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 metalogic, but a metaproof is never constructed or used and it is solely the programmer's responsibility to construct objectlogic proofs where they are needed. Secondly, the partial correctness of many metaprograms with respect to a given logic can be expressed and proved by Elf itself (see the example in Section 5). This creates the possibilit...
An Overview of λProlog
 In Fifth International Logic Programming Conference
, 1988
"... Abstract: λProlog is a logic programming language that extends Prolog by incorporating notions of higherorder functions, λterms, higherorder unification, polymorphic types, and mechanisms for building modules and secure abstract data types. These new features are provided in a principled fashion ..."
Abstract

Cited by 99 (34 self)
 Add to MetaCart
Abstract: λProlog is a logic programming language that extends Prolog by incorporating notions of higherorder functions, λterms, higherorder unification, polymorphic types, and mechanisms for building modules and secure abstract data types. These new features are provided in a principled fashion by extending the classical firstorder theory of Horn clauses to the intuitionistic higherorder theory of hereditary Harrop formulas. The justification for considering this extension a satisfactory logic programming language is provided through the prooftheoretic notion of a uniform proof. The correspondence between each extension to Prolog and the new features in the stronger logical theory is discussed. Also discussed are various aspects of an experimental implementation of λProlog. Appears in the Fifth International Conference Symposium on Logic Programming, 15 – 19 August 1988, Seattle, Washington. This is a slightly corrected version of
Elf: A Language for Logic Definition and Verified Metaprogramming
 In Fourth Annual Symposium on Logic in Computer Science
, 1989
"... We describe Elf, a metalanguage for proof manipulation environments that are independent of any particular logical system. Elf is intended for metaprograms such as theorem provers, proof transformers, or type inference programs for programming languages with complex type systems. Elf unifies logic ..."
Abstract

Cited by 77 (8 self)
 Add to MetaCart
We describe Elf, a metalanguage for proof manipulation environments that are independent of any particular logical system. Elf is intended for metaprograms such as theorem provers, proof transformers, or type inference programs for programming languages with complex type systems. Elf unifies logic definition (in the style of LF, the Edinburgh Logical Framework) with logic programming (in the style of Prolog). It achieves this unification by giving types an operational interpretation, much the same way that Prolog gives certain formulas (Hornclauses) an operational interpretation. Novel features of Elf include: (1) the Elf search process automatically constructs terms that can represent objectlogic proofs, and thus a program need not construct them explicitly, (2) the partial correctness of metaprograms with respect to a given logic can be expressed and proved in Elf itself, and (3) Elf exploits Elliott's unification algorithm for a calculus with dependent types. This research was...
HigherOrder and Modal Logic as a Framework for ExplanationBased Generalization
, 1989
"... Logic programming provides a uniform framework in which all aspects of explanationbased generalization and learning may be defined and carried out, but firstorder Horn logic is not well suited to application domains such as theorem proving or program synthesis where functions and predicates are th ..."
Abstract

Cited by 16 (6 self)
 Add to MetaCart
Logic programming provides a uniform framework in which all aspects of explanationbased generalization and learning may be defined and carried out, but firstorder Horn logic is not well suited to application domains such as theorem proving or program synthesis where functions and predicates are the objects of computation. We explore the use of a higherorder representation language and extend EBG to a higherorder logic programming language. Variables may now range over functions and predicates, which leads to an expansion of the space of possible generalizations. We address this problem by extending the logic with the modal ⊔ ⊓ operator (indicating necessary truth) which leads to the language λ ⊔ ⊓ Prolog. We develop a metainterpreter realizing EBG for λ ⊔ ⊓ Prolog and give some examples in an expanded version of this extended abstract which is available as a technical report [2]. 1
Constraint Logic Programming with Hereditary Harrop Formulas
, 1997
"... Constraint Logic Programming (CLP) and Hereditary Harrop Formulas (HH)are two well known ways to enhance the expressivity of Horn clauses. In this paper, we present a novel combination of these two approaches. We show how to enrich the syntax and proof theory of HH with the help of a given constrain ..."
Abstract

Cited by 10 (4 self)
 Add to MetaCart
Constraint Logic Programming (CLP) and Hereditary Harrop Formulas (HH)are two well known ways to enhance the expressivity of Horn clauses. In this paper, we present a novel combination of these two approaches. We show how to enrich the syntax and proof theory of HH with the help of a given constraint system, in such a way that the key property of HH as a logic programming language (namely, the existence of uniform proofs) is preserved. We also present a procedure for goal solving, showing its soundness and completeness for computing answer constraints. As a consequence of this result, we obtain a new strong completeness theorem for CLP that avoids the need to build disjunctions of computed answers, as well as a more abstract formulation of a known completeness theorem for HH.
A Kripkelike Model for Negation as Failure
 In Proceedings of the North American Conference on Logic Programming (NACLP
, 1989
"... We extend the Kripkelike model theory given in [10] for a fragment of firstorder hereditary Harrop formulae to include negated atoms in goals. This gives us a formal framework in which to study the role of Negation as Failure rule. The class of predicates for which Negation As Failure is applicable ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
We extend the Kripkelike model theory given in [10] for a fragment of firstorder hereditary Harrop formulae to include negated atoms in goals. This gives us a formal framework in which to study the role of Negation as Failure rule. The class of predicates for which Negation As Failure is applicable is discussed, as well as the predicates for which some other form of negation will need to be used. We show how the former class may be incorporated into the model theory, giving a generalisation of the usual T ! construction. No restriction on the class of programs is needed for this approach; the construction may be used for programs which are not locally stratified[14]. This is accomplished by the use of a success level and a failure level of a goal, either or both of which may be infinite. The resulting T operator is not monotonic, which necessitates a slight departure from the standard procedure, but the important properties of the construction still hold. 1 Introduction A classic ...
Typed static analysis: Application to groundness analysis of Prolog and lambdaProlog
 Journal of Functional and Logic Programming
, 1999
"... We enrich the domain Pos used for the static analysis of Prolog programs by combining it with types. We adopt the prescriptive view on typing, and we assume that programs are welltyped in an already existing type system. Typed static analysis of Typed Prolog programs gives access to more refined pr ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
We enrich the domain Pos used for the static analysis of Prolog programs by combining it with types. We adopt the prescriptive view on typing, and we assume that programs are welltyped in an already existing type system. Typed static analysis of Typed Prolog programs gives access to more refined properties than untyped analysis because types give information on the inductive structure of terms that untyped static analysis does not discover. The increased refinement is not in variables assigned to true (e.g., variable recognized as bound to ground terms), but rather in variables not assigned to true; theycan be assigned a more informative value than false. For instance, the proposed analysis can show that a variable is bound to a nilterminated list whose elements are not necessarily ground. We contend that this kind of property is sometimes more useful than groundness. Because 1 of constructors of compound types, e.g., list, the typed abstract domain can be infinite, but we show that if the socalled headcondition is satisfied by the analyzed program, then only a finite part of the domain is used. 1
Program development through proof transformation
 CONTEMPORARY MATHEMATICS
, 1990
"... We present a methodology for deriving verified programs that combines theorem proving and proof transformation steps. It extends the paradigm employed in systems like NuPrl where a program is developed and verified through the proof of the specification in a constructive type theory. We illustrate ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
We present a methodology for deriving verified programs that combines theorem proving and proof transformation steps. It extends the paradigm employed in systems like NuPrl where a program is developed and verified through the proof of the specification in a constructive type theory. We illustrate our methodology through an extended example  a derivation of Warshall's algorithm for graph reachability. We also outline how our framework supports the definition, implementation, and use of abstract data types.
A meta language for type checking and inference: An extended abstract
 Presented at the 1989 Workshop on Programming Logic
, 1989
"... We present a logic, Lλ, in which terms are the simply typed λterms and very restricted, secondorder quantification of functional variables is allowed. This logic can be used to directly encode the basic type judgments of a wide variety of typed λcalculi. Judgments such as “term M is of type A ” a ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
We present a logic, Lλ, in which terms are the simply typed λterms and very restricted, secondorder quantification of functional variables is allowed. This logic can be used to directly encode the basic type judgments of a wide variety of typed λcalculi. Judgments such as “term M is of type A ” and “M is a proof of formula A ” are represented by atomic propositions in Lλ while inference rules and axioms for such type judgments become simple quantified formulas. Theorem proving in Lλ can be described simply since the necessary unification of λterms is decidable and if unifiers exist, most general unifiers exist. Standard logic programming techniques can turn the specification of inference rules and axioms in Lλ into implementations of type checkers and inferrers. Several different typed λcalculi have been specified in Lλ and these specifications have been directly executed by a higherorder logic programming language. We illustrate such encoding into Lλ by presenting type checkers and inferrers for the simply typed λcalculus and the calculus of constructions.