Results 1  10
of
51
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 120 (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
Polymorphism and Type Inference in Database Programming
"... In order to find a static type system that adequately supports database languages, we need to express the most general type of a program that involves database operations. This can be achieved through an extension to the type system of ML that captures the polymorphic nature of field selection, toge ..."
Abstract

Cited by 42 (10 self)
 Add to MetaCart
(Show Context)
In order to find a static type system that adequately supports database languages, we need to express the most general type of a program that involves database operations. This can be achieved through an extension to the type system of ML that captures the polymorphic nature of field selection, together with a technique that generalizes relational operators to arbitrary data structures. The combination provides a statically typed language in which generalized relational databases may be cleanly represented as typed structures. As in ML types are inferred, which relieves the programmer of making the type assertions that may be required in a complex database environment. These extensions may also be used to provide static polymorphic typechecking in objectoriented languages and databases. A problem that arises with objectoriented databases is the apparent need for dynamic typechecking when dealing with queries on heterogeneous collections of objects. An extension of the type system needed for generalized relational operations can also be used for manipulating collections of dynamically typed values in a statically typed language. A prototype language based on these ideas has been implemented. While it lacks a proper treatment of persistent data, it demonstrates that a wide variety of database structures can be cleanly represented in a polymorphic programming language.
The Integration of Functions into Logic Programming: A Survey
, 1994
"... Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficient ..."
Abstract

Cited by 40 (0 self)
 Add to MetaCart
Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. Early research concentrated on the definition and improvement of execution principles for such integrated languages, while more recently efficient implementations of these execution principles have been developed so that these languages became relevant for practical applications. In this paper we survey the development of the operational semantics as well as
Theorem proving using equational matings and rigid E–unification
 Journal of the ACM
"... In this paper, it is shown that the method of matings due to Andrews and Bibel can be extended to (firstorder) languages with equality. A decidable version of Eunification called rigid Eunification is introduced, and it is shown that the method of equational matings remains complete when used in ..."
Abstract

Cited by 38 (1 self)
 Add to MetaCart
In this paper, it is shown that the method of matings due to Andrews and Bibel can be extended to (firstorder) languages with equality. A decidable version of Eunification called rigid Eunification is introduced, and it is shown that the method of equational matings remains complete when used in conjunction with rigid Eunification. Checking that a family of mated sets is an equational mating is equivalent to the following restricted kind of Eunification. Problem: Given →/E = {Ei  1 ≤ i ≤ n} a family of n finite sets of equations and S = {〈ui, vi 〉  1 ≤ i ≤ n} a set of n pairs of terms, is there a substitution θ such that, treating each set θ(Ei) as a set of ground equations (i.e. holding the variables in θ(Ei) "rigid"), θ(ui) and θ(vi) are provably equal from θ(Ei) for i = 1,...,n? Equivalently, is there a substitution θ such that θ(ui) and θ(vi) can be shown congruent from θ(Ei) by the congruence closure method for i 1,..., n? A substitution θ solving the above problem is called a rigid →/Eunifier of S, and a pair (→/E, S) such that S has some rigid →/Eunifier is called an equational premating. It is shown that deciding whether a pair 〈→/E, S 〉 is an
Combination Techniques for NonDisjoint Equational Theories
 Proceedings 12th International Conference on Automated Deduction
, 1994
"... ion variables which are variables coming from an abstraction, either during preprocessing or during the algorithm itself. 3. Introduced variables which are variables introduced by the unification algorithms for each theory. We make the very natural assumption that the unification algorithm for each ..."
Abstract

Cited by 25 (5 self)
 Add to MetaCart
(Show Context)
ion variables which are variables coming from an abstraction, either during preprocessing or during the algorithm itself. 3. Introduced variables which are variables introduced by the unification algorithms for each theory. We make the very natural assumption that the unification algorithm for each theory may recognize initial, abstraction and introduced variables and never assigns an introduced variable to a nonintroduced one or an abstraction variable to an initial one. With this assumption, our combination algorithm will always make an introduced variable appear in at most one \Gamma i . We may thus also suppose that the domain of each solution does not contain an introduced variable. This does not compromise the soundness of our algorithm. The combination algorithm is described by the two rules given in figure 2. In the rule UnifSolve i , ae SF is obtained by abstracting aliens in the range of ae by fresh variables. ae F i is the substitution such that xae = xae SF ae F i for al...
Functional logic overloading
, 2002
"... Functional logic overloading is a novel approach to userdefined overloading that extends Haskell’s concept of type classes in significant ways. Whereas type classes are conceptually predicates on types in standard Haskell, they are type functions in our approach. Thus, we can base type inference on ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
(Show Context)
Functional logic overloading is a novel approach to userdefined overloading that extends Haskell’s concept of type classes in significant ways. Whereas type classes are conceptually predicates on types in standard Haskell, they are type functions in our approach. Thus, we can base type inference on the evaluation of functional logic programs. Functional logic programming provides a solid theoretical foundation for type functions and, at the same time, allows for programmable overloading resolution strategies by choosing different evaluation strategies for functional logic programs. Type inference with type functions is an instance of type inference with constrained types, where the underlying constraint system is defined by a functional logic program. We have designed a variant of Haskell which supports our approach to overloading, and implemented a prototype frontend for the language.
Lazy Unification with Simplification
 In Proc. 5th European Symposium on Programming
, 1994
"... . Unification in the presence of an equational theory is an important problem in theoremproving and in the integration of functional and logic programming languages. This paper presents an improvement of the proposed lazy unification methods by incorporating simplification into the unification ..."
Abstract

Cited by 13 (3 self)
 Add to MetaCart
(Show Context)
. Unification in the presence of an equational theory is an important problem in theoremproving and in the integration of functional and logic programming languages. This paper presents an improvement of the proposed lazy unification methods by incorporating simplification into the unification process. Since simplification is a deterministic computation process, more efficient unification algorithms can be achieved. Moreover, simplification reduces the search space so that in some case infinite search spaces are reduced to finite ones. We show soundness and completeness of our method for equational theories represented by ground confluent and terminating rewrite systems which is a reasonable class w.r.t. functional logic programming. 1 Introduction Unification is not only an important operation in theorem provers but also the most important operation in logic programming systems. Unification in the presence of an equational theory, also known as Eunification, is necessary...
Static Typing for Dynamic Messages
 IN PROCEEDINGS OF THE 25 TH ACM SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES
, 1998
"... Dynamic messages are firstclass messages dynamically bound to program variables. By dynamic messages, the methods to be invoked can be varied dynamically at runtime, which provides a powerful abstraction mechanism for objectoriented languages. Dynamic messages are critically needed for some progr ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
Dynamic messages are firstclass messages dynamically bound to program variables. By dynamic messages, the methods to be invoked can be varied dynamically at runtime, which provides a powerful abstraction mechanism for objectoriented languages. Dynamic messages are critically needed for some programs, but it seems that there has been no proposal of static type systems for dynamic messages. This paper presents a static typing discipline for dynamic messages and formalizes it into a second order polymorphic type system. The type system satisfies the type soundness property and has a principal type inference algorithm. The type system therefore provides a foundation for a statically typed objectoriented language enriched with polymorphic dynamic messages.
SETHEO and ESETHEO  The CADE13 Systems
 Journal of Automated Reasoning
, 1997
"... . The model elimination theorem prover SETHEO (version V3.3) and its equational extension ESETHEO are presented. SETHEO employs sophisticated mechanisms of subgoal selection, elaborate iterative deepening techniques, and local failure caching methods. Its equational counterpart ESETHEO transforms ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
(Show Context)
. The model elimination theorem prover SETHEO (version V3.3) and its equational extension ESETHEO are presented. SETHEO employs sophisticated mechanisms of subgoal selection, elaborate iterative deepening techniques, and local failure caching methods. Its equational counterpart ESETHEO transforms formulae containing equality (using a variant of Brand's modification method) and processes the output with the standard SETHEO system. The paper gives an overview of the theoretical background, the system architecture, and the performance of both systems. Key words: Automated theorem proving, competition, SETHEO, ESETHEO, firstorder logic, model elimination, equality. 1. Introduction In this paper we describe the theorem provers SETHEO and ESETHEO. SETHEO is based on the model elimination calculus [13] and performs proof search using iterative deepening. The proof procedure is implemented as an extension of the Warren Abstract Machine. The system is being continuously extended and enh...