Results 1 - 10
of
16
Higher-Order Horn Clauses
- JOURNAL OF THE ACM
, 1990
"... A generalization of Horn clauses to a higher-order logic is described and examined as a basis for logic programming. In qualitative terms, these higher-order Horn clauses are obtained from the first-order ones by replacing first-order terms with simply typed #-terms and by permitting quantification ..."
Abstract
-
Cited by 54 (19 self)
- Add to MetaCart
A generalization of Horn clauses to a higher-order logic is described and examined as a basis for logic programming. In qualitative terms, these higher-order Horn clauses are obtained from the first-order ones by replacing first-order terms with simply typed #-terms and by permitting quantification over all occurrences of function symbols and some occurrences of predicate symbols. Several proof-theoretic 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 higher-order Horn clauses are tightly constrained. This observation is used to show that these higher-order formulas can specify computations in a fashion similar to first-order Horn clauses. A complete theorem proving procedure is also described for the extension. This procedure is obtained by interweaving higher-order unification with backchaining and goal reductions, and constitutes a higher-order generalization of SLD-resolution. These results have a practical realization in the higher-order logic programming language called λProlog.
A Logic Programming Approach To Manipulating Formulas And Programs
- IEEE Symp. Logic Programming
, 1994
"... : First-order Horn clause logic can be extended to a higher-order 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 higher-order unification. Althoug ..."
Abstract
-
Cited by 43 (12 self)
- Add to MetaCart
: First-order Horn clause logic can be extended to a higher-order 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 higher-order unification. Although higher-order unification is more complex than usual first-order 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 higher-order unification to elegantly ...
Extensions and Applications of Higher-order Unification
, 1990
"... ... unification problems. Then, in this framework, we develop a new unification algorithm for a-calculus with dependent function (II) types. This algorithm is especially useful as it provides for mechanization in the very expressive Logical Framework (LF). The development (object-languages). The ric ..."
Abstract
-
Cited by 24 (1 self)
- Add to MetaCart
... unification problems. Then, in this framework, we develop a new unification algorithm for a-calculus with dependent function (II) types. This algorithm is especially useful as it provides for mechanization in the very expressive Logical Framework (LF). The development (object-languages). The rich structure of a typed-calculus,asopposedtotraditional,rst- generalideaistousea-calculusasameta-languageforrepresentingvariousotherlanguages thelattercase,thealgorithmisincomplete,thoughstillquiteusefulinpractice. Thelastpartofthedissertationprovidesexamplesoftheusefulnessofthealgorithms.The algorithmrstfordependentproduct()types,andsecondforimplicitpolymorphism.In involvessignicantcomplicationsnotarisingHuet'scorrespondingalgorithmforthesimply orderabstractsyntaxtrees,allowsustoexpressrules,e.g.,programtransformationand typed-calculus,primarilybecauseitmustdealwithill-typedterms.Wethenextendthis Wecanthenuseunicationinthemeta-languagetomechanizeapplicationoftheserules.
Extending definite clause grammars with scoping constructs
- 7th Int. Conf. Logic Programming
, 1990
"... Definite Clause Grammars (DCGs) have proved valuable to computational linguists since they can be used to specify phrase structured grammars. It is well known how to encode DCGs in Horn clauses. Some linguistic phenomena, such as filler-gap dependencies, are difficult to account for in a completely ..."
Abstract
-
Cited by 24 (4 self)
- Add to MetaCart
Definite Clause Grammars (DCGs) have proved valuable to computational linguists since they can be used to specify phrase structured grammars. It is well known how to encode DCGs in Horn clauses. Some linguistic phenomena, such as filler-gap dependencies, are difficult to account for in a completely satisfactory way using simple phrase structured grammar. In the literature of logic grammars there have been several attempts to tackle this problem by making use of special arguments added to the DCG predicates corresponding to the grammatical symbols. In this paper we take a different line, in that we account for filler-gap dependencies by encoding DCGs within hereditary Harrop formulas, an extension of Horn clauses (proposed elsewhere as a foundation for logic programming) where implicational goals and universally quantified goals are permitted. Under this approach, filler-gap dependencies can be accounted for in terms of the operational semantics underlying hereditary Harrop formulas, in a way reminiscent of the treatment of such phenomena in Generalized Phrase Structure Grammar (GPSG). The main features involved in this new formulation of DCGs are mechanisms for providing scope to constants and program clauses along with a mild use of λ-terms and λ-conversion. 1
Backtrackable State with Linear Assumptions, Continuations and Hidden Accumulator Grammars
"... A set of executable specifications and efficient implementations of backtrackable state persisting over the current AND-continuation is investigated. At specification level, our primitive operations are a variant of linear and intuitionistic implications, having as consequent the current continuati ..."
Abstract
-
Cited by 18 (11 self)
- Add to MetaCart
A set of executable specifications and efficient implementations of backtrackable state persisting over the current AND-continuation is investigated. At specification level, our primitive operations are a variant of linear and intuitionistic implications, having as consequent the current continuation. On top of them, we introduce a form of hypothetical assumptions which use no explicit quantifiers and have an easy and efficient implementation on top of logic programming systems featuring backtrackable destructive assignment, global variables and simple specifications in term of translation to side-effect free Prolog. A variant of Extended DCGs handling multiple streams without the need of a preprocessing technique, Hidden Accumulator Grammars (HAGs), are specified in terms of linear assumptions. For HAGs, efficiency comparable to that of preprocessing techniques is obtained through a WAM-level implementation of backtrackable destructive assignment, supporting non-deterministic execut...
Implementation Considerations for Higher-Order Features in Logic Programming
, 1993
"... This paper examines implementation problems that arise from providing for aspects of higher-order programming within and enhancing the meta-language abilities of logic programming. One issue of concern is a representation for the simply-typed lambda terms that replace the usual first-order terms as ..."
Abstract
-
Cited by 14 (10 self)
- Add to MetaCart
This paper examines implementation problems that arise from providing for aspects of higher-order programming within and enhancing the meta-language abilities of logic programming. One issue of concern is a representation for the simply-typed lambda terms that replace the usual first-order terms as data structures; this representation must support an efficient realization of ...-conversion operations on these terms. Another issue is the handling of higher-order unification that becomes an integral part of the computational model. An implementation must cater to the branching nature of this operation and also provide a means for temporarily suspending the solution of a unification problem. A final issue concerns the treatment of goals whose structure is not statically apparent. These problems are discussed in detail and solutions to them are described. A representation for lambda terms is presented that uses the de Bruijn "nameless" notation and also permits reduction substitutions to be performed lazily. This notation obviates ...-conversion and also supports an efficient implementation of ...-reduction. Branching in unification is implemented by using a depth-first search strategy with backtracking. A structure that is called a branch point record and is akin to the choice point record of the Warren Abstract Machine (WAM) is described for remembering alternatives in unification. An explicit representation for unification problems is presented that permits sharing and also supports the rapid reinstatement of earlier versions of the problem. The implementation of unification is tuned to yield an efficient solution to first-order like problems, in fact through the use of compiled code as in the WAM. A compilation method is also discussed for goals whose structure changes during execution. Th...
Higher-Order and Modal Logic as a Framework for Explanation-Based Generalization
, 1989
"... Logic programming provides a uniform framework in which all aspects of explanation-based generalization and learning may be defined and carried out, but first-order 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 14 (6 self)
- Add to MetaCart
Logic programming provides a uniform framework in which all aspects of explanation-based generalization and learning may be defined and carried out, but first-order 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 higher-order representation language and extend EBG to a higher-order 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 meta-interpreter 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
From Context-Free To Definite-Clause Grammars: A Type-Theoretic Approach
, 1993
"... This paper is concerned with the problem of inferring semantics of a language from examples, assuming that we are already given its syntax. More precisely, we assume that the syntax is given using an unambiguous context-free grammar, although the proposed techniques also apply to certain attribute g ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
This paper is concerned with the problem of inferring semantics of a language from examples, assuming that we are already given its syntax. More precisely, we assume that the syntax is given using an unambiguous context-free grammar, although the proposed techniques also apply to certain attribute grammars where the attributes specify context-sensitive features. Our goal is to develop a system that will take as input an unambiguous context-free grammar (CFG) and a finite set of pairs
Encoding Generic Judgments
- In Proceedings of FSTTCS. Number 2556 in LNCS
, 2002
"... The operational semantics of a computation system is often presented as inference rules or, equivalently, as logical theories. Specifications can be made more declarative and high-level if syntactic details concerning bound variables and substitutions are encoded directly into the logic using te ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
The operational semantics of a computation system is often presented as inference rules or, equivalently, as logical theories. Specifications can be made more declarative and high-level if syntactic details concerning bound variables and substitutions are encoded directly into the logic using term-level abstractions (#-abstraction) and proof-level abstractions (eigenvariables). When one wishes to reason about relations defined using term-level abstractions, generic judgment are generally required.
From Assumptions to Meaning
"... Introduction In human communication, assumptions play a central role. Linguists and logicians have uncovered their many facets. For instance, the assumption of a looking glass' existence and unicity in "The looking glass is turning into a mist now" is called a presupposition; the assumption that a ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Introduction In human communication, assumptions play a central role. Linguists and logicians have uncovered their many facets. For instance, the assumption of a looking glass' existence and unicity in "The looking glass is turning into a mist now" is called a presupposition; the assumption that a polite request, rather than a literal question, will be "heard" in "Can you open the door?" is an implicature. Much of AI work is also concerned with the study of assumptions in one form or another: abductive reasoning "infers" (assumes) p from q given that p ) q; uncertain information with high probability is used (assumed) in some frameworks, and so on. Recently, systems for hypothetical reasoning that extend the capabilities of deductive databases have been studied e.g [4] and in the area of logic programming, assumptions have also been widely used, most notably for default reasoning (e

