Results 1  10
of
225
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 247 (42 self)
 Add to MetaCart
(Show Context)
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 135 (14 self)
 Add to MetaCart
(Show Context)
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.
Unification: A multidisciplinary survey
 ACM Computing Surveys
, 1989
"... The unification problem and several variants are presented. Various algorithms and data structures are discussed. Research on unification arising in several areas of computer science is surveyed, these areas include theorem proving, logic programming, and natural language processing. Sections of the ..."
Abstract

Cited by 124 (1 self)
 Add to MetaCart
The unification problem and several variants are presented. Various algorithms and data structures are discussed. Research on unification arising in several areas of computer science is surveyed, these areas include theorem proving, logic programming, and natural language processing. Sections of the paper include examples that highlight particular uses
PROOFS IN HIGHERORDER LOGIC
, 1983
"... Expansion trees are defined as generalizations of Herbrand instances for formulas in a nonextensional form of higherorder logic based on Church’s simple theory of types. Such expansion trees can be defined with or without the use of skolem functions. These trees store substitution terms and either ..."
Abstract

Cited by 84 (18 self)
 Add to MetaCart
Expansion trees are defined as generalizations of Herbrand instances for formulas in a nonextensional form of higherorder logic based on Church’s simple theory of types. Such expansion trees can be defined with or without the use of skolem functions. These trees store substitution terms and either critical variables or skolem terms used to instantiate quantifiers in the original formula and those resulting from instantiations. An expansion tree is called an expansion tree proof (ETproof) if it encodes a tautology, and, in the form not using skolem functions, an “imbedding ” relation among the critical variables be acyclic. The relative completeness result for expansion tree proofs not using skolem functions, i.e. if A is provable in higherorder logic then A has such an expansion tree proof, is based on Andrews ’ formulation of Takahashi’s proof of the cutelimination theorem for higherorder logic. If the occurrences of skolem functions in instantiation terms are restricted appropriately, the use of skolem functions in place of critical variables is equivalent to the requirement that the imbedding relation is acyclic. This fact not only resolves the open question of what
Type Classes and Overloading in HigherOrder Logic
 Theorem Proving in Higher Order Logics: TPHOLs ’97, LNCS 1275
, 1997
"... Type classes and overloading are shown to be independent concepts that can both be added to simple higherorder logics in the tradition of Church and Gordon, without demanding more logical expressiveness. In particular, modeltheoretic issues are not affected. Our metalogical results may serve as a ..."
Abstract

Cited by 74 (7 self)
 Add to MetaCart
Type classes and overloading are shown to be independent concepts that can both be added to simple higherorder logics in the tradition of Church and Gordon, without demanding more logical expressiveness. In particular, modeltheoretic issues are not affected. Our metalogical results may serve as a foundation of systems like Isabelle/Pure that offer the user Haskellstyle ordersorted polymorphism as an extended syntactic feature. The latter can be used to describe simple abstract theories with a single carrier type and a fixed signature of operations.
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 67 (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.
An Algorithm for TypeChecking Dependent Types
 Science of Computer Programming
, 1996
"... We present a simple typechecker for a language with dependent types and let expressions, with a simple proof of correctness. Introduction Type Theory provides an interesting approach to the problem of (interactive) proofchecking. Instead of introducing, like in LCF [10], an abstract data type of t ..."
Abstract

Cited by 50 (4 self)
 Add to MetaCart
(Show Context)
We present a simple typechecker for a language with dependent types and let expressions, with a simple proof of correctness. Introduction Type Theory provides an interesting approach to the problem of (interactive) proofchecking. Instead of introducing, like in LCF [10], an abstract data type of theorems, it uses the proofsasprograms analogy and reduces the problem of proof checking to the problem of typechecking in a programming language with dependent types [5]. This approach presents several advantages, well described in [11,5], among those being the possibility of independent proof verification and of a uniform treatment for naming constants and theorems. It is crucial however for this approach to proofchecking to have a simple and reliable typechecking algorithm. Since the core part of such languages, like the ones described in [5,7], seems very simple, there may be some hope for such a short and simple typechecker for dependent types. Indeed, de Bruijn sketches such an al...
KripkeStyle Models for Typed Lambda Calculus
 Annals of Pure and Applied Logic
, 1996
"... The semantics of typed lambda calculus is usually described using Henkin models, consisting of functions over some collection of sets, or concrete cartesian closed categories, which are essentially equivalent. We describe a more general class of Kripkestyle models. In categorical terms, our Kripke ..."
Abstract

Cited by 50 (3 self)
 Add to MetaCart
The semantics of typed lambda calculus is usually described using Henkin models, consisting of functions over some collection of sets, or concrete cartesian closed categories, which are essentially equivalent. We describe a more general class of Kripkestyle models. In categorical terms, our Kripke lambda models are cartesian closed subcategories of the presheaves over a poset. To those familiar with Kripke models of modal or intuitionistic logics, Kripke lambda models are likely to seem adequately \semantic." However, when viewed as cartesian closed categories, they do not have the property variously referred to as concreteness, wellpointedness, or having enough points. While the traditional lambda calculus proof system is not complete for Henkin models that may have empty types, we prove strong completeness for Kripke models. In fact, every set of equations that is closed under implication is the theory of a single Kripke model. We also develop some properties of logical relations ...