Results 1  10
of
26
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 374 (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.
HiLog: A foundation for higherorder logic programming
 JOURNAL OF LOGIC PROGRAMMING
, 1993
"... We describe a novel logic, called HiLog, and show that it provides a more suitable basis for logic programming than does traditional predicate logic. HiLog has a higherorder syntax and allows arbitrary terms to appear in places where predicates, functions and atomic formulas occur in predicate calc ..."
Abstract

Cited by 213 (40 self)
 Add to MetaCart
We describe a novel logic, called HiLog, and show that it provides a more suitable basis for logic programming than does traditional predicate logic. HiLog has a higherorder syntax and allows arbitrary terms to appear in places where predicates, functions and atomic formulas occur in predicate calculus. But its semantics is firstorder and admits a sound and complete proof procedure. Applications of HiLog are discussed, including DCG grammars, higherorder and modular logic programming, and deductive databases.
Higherorder logic programming
 HANDBOOK OF LOGIC IN AI AND LOGIC PROGRAMMING, VOLUME 5: LOGIC PROGRAMMING. OXFORD (1998
"... ..."
Unification under a mixed prefix
 Journal of Symbolic Computation
, 1992
"... Unification problems are identified with conjunctions of equations between simply typed λterms where free variables in the equations can be universally or existentially quantified. Two schemes for simplifying quantifier alternation, called Skolemization and raising (a dual of Skolemization), are pr ..."
Abstract

Cited by 124 (13 self)
 Add to MetaCart
Unification problems are identified with conjunctions of equations between simply typed λterms where free variables in the equations can be universally or existentially quantified. Two schemes for simplifying quantifier alternation, called Skolemization and raising (a dual of Skolemization), are presented. In this setting where variables of functional type can be quantified and not all types contain closed terms, the naive generalization of firstorder Skolemization has several technical problems that are addressed. The method of searching for preunifiers described by Huet is easily extended to the mixed prefix setting, although solving flexibleflexible unification problems is undecidable since types may be empty. Unification problems may have numerous incomparable unifiers. Occasionally, unifiers share common factors and several of these are presented. Various optimizations on the general unification search problem are as discussed. 1.
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
Programming in an Integrated Functional and Logic Language
, 1999
"... Escher is a generalpurpose, declarative programming language that integrates the best features of both functional and logic programming languages. It has types and modules, higherorder and metaprogramming facilities, concurrency, and declarative input/output. The main design aim is to combine in ..."
Abstract

Cited by 65 (14 self)
 Add to MetaCart
Escher is a generalpurpose, declarative programming language that integrates the best features of both functional and logic programming languages. It has types and modules, higherorder and metaprogramming facilities, concurrency, and declarative input/output. The main design aim is to combine in a practical and comprehensive way the best ideas of existing functional and logic languages, such as Haskell and Godel. In fact, Escher uses the Haskell syntax and is most straightforwardly understood as an extension of Haskell. Consequently, this paper discusses Escher from this perspective. It provides an introduction to the Escher language, concentrating largely on the issue of programming style and the Escher programming idioms not provided by Haskell. Also the extra mechanisms needed to support these idioms are discussed.
Lexical scoping as universal quantification
 In Sixth International Logic Programming Conference
, 1989
"... Abstract: A universally quantified goal can be interpreted intensionally, that is, the goal ∀x.G(x) succeeds if for some new constant c, the goal G(c) succeeds. The constant c is, in a sense, given a scope: it is introduced to solve this goal and is “discharged ” after the goal succeeds or fails. Th ..."
Abstract

Cited by 64 (17 self)
 Add to MetaCart
Abstract: A universally quantified goal can be interpreted intensionally, that is, the goal ∀x.G(x) succeeds if for some new constant c, the goal G(c) succeeds. The constant c is, in a sense, given a scope: it is introduced to solve this goal and is “discharged ” after the goal succeeds or fails. This interpretation is similar to the interpretation of implicational goals: the goal D ⊃ G should succeed if when D is assumed, the goal G succeeds. The assumption D is discharged after G succeeds or fails. An interpreter for a logic programming language containing both universal quantifiers and implications in goals and the body of clauses is described. In its nondeterministic form, this interpreter is sound and complete for intuitionistic logic. Universal quantification can provide lexical scoping of individual, function, and predicate constants. Several examples are presented to show how such scoping can be used to provide a Prologlike language with facilities data types, and encapsulation of state.
HigherOrder Horn Clauses
 JOURNAL OF THE ACM
, 1990
"... A generalization of Horn clauses to a higherorder logic is described and examined as a basis for logic programming. In qualitative terms, these higherorder Horn clauses are obtained from the firstorder ones by replacing firstorder terms with simply typed #terms and by permitting quantification ..."
Abstract

Cited by 62 (19 self)
 Add to MetaCart
A generalization of Horn clauses to a higherorder logic is described and examined as a basis for logic programming. In qualitative terms, these higherorder Horn clauses are obtained from the firstorder ones by replacing firstorder terms with simply typed #terms and by permitting quantification over all occurrences of function symbols and some occurrences of predicate symbols. Several prooftheoretic results concerning these extended clauses are presented. One result shows that although the substitutions for predicate variables can be quite complex in general, the substitutions necessary in the context of higherorder Horn clauses are tightly constrained. This observation is used to show that these higherorder formulas can specify computations in a fashion similar to firstorder Horn clauses. A complete theorem proving procedure is also described for the extension. This procedure is obtained by interweaving higherorder unification with backchaining and goal reductions, and constitutes a higherorder generalization of SLDresolution. These results have a practical realization in the higherorder logic programming language called λProlog.
A Logic Programming Approach To Manipulating Formulas And Programs
 IEEE Symp. Logic Programming
, 1994
"... : Firstorder Horn clause logic can be extended to a higherorder setting in which function and predicate symbols can be variables and terms are replaced with simply typed terms. For such a logic programming language to be complete in principle, it must incorporate higherorder unification. Althoug ..."
Abstract

Cited by 49 (14 self)
 Add to MetaCart
: Firstorder Horn clause logic can be extended to a higherorder setting in which function and predicate symbols can be variables and terms are replaced with simply typed terms. For such a logic programming language to be complete in principle, it must incorporate higherorder unification. Although higherorder unification is more complex than usual firstorder unification, its availability makes writing certain kinds of programs far more straightforward. In this paper, we present such programs written in a higherorder version of Prolog called Prolog. These programs manipulate structures, such as formulas and programs, which contain abstractions or bound variables. We show how a simple natural deduction theorem prover can be implemented in this language. Similarly we demonstrate how several simple program transformers for a functional programming language can be written in Prolog. These Prolog programs exploit the availability of conversion and higherorder unification to elegantly ...
Ordersorted polymorphism in isabelle
 Logical Environments
, 1993
"... MLstyle polymorphism can be generalized from a singlesorted algebra of types to an ordersorted one by adding a partially ordered layer of “sorts ” on top of the types. Type inference proceeds as in the Hindley/Milner system, except that ordersorted unification of types is used. The resulting sys ..."
Abstract

Cited by 33 (2 self)
 Add to MetaCart
MLstyle polymorphism can be generalized from a singlesorted algebra of types to an ordersorted one by adding a partially ordered layer of “sorts ” on top of the types. Type inference proceeds as in the Hindley/Milner system, except that ordersorted unification of types is used. The resulting system has been implemented in Isabelle to permit type variables to range over userdefinable subsets of all types. Ordersorted polymorphism allows a simple specification of type restrictions in many logical systems. It accommodates userdefined parametric overloading and allows for a limited form of abstract axiomatic reasoning. It can also explain type inference with Standard ML’s equality types and Haskell’s type classes. 1