HOME

TheInfoList



OR:

In
logic Logic is the study of correct reasoning. It includes both formal and informal logic. Formal logic is the study of deductively valid inferences or logical truths. It examines how conclusions follow from premises based on the structure o ...
and
computer science Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, specifically
automated reasoning In computer science, in particular in knowledge representation and reasoning and metalogic, the area of automated reasoning is dedicated to understanding different aspects of reasoning. The study of automated reasoning helps produce computer progr ...
, unification is an algorithmic process of solving equations between symbolic expressions, each of the form ''Left-hand side = Right-hand side''. For example, using ''x'',''y'',''z'' as variables, and taking ''f'' to be an uninterpreted function, the singleton equation set is a syntactic first-order unification problem that has the substitution as its only solution. Conventions differ on what values variables may assume and which expressions are considered equivalent. In first-order syntactic unification, variables range over first-order terms and equivalence is syntactic. This version of unification has a unique "best" answer and is used in
logic programming Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
and programming language
type system In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
implementation, especially in Hindley–Milner based
type inference Type inference, sometimes called type reconstruction, refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some bran ...
algorithms. In higher-order unification, possibly restricted to higher-order pattern unification, terms may include lambda expressions, and equivalence is up to beta-reduction. This version is used in
proof assistant In computer science and mathematical logic, a proof assistant or interactive theorem prover is a software tool to assist with the development of formal proofs by human–machine collaboration. This involves some sort of interactive proof edi ...
s and higher-order logic programming, for example
Isabelle Isabel is a female name of Iberian origin. Isabelle is a name that is similar, but it is of French origin. It originates as the medieval Spanish form of '' Elisabeth'' (ultimately Hebrew ''Elisheba''). Arising in the 12th century, it became popul ...
,
Twelf Twelf is an implementation of the logical framework LF developed by Frank Pfenning and Carsten Schürmann at Carnegie Mellon University. It is used for logic programming and for the formalization of programming language theory. Introduction At ...
, and lambdaProlog. Finally, in semantic unification or E-unification, equality is subject to background knowledge and variables range over a variety of domains. This version is used in
SMT solver In computer science and mathematical logic, satisfiability modulo theories (SMT) is the problem of determining whether a mathematical formula is satisfiable. It generalizes the Boolean satisfiability problem (SAT) to more complex formulas involv ...
s,
term rewriting In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
algorithms, and
cryptographic protocol A cryptographic protocol is an abstract or concrete Communications protocol, protocol that performs a information security, security-related function and applies cryptographic methods, often as sequences of cryptographic primitives. A protocol desc ...
analysis.


Formal definition

A ''unification problem'' is a finite set of equations to solve, where are in the set T of ''terms'' or ''expressions''. Depending on which expressions or terms are allowed to occur in an equation set or unification problem, and which expressions are considered equal, several frameworks of unification are distinguished. If higher-order variables, that is, variables representing functions, are allowed in an expression, the process is called higher-order unification, otherwise ''first-order unification''. If a solution is required to make both sides of each equation literally equal, the process is called syntactic or ''free'' unification, otherwise ''semantic'' or ''equational unification'', or E-unification, or ''unification modulo theory''. If the right side of each equation is closed (no free variables), the problem is called (pattern) ''matching''. The left side (with variables) of each equation is called the ''pattern''.


Prerequisites

Formally, a unification approach presupposes * An infinite set V of ''variables''. For higher-order unification, it is convenient to choose V disjoint from the set of
lambda-term bound variables In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computation based on function abstraction and application using variable binding and substitution. Untyped lambda calculus, the topic ...
. * A set T of ''terms'' such that V \subseteq T. For first-order unification, T is usually the set of first-order terms (terms built from variable and function symbols). For higher-order unification T consists of first-order terms and
lambda terms In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computation based on function abstraction and application using variable binding and substitution. Untyped lambda calculus, the topic ...
(terms containing some higher-order variables). * A mapping \text\colon T \rightarrow \mathbb(V), assigning to each term t the set \text(t) \subsetneq V of ''free variables'' occurring in t. * A theory or
equivalence relation In mathematics, an equivalence relation is a binary relation that is reflexive, symmetric, and transitive. The equipollence relation between line segments in geometry is a common example of an equivalence relation. A simpler example is equ ...
\equiv on T, indicating which terms are considered equal. For first-order E-unification, \equiv reflects the background knowledge about certain function symbols; for example, if \oplus is considered commutative, t\equiv u if u results from t by swapping the arguments of \oplus at some (possibly all) occurrences. E.g. ''a'' ⊕ (''b'' ⊕ ''f''(''x'')) ≡ ''a'' ⊕ (''f''(''x'') ⊕ ''b'') ≡ (''b'' ⊕ ''f''(''x'')) ⊕ ''a'' ≡ (''f''(''x'') ⊕ ''b'') ⊕ ''a'' In the most typical case that there is no background knowledge at all, then only literally, or syntactically, identical terms are considered equal. In this case, ≡ is called the ''
free theory Free may refer to: Concept * Freedom, the ability to act or change without constraint or restriction * Emancipate, attaining civil and political rights or equality * Free (''gratis''), free of charge * Gratis versus libre, the difference betw ...
'' (because it is a
free object In mathematics, the idea of a free object is one of the basic concepts of abstract algebra. Informally, a free object over a set ''A'' can be thought of as being a "generic" algebraic structure over ''A'': the only equations that hold between elem ...
), the ''
empty theory In mathematical logic, an uninterpreted function or function symbol is one that has no other property than its name and '' n-ary'' form. Function symbols are used, together with constants and variables, to form terms. The theory of uninterpreted ...
'' (because the set of equational
sentences The ''Sentences'' (. ) is a compendium of Christian theology written by Peter Lombard around 1150. It was the most important religious textbook of the Middle Ages. Background The sentence genre emerged from works like Prosper of Aquitaine's ...
, or the background knowledge, is empty), the ''theory of uninterpreted functions'' (because unification is done on uninterpreted terms), or the ''theory of constructors'' (because all function symbols just build up data terms, rather than operating on them). For higher-order unification, usually t\equiv u if t and u are
alpha equivalent In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computation based on function abstraction and application using variable binding and substitution. Untyped lambda calculus, the topic ...
. As an example of how the set of terms and theory affects the set of solutions, the syntactic first-order unification problem has no solution over the set of finite terms. However, it has the single solution over the set of infinite tree terms. Similarly, the semantic first-order unification problem has each substitution of the form as a solution in a
semigroup In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative internal binary operation on it. The binary operation of a semigroup is most often denoted multiplicatively (just notation, not necessarily th ...
, i.e. if (⋅) is considered
associative In mathematics, the associative property is a property of some binary operations that rearranging the parentheses in an expression will not change the result. In propositional logic, associativity is a valid rule of replacement for express ...
. But the same problem, viewed in an
abelian group In mathematics, an abelian group, also called a commutative group, is a group in which the result of applying the group operation to two group elements does not depend on the order in which they are written. That is, the group operation is commu ...
, where (⋅) is considered also
commutative In mathematics, a binary operation is commutative if changing the order of the operands does not change the result. It is a fundamental property of many binary operations, and many mathematical proofs depend on it. Perhaps most familiar as a pr ...
, has any substitution at all as a solution. As an example of higher-order unification, the singleton set is a syntactic second-order unification problem, since ''y'' is a function variable. One solution is ; another one is .


Substitution

A ''substitution'' is a mapping \sigma: V\rightarrow T from variables to terms; the notation \ refers to a substitution mapping each variable x_i to the term t_i, for i=1,...,k, and every other variable to itself; the x_i must be pairwise distinct. ''Applying'' that substitution to a term t is written in
postfix notation Reverse Polish notation (RPN), also known as reverse Łukasiewicz notation, Polish postfix notation or simply postfix notation, is a mathematical notation in which Operation (mathematics), operators ''follow'' their operands, in contrast to pr ...
as t \; it means to (simultaneously) replace every occurrence of each variable x_i in the term t by t_i. The result t\tau of applying a substitution \tau to a term t is called an ''instance'' of that term t. As a first-order example, applying the substitution to the term


Generalization, specialization

If a term t has an instance equivalent to a term u, that is, if t\sigma \equiv u for some substitution \sigma, then t is called ''more general'' than u, and u is called ''more special'' than, or ''subsumed'' by, t. For example, x\oplus a is more general than a\oplus b if ⊕ is
commutative In mathematics, a binary operation is commutative if changing the order of the operands does not change the result. It is a fundamental property of many binary operations, and many mathematical proofs depend on it. Perhaps most familiar as a pr ...
, since then (x\oplus a) \ = b\oplus a\equiv a\oplus b. If ≡ is literal (syntactic) identity of terms, a term may be both more general and more special than another one only if both terms differ just in their variable names, not in their syntactic structure; such terms are called ''variants'', or ''renamings'' of each other. For example, f(x_1, a, g(z_1), y_1) is a variant of f(x_2, a, g(z_2), y_2), since f(x_1, a, g(z_1), y_1) \ = f(x_2, a, g(z_2), y_2) and f(x_2, a, g(z_2), y_2) \ = f(x_1, a, g(z_1), y_1). However, f(x_1, a, g(z_1), y_1) is ''not'' a variant of f(x_2, a, g(x_2), x_2), since no substitution can transform the latter term into the former one. The latter term is therefore properly more special than the former one. For arbitrary \equiv, a term may be both more general and more special than a structurally different term. For example, if ⊕ is
idempotent Idempotence (, ) is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application. The concept of idempotence arises in a number of pl ...
, that is, if always x \oplus x \equiv x, then the term x\oplus y is more general than z,since (x\oplus y) \ = z\oplus z \equiv z and vice versa,since although x\oplus y and z are of different structure. A substitution \sigma is ''more special'' than, or ''subsumed'' by, a substitution \tau if t\sigma is subsumed by t\tau for each term t. We also say that \tau is more general than \sigma. More formally, take a nonempty infinite set V of auxiliary variables such that no equation l_i \doteq r_i in the unification problem contains variables from V. Then a substitution \sigma is subsumed by another substitution \tau if there is a substitution \theta such that for all terms X\notin V, X\sigma \equiv X\tau\theta. For instance \ is subsumed by \tau = \, using \theta=\, but \sigma = \ is not subsumed by \tau = \, as f(x, y)\sigma = f(a, y) is not an instance of f(x, y) \tau = f(y, y).


Solution set

A substitution σ is a ''solution'' of the unification problem ''E'' if for i = 1, ..., n. Such a substitution is also called a ''unifier'' of ''E''. For example, if ⊕ is
associative In mathematics, the associative property is a property of some binary operations that rearranging the parentheses in an expression will not change the result. In propositional logic, associativity is a valid rule of replacement for express ...
, the unification problem has the solutions , , , etc., while the problem has no solution. For a given unification problem ''E'', a set ''S'' of unifiers is called ''complete'' if each solution substitution is subsumed by some substitution in ''S''. A complete substitution set always exists (e.g. the set of all solutions), but in some frameworks (such as unrestricted higher-order unification) the problem of determining whether any solution exists (i.e., whether the complete substitution set is nonempty) is undecidable. The set ''S'' is called ''minimal'' if none of its members subsumes another one. Depending on the framework, a complete and minimal substitution set may have zero, one, finitely many, or infinitely many members, or may not exist at all due to an infinite chain of redundant members. Thus, in general, unification algorithms compute a finite approximation of the complete set, which may or may not be minimal, although most algorithms avoid redundant unifiers when possible. For first-order syntactical unification, Martelli and Montanari gave an algorithm that reports unsolvability or computes a single unifier that by itself forms a complete and minimal substitution set, called the most general unifier.


Syntactic unification of first-order terms

''Syntactic unification of first-order terms'' is the most widely used unification framework. It is based on ''T'' being the set of ''first-order terms'' (over some given set ''V'' of variables, ''C'' of constants and ''F''''n'' of ''n''-ary function symbols) and on ≡ being ''syntactic equality''. In this framework, each solvable unification problem has a complete, and obviously minimal, singleton solution set . Its member is called the most general unifier (''mgu'') of the problem. The terms on the left and the right hand side of each potential equation become syntactically equal when the mgu is applied i.e. . Any unifier of the problem is subsumedformally: each unifier τ satisfies for some substitution ρ by the mgu . The mgu is unique up to variants: if ''S''1 and ''S''2 are both complete and minimal solution sets of the same syntactical unification problem, then ''S''1 = and ''S''2 = for some substitutions and and is a variant of for each variable ''x'' occurring in the problem. For example, the unification problem has a unifier , because : This is also the most general unifier. Other unifiers for the same problem are e.g. , , and so on; there are infinitely many similar unifiers. As another example, the problem ''g''(''x'',''x'') ≐ ''f''(''y'') has no solution with respect to ≡ being literal identity, since any substitution applied to the left and right hand side will keep the outermost ''g'' and ''f'', respectively, and terms with different outermost function symbols are syntactically different.


Unification algorithms

Jacques Herbrand Jacques Herbrand (12 February 1908 – 27 July 1931) was a French mathematician. Although he died at age 23, he was already considered one of "the greatest mathematicians of the younger generation" by his professors Helmut Hasse and Richard Coura ...
discussed the basic concepts of unification and sketched an algorithm in 1930. Here: p.56 But most authors attribute the first unification algorithm to John Alan Robinson (cf. box).; Here: sect.5.8, p.32 Robinson's algorithm had worst-case exponential behavior in both time and space. Numerous authors have proposed more efficient unification algorithms. Algorithms with worst-case linear-time behavior were discovered independently by and uses a similar technique as Paterson-Wegman, hence is linear, but like most linear-time unification algorithms is slower than the Robinson version on small sized inputs due to the overhead of preprocessing the inputs and postprocessing of the output, such as construction of a DAG representation. is also of linear complexity in the input size but is competitive with the Robinson algorithm on small size inputs. The speedup is obtained by using an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
representation of the predicate calculus that avoids the need for pre- and post-processing, instead making variable objects responsible for creating a substitution and for dealing with aliasing. de Champeaux claims that the ability to add functionality to predicate calculus represented as programmatic
object Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an a ...
s provides opportunities for optimizing other logic operations as well. The following algorithm is commonly presented and originates from .Alg.1, p.261. Their rule ''(a)'' corresponds to rule ''swap'' here, ''(b)'' to ''delete'', ''(c)'' to both ''decompose'' and ''conflict'', and ''(d)'' to both ''eliminate'' and ''check''. Given a finite set G = \ of potential equations, the algorithm applies rules to transform it to an equivalent set of equations of the form where ''x''1, ..., ''x''''m'' are distinct variables and ''u''1, ..., ''u''''m'' are terms containing none of the ''x''''i''. A set of this form can be read as a substitution. If there is no solution the algorithm terminates with ⊥; other authors use "Ω", or "''fail''" in that case. The operation of substituting all occurrences of variable ''x'' in problem ''G'' with term ''t'' is denoted ''G'' . For simplicity, constant symbols are regarded as function symbols having zero arguments. :


Occurs check

An attempt to unify a variable ''x'' with a term containing ''x'' as a strict subterm ''x'' ≐ ''f''(..., ''x'', ...) would lead to an infinite term as solution for ''x'', since ''x'' would occur as a subterm of itself. In the set of (finite) first-order terms as defined above, the equation ''x'' ≐ ''f''(..., ''x'', ...) has no solution; hence the ''eliminate'' rule may only be applied if ''x'' ∉ ''vars''(''t''). Since that additional check, called ''occurs check'', slows down the algorithm, it is omitted e.g. in most Prolog systems. From a theoretical point of view, omitting the check amounts to solving equations over infinite trees, see #Unification of infinite terms below.


Proof of termination

For the proof of termination of the algorithm consider a triple \langle n_, n_, n_\rangle where is the number of variables that occur more than once in the equation set, is the number of function symbols and constants on the left hand sides of potential equations, and is the number of equations. When rule ''eliminate'' is applied, decreases, since ''x'' is eliminated from ''G'' and kept only in . Applying any other rule can never increase again. When rule ''decompose'', ''conflict'', or ''swap'' is applied, decreases, since at least the left hand side's outermost ''f'' disappears. Applying any of the remaining rules ''delete'' or ''check'' can't increase , but decreases . Hence, any rule application decreases the triple \langle n_, n_, n_\rangle with respect to the
lexicographical order In mathematics, the lexicographic or lexicographical order (also known as lexical order, or dictionary order) is a generalization of the alphabetical order of the dictionaries to sequences of ordered symbols or, more generally, of elements of a ...
, which is possible only a finite number of times. Conor McBride observes that "by expressing the structure which unification exploits" in a dependently typed language such as
Epigram An epigram is a brief, interesting, memorable, sometimes surprising or satirical statement. The word derives from the Greek (, "inscription", from [], "to write on, to inscribe"). This literary device has been practiced for over two millennia ...
, Robinson's unification algorithm can be made recursive on the number of variables, in which case a separate termination proof becomes unnecessary.


Examples of syntactic unification of first-order terms

In the Prolog syntactical convention a symbol starting with an upper case letter is a variable name; a symbol that starts with a lowercase letter is a function symbol; the comma is used as the logical ''and'' operator. For mathematical notation, ''x,y,z'' are used as variables, ''f,g'' as function symbols, and ''a,b'' as constants. The most general unifier of a syntactic first-order unification problem of Term (logic)#Operations with terms, size may have a size of . For example, the problem has the most general unifier , cf. picture. In order to avoid exponential time complexity caused by such blow-up, advanced unification algorithms work on
directed acyclic graph In mathematics, particularly graph theory, and computer science, a directed acyclic graph (DAG) is a directed graph with no directed cycles. That is, it consists of vertices and edges (also called ''arcs''), with each edge directed from one ...
s (dags) rather than trees.


Application: unification in logic programming

The concept of unification is one of the main ideas behind
logic programming Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
. Specifically, unification is a basic building block of resolution, a rule of inference for determining formula satisfiability. In
Prolog Prolog is a logic programming language that has its origins in artificial intelligence, automated theorem proving, and computational linguistics. Prolog has its roots in first-order logic, a formal logic. Unlike many other programming language ...
, the equality symbol = implies first-order syntactic unification. It represents the mechanism of binding the contents of variables and can be viewed as a kind of one-time assignment. In Prolog: # A variable can be unified with a constant, a term, or another variable, thus effectively becoming its alias. In many modern Prolog dialects and in
first-order logic First-order logic, also called predicate logic, predicate calculus, or quantificational logic, is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantified variables over ...
, a variable cannot be unified with a term that contains it; this is the so-called '' occurs check''. # Two constants can be unified only if they are identical. # Similarly, a term can be unified with another term if the top function symbols and arities of the terms are identical and if the parameters can be unified simultaneously. Note that this is a recursive behavior. # Most operations, including +, -, *, /, are not evaluated by =. So for example 1+2 = 3 is not satisfiable because they are syntactically different. The use of integer arithmetic constraints #= introduces a form of E-unification for which these operations are interpreted and evaluated.


Application: type inference

Type inference Type inference, sometimes called type reconstruction, refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some bran ...
algorithms are typically based on unification, particularly Hindley-Milner type inference which is used by the functional languages
Haskell Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
and ML. For example, when attempting to infer the type of the Haskell expression True : x'/code>, the compiler will use the type a -> -> /code> of the list construction function (:), the type Bool of the first argument True, and the type har/code> of the second argument x'/code>. The polymorphic type variable a will be unified with Bool and the second argument /code> will be unified with har/code>. a cannot be both Bool and Char at the same time, therefore this expression is not correctly typed. Like for Prolog, an algorithm for type inference can be given: # Any type variable unifies with any type expression, and is instantiated to that expression. A specific theory might restrict this rule with an occurs check. # Two type constants unify only if they are the same type. # Two type constructions unify only if they are applications of the same type constructor and all of their component types recursively unify.


Application: Feature Structure Unification

Unification has been used in different research areas of computational linguistics.


Order-sorted unification

'' Order-sorted logic'' allows one to assign a ''sort'', or ''type'', to each term, and to declare a sort ''s''1 a ''subsort'' of another sort ''s''2, commonly written as ''s''1 ⊆ ''s''2. For example, when reаsoning about biological creatures, it is useful to declare a sort ''dog'' to be a subsort of a sort ''animal''. Wherever a term of some sort ''s'' is required, a term of any subsort of ''s'' may be supplied instead. For example, assuming a function declaration ''mother'': ''animal'' → ''animal'', and a constant declaration ''lassie'': ''dog'', the term ''mother''(''lassie'') is perfectly valid and has the sort ''animal''. In order to supply the information that the mother of a dog is a dog in turn, another declaration ''mother'': ''dog'' → ''dog'' may be issued; this is called ''function overloading'', similar to
overloading in programming languages In programming language theory and type theory, polymorphism is the use of one symbol to represent multiple different types.: "Polymorphic types are types whose operations are applicable to values of more than one type." In object-oriented progr ...
.
Walther Walther () is a masculine given name and a surname. It is a German form of Walter, which is derived from the Old High German '' Walthari'', containing the elements ''wald'' -"power", "brightness" or "forest" and ''hari'' -"warrior". The name was ...
gave a unification algorithm for terms in order-sorted logic, requiring for any two declared sorts ''s''1, ''s''2 their intersection ''s''1 ∩ ''s''2 to be declared, too: if ''x''1 and ''x''2 is a variable of sort ''s''1 and ''s''2, respectively, the equation ''x''1 ≐ ''x''2 has the solution , where ''x'': ''s''1 ∩ ''s''2. After incorporating this algorithm into a clause-based automated theorem prover, he could solve a benchmark problem by translating it into order-sorted logic, thereby boiling it down an order of magnitude, as many unary predicates turned into sorts. Smolka generalized order-sorted logic to allow for
parametric polymorphism In programming languages and type theory, parametric polymorphism allows a single piece of code to be given a "generic" type, using variables in place of actual types, and then instantiated with particular types as needed. Parametrically polymorph ...
. In his framework, subsort declarations are propagated to complex type expressions. As a programming example, a parametric sort ''list''(''X'') may be declared (with ''X'' being a type parameter as in a C++ template), and from a subsort declaration ''int'' ⊆ ''float'' the relation ''list''(''int'') ⊆ ''list''(''float'') is automatically inferred, meaning that each list of integers is also a list of floats. Schmidt-Schauß generalized order-sorted logic to allow for term declarations. As an example, assuming subsort declarations ''even'' ⊆ ''int'' and ''odd'' ⊆ ''int'', a term declaration like ∀ ''i'' : ''int''. (''i'' + ''i'') : ''even'' allows to declare a property of integer addition that could not be expressed by ordinary overloading.


Unification of infinite terms

Background on infinite trees: * * * Unification algorithm, Prolog II: * * Applications: *


E-unification

E-unification is the problem of finding solutions to a given set of equations, taking into account some equational background knowledge ''E''. The latter is given as a set of universal equalities. For some particular sets ''E'', equation solving
algorithms In mathematics and computer science, an algorithm () is a finite sequence of mathematically rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for per ...
(a.k.a. ''E-unification algorithms'') have been devised; for others it has been proven that no such algorithms can exist. For example, if and are distinct constants, the
equation In mathematics, an equation is a mathematical formula that expresses the equality of two expressions, by connecting them with the equals sign . The word ''equation'' and its cognates in other languages may have subtly different meanings; for ...
has no solution with respect to purely syntactic unification, where nothing is known about the operator . However, if the is known to be
commutative In mathematics, a binary operation is commutative if changing the order of the operands does not change the result. It is a fundamental property of many binary operations, and many mathematical proofs depend on it. Perhaps most familiar as a pr ...
, then the substitution solves the above equation, since : The background knowledge ''E'' could state the commutativity of by the universal equality " for all ".


Particular background knowledge sets E

It is said that ''unification is decidable'' for a theory, if a unification algorithm has been devised for it that terminates for ''any'' input problem. It is said that ''unification is semi-decidable'' for a theory, if a unification algorithm has been devised for it that terminates for any ''solvable'' input problem, but may keep searching forever for solutions of an unsolvable input problem. ''Unification is decidable'' for the following theories: * * , * ,,F. Fages, ''Associative-Commutative Unification'', J. Symbolic Comput., vol.3, no.3, pp. 257–275, 1987 * ,,in the presence of equality , equalities and are equivalent, similar for and * , * , (monoid) * *
Boolean ring In mathematics, a Boolean ring is a ring for which for all in , that is, a ring that consists of only idempotent elements. An example is the ring of integers modulo 2. Every Boolean ring gives rise to a Boolean algebra, with ring multiplicat ...
s *
Abelian group In mathematics, an abelian group, also called a commutative group, is a group in which the result of applying the group operation to two group elements does not depend on the order in which they are written. That is, the group operation is commu ...
s, even if the signature is expanded by arbitrary additional symbols (but not axioms)Baader and Snyder (2001), p. 486. * K4 modal algebras ''Unification is semi-decidable'' for the following theories: * , * ,, *
Commutative ring In mathematics, a commutative ring is a Ring (mathematics), ring in which the multiplication operation is commutative. The study of commutative rings is called commutative algebra. Complementarily, noncommutative algebra is the study of ring prope ...
s


One-sided paramodulation

If there is a convergent term rewriting system ''R'' available for ''E'', the ''one-sided paramodulation'' algorithm can be used to enumerate all solutions of given equations. Starting with ''G'' being the unification problem to be solved and ''S'' being the identity substitution, rules are applied nondeterministically until the empty set appears as the actual ''G'', in which case the actual ''S'' is a unifying substitution. Depending on the order the paramodulation rules are applied, on the choice of the actual equation from ''G'', and on the choice of ''R''s rules in ''mutate'', different computations paths are possible. Only some lead to a solution, while others end at a ''G'' ≠ where no further rule is applicable (e.g. ''G'' = ). For an example, a term rewrite system ''R'' is used defining the ''append'' operator of lists built from ''cons'' and ''nil''; where ''cons''(''x'',''y'') is written in infix notation as ''x''.''y'' for brevity; e.g. ''app''(''a''.''b''.''nil'',''c''.''d''.''nil'') → ''a''.''app''(''b''.''nil'',''c''.''d''.''nil'') → ''a''.''b''.''app''(''nil'',''c''.''d''.''nil'') → ''a''.''b''.''c''.''d''.''nil'' demonstrates the concatenation of the lists ''a''.''b''.''nil'' and ''c''.''d''.''nil'', employing the rewrite rule 2,2, and 1. The equational theory ''E'' corresponding to ''R'' is the
congruence closure In mathematics, a subset of a given set is closed under an operation on the larger set if performing that operation on members of the subset always produces a member of that subset. For example, the natural numbers are closed under addition, but ...
of ''R'', both viewed as binary relations on terms. For example, ''app''(''a''.''b''.''nil'',''c''.''d''.''nil'') ≡ ''a''.''b''.''c''.''d''.''nil'' ≡ ''app''(''a''.''b''.''c''.''d''.''nil'',''nil''). The paramodulation algorithm enumerates solutions to equations with respect to that ''E'' when fed with the example ''R''. A successful example computation path for the unification problem is shown below. To avoid variable name clashes, rewrite rules are consistently renamed each time before their use by rule ''mutate''; ''v''2, ''v''3, ... are computer-generated variable names for this purpose. In each line, the chosen equation from ''G'' is highlighted in red. Each time the ''mutate'' rule is applied, the chosen rewrite rule (''1'' or ''2'') is indicated in parentheses. From the last line, the unifying substitution ''S'' = can be obtained. In fact, ''app''(''x'',''app''(''y'',''x'')) = ''app''(''a''.''nil'',''app''(''nil'',''a''.''nil'')) ≡ ''app''(''a''.''nil'',''a''.''nil'') ≡ ''a''.''app''(''nil'',''a''.''nil'') ≡ ''a''.''a''.''nil'' solves the given problem. A second successful computation path, obtainable by choosing "mutate(1), mutate(2), mutate(2), mutate(1)" leads to the substitution ''S'' = ; it is not shown here. No other path leads to a success.


Narrowing

If ''R'' is a convergent term rewriting system for ''E'', an approach alternative to the previous section consists in successive application of "narrowing steps"; this will eventually enumerate all solutions of a given equation. A narrowing step (cf. picture) consists in * choosing a nonvariable subterm of the current term, * syntactically unifying it with the left hand side of a rule from ''R'', and * replacing the instantiated rule's right hand side into the instantiated term. Formally, if is a renamed copy of a rewrite rule from ''R'', having no variables in common with a term ''s'', and the subterm is not a variable and is unifiable with via the mgu , then can be ''narrowed'' to the term , i.e. to the term , with the subterm at ''p'' replaced by . The situation that ''s'' can be narrowed to ''t'' is commonly denoted as ''s'' ↝ ''t''. Intuitively, a sequence of narrowing steps ''t''1 ↝ ''t''2 ↝ ... ↝ ''t''''n'' can be thought of as a sequence of rewrite steps ''t''1 → ''t''2 → ... → ''t''''n'', but with the initial term ''t''1 being further and further instantiated, as necessary to make each of the used rules applicable. The above example paramodulation computation corresponds to the following narrowing sequence ("↓" indicating instantiation here): The last term, ''v''2.''v''2.''nil'' can be syntactically unified with the original right hand side term ''a''.''a''.''nil''. The ''narrowing lemma'' ensures that whenever an instance of a term ''s'' can be rewritten to a term ''t'' by a convergent term rewriting system, then ''s'' and ''t'' can be narrowed and rewritten to a term and , respectively, such that is an instance of . Formally: whenever holds for some substitution σ, then there exist terms such that and and for some substitution τ.


Higher-order unification

Many applications require one to consider the unification of typed lambda-terms instead of first-order terms. Such unification is often called ''higher-order unification''. Higher-order unification is undecidable, and such unification problems do not have most general unifiers. For example, the unification problem , where the only variable is ''f'', has the solutions , , , , and . A well studied branch of higher-order unification is the problem of unifying simply typed lambda terms modulo the equality determined by αβη conversions.
Gérard Huet Gérard Pierre Huet (; born 7 July 1947) is a French computer scientist, linguist and mathematician. He is senior research director at INRIA and mostly known for his major and seminal contributions to type theory, programming language theory and ...
gave a semi-decidable (pre-)unification algorithm that allows a systematic search of the space of unifiers (generalizing the unification algorithm of Martelli-Montanari with rules for terms containing higher-order variables) that seems to work sufficiently well in practice. Huet and Gilles Dowek have written articles surveying this topic. Several subsets of higher-order unification are well-behaved, in that they are decidable and have a most-general unifier for solvable problems. One such subset is the previously described first-order terms. Higher-order pattern unification, due to Dale Miller, is another such subset. The higher-order logic programming languages
λProlog λProlog, also written lambda Prolog, is a logic programming language featuring polymorphic typing, modular programming, and higher-order programming. These extensions to Prolog are derived from the higher-order hereditary Harrop formulas used ...
and
Twelf Twelf is an implementation of the logical framework LF developed by Frank Pfenning and Carsten Schürmann at Carnegie Mellon University. It is used for logic programming and for the formalization of programming language theory. Introduction At ...
have switched from full higher-order unification to implementing only the pattern fragment; surprisingly pattern unification is sufficient for almost all programs, if each non-pattern unification problem is suspended until a subsequent substitution puts the unification into the pattern fragment. A superset of pattern unification called functions-as-constructors unification is also well-behaved. The Zipperposition theorem prover has an algorithm integrating these well-behaved subsets into a full higher-order unification algorithm. In computational linguistics, one of the most influential theories of
elliptical construction In linguistics, ellipsis () or an elliptical construction is the omission from a clause of one or more words that are nevertheless understood in the context of the remaining elements. There are numerous distinct types of ellipsis acknowledged in ...
is that ellipses are represented by free variables whose values are then determined using Higher-Order Unification. For instance, the semantic representation of "Jon likes Mary and Peter does too" is and the value of R (the semantic representation of the ellipsis) is determined by the equation . The process of solving such equations is called Higher-Order Unification. Wayne Snyder gave a generalization of both higher-order unification and E-unification, i.e. an algorithm to unify lambda-terms modulo an equational theory.


See also

*
Rewriting In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
* Admissible rule * Explicit substitution in
lambda calculus In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
*Mathematical
equation solving In mathematics, to solve an equation is to find its solutions, which are the values (numbers, functions, sets, etc.) that fulfill the condition stated by the equation, consisting generally of two expressions related by an equals sign. When s ...
* Dis-unification: solving inequations between symbolic expression * Anti-unification: computing a least general generalization (lgg) of two terms, dual to computing a most general instance (mgu) * Subsumption lattice, a lattice having unification as meet and anti-unification as join *
Ontology alignment Ontology alignment, or ontology matching, is the process of determining correspondences between concepts in ontologies. A set of correspondences is also called an alignment. The phrase takes on a slightly different meaning, in computer science, c ...
(use ''unification'' with
semantic equivalence {{about, semantic equivalence of metadata, the concept in mathematical logic, Logical equivalence, the concept in linguistic semantics, Semantic equivalence (linguistics) In computer metadata, semantic equivalence is a declaration that two data elem ...
)


Notes


References


Further reading

* Franz Baader and Wayne Snyder (2001)
"Unification Theory"
In John Alan Robinson and
Andrei Voronkov Andrei Anatolievič Voronkov (born 1959) is a Professor of Formal methods in the Department of Computer Science, University of Manchester, Department of Computer Science at the University of Manchester. Education Voronkov was educated at Novosibir ...
, editors, ''
Handbook of Automated Reasoning The ''Handbook of Automated Reasoning'' (, 2128 pages) is a collection of survey articles on the field of automated reasoning. Published in June 2001 by MIT Press, it is edited by John Alan Robinson and Andrei Voronkov. Volume 1 describes methods ...
'', volume I, pages 447–533. Elsevier Science Publishers. * Gilles Dowek (2001)
"Higher-order Unification and Matching"
. In ''Handbook of Automated Reasoning''. * Franz Baader and Tobias Nipkow (1998)
''Term Rewriting and All That''
Cambridge University Press. * Franz Baader and (1993). "Unification Theory". In ''Handbook of Logic in Artificial Intelligence and Logic Programming''. * Jean-Pierre Jouannaud and Claude Kirchner (1991). "Solving Equations in Abstract Algebras: A Rule-Based Survey of Unification". In ''Computational Logic: Essays in Honor of Alan Robinson''. *
Nachum Dershowitz Nachum Dershowitz () is an Israeli computer scientist, known e.g. for the Dershowitz–Manna ordering and the Path_ordering_(term_rewriting), multiset path ordering used to prove Rewriting#Termination, termination of term rewrite systems. Educat ...
and Jean-Pierre Jouannaud, ''Rewrite Systems'', in:
Jan van Leeuwen Jan van Leeuwen (born 17 December 1946 in Waddinxveen) is a Dutch computer scientist and emeritus professor of computer science at the Department of Information and Computing Sciences at Utrecht University.
(ed.), '' Handbook of Theoretical Computer Science'', volume B ''Formal Models and Semantics'', Elsevier, 1990, pp. 243–320 * Jörg H. Siekmann (1990). "Unification Theory". In Claude Kirchner (editor) ''Unification''. Academic Press. * *
Gérard Huet Gérard Pierre Huet (; born 7 July 1947) is a French computer scientist, linguist and mathematician. He is senior research director at INRIA and mostly known for his major and seminal contributions to type theory, programming language theory and ...
and Derek C. Oppen (1980)
"Equations and Rewrite Rules: A Survey"
Technical report. Stanford University. * {{cite journal , last1 = Raulefs , first1 = Peter , last2 = Siekmann , first2 = Jörg , last3 = Szabó , first3 = P. , last4 = Unvericht , first4 = E. , year = 1979 , title = A short survey on the state of the art in matching and unification problems , journal = ACM SIGSAM Bulletin , volume = 13 , issue = 2 , pages = 14–20 , doi = 10.1145/1089208.1089210 , s2cid = 17033087 * Claude Kirchner and Hélène Kirchner. ''Rewriting, Solving, Proving''. In preparation. Automated theorem proving Logic programming Rewriting systems Logic in computer science Type theory