Jump to content

Unification (computer science)

From Wikipedia, the free encyclopedia

Inlogicandcomputer science,specificallyautomated reasoning,unificationis an algorithmic process ofsolving equationsbetween symbolicexpressions,each of the formLeft-hand side = Right-hand side.For example, usingx,y,zas variables, and takingfto be anuninterpreted function,thesingletonequation set {f(1,y) =f(x,2) } is a syntactic first-order unification problem that has the substitution {x1,y↦ 2 } 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 overfirst-order termsand equivalence is syntactic. This version of unification has a unique "best" answer and is used inlogic programmingand programming languagetype systemimplementation, especially inHindley–Milnerbasedtype inferencealgorithms. In higher-order unification, possibly restricted tohigher-order pattern unification,terms may include lambda expressions, and equivalence is up to beta-reduction. This version is used in proof assistants and higher-order logic programming, for exampleIsabelle,Twelf,andlambdaProlog.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 inSMT solvers,term rewritingalgorithms, andcryptographic protocolanalysis.

Formal definition[edit]

Aunification problemis a finite setE={l1r1,...,lnrn}of equations to solve, whereli,riare in the setoftermsorexpressions.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 representingfunctions,are allowed in an expression, the process is calledhigher-order unification,otherwisefirst-order unification.If a solution is required to make both sides of each equation literally equal, the process is calledsyntacticorfreeunification,otherwisesemanticorequational unification,orE-unification,orunification 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 thepattern.[1]

Prerequisites[edit]

Formally, a unification approach presupposes

  • An infinite setofvariables.For higher-order unification, it is convenient to choosedisjoint from the set oflambda-term bound variables.
  • A setoftermssuch that.For first-order unification,is usually the set offirst-order terms(terms built from variable and function symbols). For higher-order unificationconsists of first-order terms andlambda terms(terms containing some higher-order variables).
  • A mapping,assigning to each termthe setoffree variablesoccurring in.
  • A theory orequivalence relationon,indicating which terms are considered equal. For first-order E-unification,reflects the background knowledge about certain function symbols; for example, ifis considered commutative,ifresults fromby swapping the arguments ofat some (possibly all) occurrences.[note 1]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 thefree theory(because it is afree object), theempty theory(because the set of equationalsentences,or the background knowledge, is empty), thetheory ofuninterpreted functions(because unification is done on uninterpretedterms), or thetheory ofconstructors(because all function symbols just build up data terms, rather than operating on them). For higher-order unification, usuallyifandareAlpha equivalent.

As an example of how the set of terms and theory affects the set of solutions, the syntactic first-order unification problem {y=cons(2,y) } has no solution over the set offinite terms.However, it has the single solution {ycons(2,cons(2,cons(2,...))) } over the set ofinfinite treeterms. Similarly, the semantic first-order unification problem {ax=xa} has each substitution of the form {xa⋅...⋅a} as a solution in asemigroup,i.e. if (⋅) is consideredassociative.But the same problem, viewed in anabelian group,where (⋅) is considered alsocommutative,has any substitution at all as a solution.

As an example of higher-order unification, the singleton set {a=y(x) } is a syntactic second-order unification problem, sinceyis a function variable. One solution is {xa,y↦ (identity function) }; another one is {y↦ (constant functionmapping each value toa),x(any value)}.

Substitution[edit]

Asubstitutionis a mappingfrom variables to terms; the notationrefers to a substitution mapping each variableto the term,for,and every other variable to itself; themust be pairwise distinct.Applyingthat substitution to a termis written inpostfix notationas;it means to (simultaneously) replace every occurrence of each variablein the termby.The resultof applying a substitutionto a termis called aninstanceof that term. As a first-order example, applying the substitution{xh(a,y),zb}to the term

yields

Generalization, specialization[edit]

If a termhas an instance equivalent to a term,that is, iffor some substitution,thenis calledmore generalthan,andis calledmore specialthan, orsubsumedby,.For example,is more general thanif ⊕ iscommutative,since then.

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 calledvariants,orrenamingsof each other. For example, is a variant of , since and However,isnota variant of,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,a term may be both more general and more special than a structurally different term. For example, if ⊕ isidempotent,that is, if always,then the termis more general than,[note 2]and vice versa,[note 3]althoughandare of different structure.

A substitutionismore specialthan, orsubsumedby, a substitutionifis subsumed byfor each term.We also say thatis more general than.More formally, take a nonempty infinite setof auxiliary variables such that no equationin the unification problem contains variables from.Then a substitutionis subsumed by another substitutionif there is a substitutionsuch that for all terms,.[2] For instanceis subsumed by,using,but is not subsumed by,asis not an instance of .[3]

Solution set[edit]

A substitution σ is asolutionof the unification problemEifliσ ≡riσfor.Such a substitution is also called aunifierofE. For example, if ⊕ isassociative,the unification problem {xaax} has the solutions {xa}, {xaa}, {xaaa}, etc., while the problem {xaa} has no solution.

For a given unification problemE,a setSof unifiers is calledcompleteif each solution substitution is subsumed by some substitution inS.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 setSis calledminimalif 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.[4]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.[2]For first-order syntactical unification, Martelli and Montanari[5]gave an algorithm that reports unsolvability or computes a single unifier that by itself forms a complete and minimal substitution set, called themost general unifier.

Syntactic unification of first-order terms[edit]

Schematic triangle diagram of syntactically unifying termst1andt2by a substitution σ

Syntactic unification of first-order termsis the most widely used unification framework. It is based onTbeing the set offirst-order terms(over some given setVof variables,Cof constants andFnofn-ary function symbols) and on ≡ beingsyntactic equality. In this framework, each solvable unification problem{l1r1,...,lnrn}has a complete, and obviously minimal,singletonsolution set{σ}. Its memberσis called themost 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.l1σ=r1σ∧... ∧lnσ=rnσ. Any unifier of the problem is subsumed[note 4]by the mguσ. The mgu is unique up to variants: ifS1andS2are both complete and minimal solution sets of the same syntactical unification problem, thenS1= {σ1} andS2= {σ2} for some substitutionsσ1andσ2,and1is a variant of2for each variablexoccurring in the problem.

For example, the unification problem {xz,yf(x) } has a unifier {xz,yf(z) }, because

x {xz,yf(z) } = z = z {xz,yf(z) } ,and
y {xz,yf(z) } = f(z) = f(x) {xz,yf(z) } .

This is also the most general unifier. Other unifiers for the same problem are e.g. {xf(x1),yf(f(x1)),zf(x1) }, {xf(f(x1)),yf(f(f(x1))),zf(f(x1)) }, and so on; there are infinitely many similar unifiers.

As another example, the problemg(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 outermostgandf,respectively, and terms with different outermost function symbols are syntactically different.

Unification algorithms[edit]

Robinson's 1965 unification algorithm

Symbols are ordered such that variables precede function symbols. Terms are ordered by increasing written length; equally long terms are orderedlexicographically.[6]For a setTof terms, its disagreement pathpis the lexicographically least path where two member terms ofTdiffer. Its disagreement set is the set ofsubtermsstarting atp, formally:{t|p:}.[7]

Algorithm:[8]
Given a setTof terms to be unified
Letinitially be theidentity substitution
do forever
ifis asingleton setthen
return
fi
letDbe the disagreement set of
lets,tbe the two lexicographically least terms inD
ifsis not a variableorsoccurs intthen
return"NONUNIFIABLE"
fi

done

Jacques Herbranddiscussed the basic concepts of unification and sketched an algorithm in 1930.[9][10][11]But most authors attribute the first unification algorithm toJohn Alan Robinson(cf. box).[12][13][note 5]Robinson's algorithm had worst-case exponential behavior in both time and space.[11][15]Numerous authors have proposed more efficient unification algorithms.[16]Algorithms with worst-case linear-time behavior were discovered independently byMartelli & Montanari (1976)andPaterson & Wegman (1976)[note 6]Baader & Snyder (2001)uses a similar technique as Paterson-Wegman, hence is linear,[17]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 aDAGrepresentation.de Champeaux (2022)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 anobject-orientedrepresentation 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 programmaticobjectsprovides opportunities for optimizing other logic operations as well.[15]

The following algorithm is commonly presented and originates fromMartelli & Montanari (1982).[note 7]Given a finite setof potential equations, the algorithm applies rules to transform it to an equivalent set of equations of the form {x1u1,...,xmum} wherex1,...,xmare distinct variables andu1,...,umare terms containing none of thexi. 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 variablexin problemGwith termtis denotedG{xt}. For simplicity, constant symbols are regarded as function symbols having zero arguments.

delete
decompose
ifor conflict
swap
ifand eliminate[note 8]
if check

Occurs check[edit]

An attempt to unify a variablexwith a term containingxas a strict subtermxf(...,x,...) would lead to an infinite term as solution forx,sincexwould occur as a subterm of itself. In the set of (finite) first-order terms as defined above, the equationxf(...,x,...) has no solution; hence theeliminaterule may only be applied ifxvars(t). Since that additional check, calledoccurs 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 termsbelow.

Proof of termination[edit]

For the proof of termination of the algorithm consider a triple wherenvaris the number of variables that occur more than once in the equation set,nlhsis the number of function symbols and constants on the left hand sides of potential equations, andneqnis the number of equations. When ruleeliminateis applied,nvardecreases, sincexis eliminated fromGand kept only in {xt}. Applying any other rule can never increasenvaragain. When ruledecompose,conflict,orswapis applied,nlhsdecreases, since at least the left hand side's outermostfdisappears. Applying any of the remaining rulesdeleteorcheckcan't increasenlhs,but decreasesneqn. Hence, any rule application decreases the triplewith respect to thelexicographical order,which is possible only a finite number of times.

Conor McBrideobserves[18]that "by expressing the structure which unification exploits" in adependently typedlanguage such asEpigram,Robinson's unification algorithmcan be maderecursive on the number of variables,in which case a separate termination proof becomes unnecessary.

Examples of syntactic unification of first-order terms[edit]

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 logicalandoperator. For mathematical notation,x,y,zare used as variables,f,gas function symbols, anda,bas constants.

Prolog notation Mathematical notation Unifying substitution Explanation
a = a {a=a} {} Succeeds. (tautology)
a = b {a=b} aandbdo not match
X = X {x=x} {} Succeeds. (tautology)
a = X {a=x} {xa} xis unified with the constanta
X = Y {x=y} {xy} xandyare aliased
f(a,X) = f(a,b) {f(a,x) =f(a,b) } {xb} function and constant symbols match,xis unified with the constantb
f(a) = g(a) {f(a) =g(a) } fandgdo not match
f(X) = f(Y) {f(x) =f(y) } {xy} xandyare aliased
f(X) = g(Y) {f(x) =g(y) } fandgdo not match
f(X) = f(Y,Z) {f(x) =f(y,z) } Fails. Theffunction symbols have different arity
f(g(X)) = f(Y) {f(g(x)) =f(y) } {yg(x) } Unifiesywith the term
f(g(X),X) = f(Y,a) {f(g(x),x) =f(y,a) } {xa,yg(a) } Unifiesxwith constanta,andywith the term
X = f(X) {x=f(x) } should be ⊥ Returns ⊥ in first-order logic and many modern Prolog dialects (enforced by theoccurs check).

Succeeds in traditional Prolog and in Prolog II, unifyingxwith infinite termx=f(f(f(f(...)))).

X = Y, Y = a {x=y,y=a} {xa,ya} Bothxandyare unified with the constanta
a = Y, X = Y {a=y,x=y} {xa,ya} As above (order of equations in set doesn't matter)
X = a, b = X {x=a,b=x} Fails.aandbdo not match, soxcan't be unified with both
Two terms with an exponentially larger tree for their least common instance. Itsdagrepresentation (rightmost, orange part) is still of linear size.

The most general unifier of a syntactic first-order unification problem ofsizenmay have a size of2n.For example, the problemhas the most general unifier,cf. picture. In order to avoid exponential time complexity caused by such blow-up, advanced unification algorithms work ondirected acyclic graphs(dags) rather than trees.[19]

Application: unification in logic programming[edit]

The concept of unification is one of the main ideas behindlogic programming.Specifically, unification is a basic building block ofresolution,a rule of inference for determining formula satisfiability. InProlog,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:

  1. Avariablecan be unified with a constant, a term, or another variable, thus effectively becoming its alias. In many modern Prolog dialects and infirst-order logic,a variable cannot be unified with a term that contains it; this is the so-calledoccurs check.
  2. Two constants can be unified only if they are identical.
  3. Similarly, a term can be unified with another term if the top function symbols andaritiesof the terms are identical and if the parameters can be unified simultaneously. Note that this is a recursive behavior.
  4. Most operations, including+,-,*,/,are not evaluated by=.So for example1+2 = 3is 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.[20]

Application: type inference[edit]

Type inferencealgorithms are typically based on unification, particularlyHindley-Milnertype inference which is used by the functional languagesHaskellandML.For example, when attempting to infer the type of the Haskell expressionTrue: ['x'],the compiler will use the typea -> [a] -> [a]of the list construction function(:),the typeBoolof the first argumentTrue,and the type[Char]of the second argument['x'].The polymorphic type variableawill be unified withBooland the second argument[a]will be unified with[Char].acannot be bothBoolandCharat the same time, therefore this expression is not correctly typed.

Like for Prolog, an algorithm for type inference can be given:

  1. 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.
  2. Two type constants unify only if they are the same type.
  3. 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[edit]

Unification has been used in different research areas of computational linguistics.[21][22]

Order-sorted unification[edit]

Order-sorted logicallows one to assign asort,ortype,to each term, and to declare a sorts1asubsortof another sorts2,commonly written ass1s2.For example, when reаsoning about biological creatures, it is useful to declare a sortdogto be a subsort of a sortanimal.Wherever a term of some sortsis required, a term of any subsort ofsmay be supplied instead. For example, assuming a function declarationmother:animalanimal,and a constant declarationlassie:dog,the termmother(lassie) is perfectly valid and has the sortanimal.In order to supply the information that the mother of a dog is a dog in turn, another declarationmother:dogdogmay be issued; this is calledfunction overloading,similar tooverloading in programming languages.

Walthergave a unification algorithm for terms in order-sorted logic, requiring for any two declared sortss1,s2their intersections1s2to be declared, too: ifx1andx2is a variable of sorts1ands2,respectively, the equationx1x2has the solution {x1=x,x2=x}, wherex:s1s2. [23] 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 forparametric polymorphism. [24] In his framework, subsort declarations are propagated to complex type expressions. As a programming example, a parametric sortlist(X) may be declared (withXbeing a type parameter as in aC++ template), and from a subsort declarationintfloatthe relationlist(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. [25] As an example, assuming subsort declarationsevenintandoddint,a term declaration like ∀i:int.(i+i):evenallows to declare a property of integer addition that could not be expressed by ordinary overloading.

Unification of infinite terms[edit]

Background on infinite trees:

  • B. Courcelle(1983)."Fundamental Properties of Infinite Trees".Theoret. Comput. Sci.25(2): 95–169.doi:10.1016/0304-3975(83)90059-2.
  • Michael J. Maher (Jul 1988). "Complete Axiomatizations of the Algebras of Finite, Rational and Infinite Trees".Proc. IEEE 3rd Annual Symp. on Logic in Computer Science, Edinburgh.pp. 348–357.
  • Joxan Jaffar; Peter J. Stuckey (1986)."Semantics of Infinite Tree Logic Programming".Theoretical Computer Science.46:141–158.doi:10.1016/0304-3975(86)90027-7.

Unification algorithm, Prolog II:

  • A. Colmerauer(1982). K.L. Clark; S.-A. Tarnlund (eds.).Prolog and Infinite Trees.Academic Press.
  • Alain Colmerauer (1984). "Equations and Inequations on Finite and Infinite Trees". In ICOT (ed.).Proc. Int. Conf. on Fifth Generation Computer Systems.pp. 85–99.

Applications:

E-unification[edit]

E-unificationis the problem of finding solutions to a given set ofequations, taking into account some equational background knowledgeE. The latter is given as a set of universalequalities. For some particular setsE,equation solvingalgorithms(a.k.a.E-unification algorithms) have been devised; for others it has been proven that no such algorithms can exist.

For example, ifaandbare distinct constants, theequationhas no solution with respect to purelysyntactic unification, where nothing is known about the operator. However, if theis known to becommutative, then the substitution{xb,ya}solves the above equation, since

{xb,ya}
= bysubstitution application
= by commutativity of
= {xb,ya} by (converse) substitution application

The background knowledgeEcould state the commutativity ofby the universal equality "for allu,v".

Particular background knowledge sets E[edit]

Used naming conventions
u,v,w: = A Associativity of
u,v: = C Commutativity of
u,v,w: = Dl Left distributivity ofover
u,v,w: = Dr Right distributivity ofover
u: = u I Idempotence of
u: = u Nl Left neutral elementnwith respect to
u: = u Nr Right neutral elementnwith respect to

It is said thatunification is decidablefor a theory, if a unification algorithm has been devised for it that terminates foranyinput problem. It is said thatunification issemi-decidablefor a theory, if a unification algorithm has been devised for it that terminates for anysolvableinput problem, but may keep searching forever for solutions of an unsolvable input problem.

Unification is decidablefor the following theories:

Unification is semi-decidablefor the following theories:

One-sided paramodulation[edit]

If there is aconvergent term rewriting systemRavailable forE, theone-sided paramodulationalgorithm[38] can be used to enumerate all solutions of given equations.

One-sided paramodulation rules
G∪ {f(s1,...,sn) ≐f(t1,...,tn) } ;S G∪ {s1t1,...,sntn} ;S decompose
G∪ {xt} ;S G{xt} ;S{xt} ∪ {xt} if the variablexdoesn't occur int eliminate
G∪ {f(s1,...,sn) ≐t} ;S G∪ {s1≐ u1,...,sn≐ un,rt} ;S iff(u1,...,un) →ris a rule fromR mutate
G∪ {f(s1,...,sn) ≐y} ;S G∪ {s1y1,...,snyn,yf(y1,...,yn) } ;S ify1,...,ynare new variables imitate

Starting withGbeing the unification problem to be solved andSbeing the identity substitution, rules are applied nondeterministically until the empty set appears as the actualG,in which case the actualSis a unifying substitution. Depending on the order the paramodulation rules are applied, on the choice of the actual equation fromG,and on the choice ofR's rules inmutate,different computations paths are possible. Only some lead to a solution, while others end at aG≠ {} where no further rule is applicable (e.g.G= {f(...) ≐g(...) }).

Example term rewrite systemR
1 app(nil,z) z
2 app(x.y,z) x.app(y,z)

For an example, a term rewrite systemRis used defining theappendoperator of lists built fromconsandnil;wherecons(x,y) is written in infix notation asx.yfor 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.nildemonstrates the concatenation of the listsa.b.nilandc.d.nil,employing the rewrite rule 2,2, and 1. The equational theoryEcorresponding toRis thecongruence closureofR,both viewed as binary relations on terms. For example,app(a.b.nil,c.d.nil) ≡a.b.c.d.nilapp(a.b.c.d.nil,nil). The paramodulation algorithm enumerates solutions to equations with respect to thatEwhen fed with the exampleR.

A successful example computation path for the unification problem {app(x,app(y,x)) ≐a.a.nil} is shown below. To avoid variable name clashes, rewrite rules are consistently renamed each time before their use by rulemutate;v2,v3,... are computer-generated variable names for this purpose. In each line, the chosen equation fromGis highlighted in red. Each time themutaterule is applied, the chosen rewrite rule (1or2) is indicated in parentheses. From the last line, the unifying substitutionS= {ynil,xa.nil} can be obtained. In fact, app(x,app(y,x)) {ynil,xa.nil} =app(a.nil,app(nil,a.nil)) ≡app(a.nil,a.nil) ≡a.app(nil,a.nil) ≡a.a.nilsolves the given problem. A second successful computation path, obtainable by choosing "mutate(1), mutate(2), mutate(2), mutate(1)" leads to the substitutionS= {ya.a.nil,xnil}; it is not shown here. No other path leads to a success.

Example unifier computation
Used rule G S
{app(x,app(y,x)) ≐a.a.nil} {}
mutate(2) {xv2.v3,app(y,x) ≐v4,v2.app(v3,v4) ≐a.a.nil} {}
decompose {xv2.v3,app(y,x) ≐v4,v2a,app(v3,v4) ≐a.nil} {}
eliminate {app(y,v2.v3) ≐v4,v2a,app(v3,v4) ≐a.nil} {xv2.v3}
eliminate {app(y,a.v3) ≐v4,app(v3,v4) ≐a.nil} {xa.v3}
mutate(1) {ynil,a.v3v5,v5v4,app(v3,v4) ≐a.nil} {xa.v3}
eliminate {ynil,a.v3v4,app(v3,v4) ≐a.nil} {xa.v3}
eliminate {a.v3v4,app(v3,v4) ≐a.nil} {ynil,xa.v3}
mutate(1) {a.v3v4,v3nil,v4v6,v6a.nil} {ynil,xa.v3}
eliminate {a.v3v4,v3nil,v4a.nil} {ynil,xa.v3}
eliminate {a.nilv4,v4a.nil} {ynil,xa.nil}
eliminate {a.nila.nil} {ynil,xa.nil}
decompose {aa,nilnil} {ynil,xa.nil}
decompose {nilnil} {ynil,xa.nil}
decompose {} {ynil,xa.nil}

Narrowing[edit]

Triangle diagram of narrowing stepstat positionpin terms,with unifying substitution σ (bottom row), using a rewrite rulelr(top row)

IfRis aconvergent term rewriting systemforE, an approach alternative to the previous section consists in successive application of "narrowingsteps "; 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 unifyingit with the left hand side of a rule fromR,and
  • replacing the instantiated rule's right hand side into the instantiated term.

Formally, iflris arenamed copyof a rewrite rule fromR,having no variables in common with a terms,and thesubterms|pis not a variable and is unifiable withlvia themguσ,thenscan benarrowedto the termt=[]p,i.e. to the term,with the subterm atpreplacedby.The situation thatscan be narrowed totis commonly denoted asst. Intuitively, a sequence of narrowing stepst1t2↝... ↝tncan be thought of as a sequence of rewrite stepst1t2→... →tn,but with the initial termt1being further and further instantiated, as necessary to make each of the used rules applicable.

Theaboveexample paramodulation computation corresponds to the following narrowing sequence ( "↓" indicating instantiation here):

app( x ,app(y, x ))
xv2.v3
app( v2.v3 ,app(y, v2.v3 )) v2.app(v3,app( y ,v2.v3))
ynil
v2.app(v3,app( nil ,v2.v3)) v2.app( v3 ,v2. v3 )
v3nil
v2.app( nil ,v2. nil ) v2.v2.nil

The last term,v2.v2.nilcan be syntactically unified with the original right hand side terma.a.nil.

Thenarrowing lemma[39]ensures that whenever an instance of a termscan be rewritten to a termtby a convergent term rewriting system, thensandtcan be narrowed and rewritten to a termsandt,respectively, such thattis an instance ofs.

Formally: whenevertholds for some substitution σ, then there exist termss,tsuch thatssandttandsτ=tfor some substitution τ.

Higher-order unification[edit]

In Goldfarb's[40]reduction ofHilbert's 10th problemto second-order unifiability, the equationcorresponds to the depicted unification problem, with function variablescorresponding toandfresh.

Many applications require one to consider the unification of typed lambda-terms instead of first-order terms. Such unification is often calledhigher-order unification.Higher-order unification isundecidable,[40][41][42]and such unification problems do not have most general unifiers. For example, the unification problem {f(a,b,a) ≐d(b,a,c) }, where the only variable isf,has the solutions {f↦ λxyz.d(y,x,c) }, {f↦ λxyz.d(y,z,c) }, {f↦ λxyz.d(y,a,c) }, {f↦ λxyz.d(b,x,c) }, {f↦ λxyz.d(b,z,c) } and {f↦ λxyz.d(b,a,c) }. 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 Huetgave asemi-decidable(pre-)unification algorithm[43]that allows a systematic search of the space of unifiers (generalizing the unification algorithm of Martelli-Montanari[5]with rules for terms containing higher-order variables) that seems to work sufficiently well in practice. Huet[44]and Gilles Dowek[45]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,[46]is another such subset. The higher-order logic programming languagesλPrologandTwelfhave 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.[47]The Zipperposition theorem prover has an algorithm integrating these well-behaved subsets into a full higher-order unification algorithm.[2]

In computational linguistics, one of the most influential theories ofelliptical constructionis 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" islike(j,m) ∧ R(p)and the value of R (the semantic representation of the ellipsis) is determined by the equationlike(j,m) = R(j).The process of solving such equations is called Higher-Order Unification.[48]

Wayne Snydergave a generalization of both higher-order unification and E-unification, i.e. an algorithm to unify lambda-terms modulo an equational theory.[49]

See also[edit]

Notes[edit]

  1. ^E.g.a⊕ (bf(x)) ≡a⊕ (f(x) ⊕b) ≡ (bf(x)) ⊕a≡ (f(x) ⊕b) ⊕a
  2. ^since
  3. ^sincez{zxy} =xy
  4. ^formally: each unifier τ satisfiesx:= ()ρfor some substitution ρ
  5. ^Robinson used first-order syntactical unification as a basic building block of hisresolutionprocedure for first-order logic, a great step forward inautomated reasoningtechnology, as it eliminated one source ofcombinatorial explosion:searching for instantiation of terms.[14]
  6. ^Independent discovery is stated inMartelli & Montanari (1982)sect.1, p.259. The journal publisher receivedPaterson & Wegman (1978)in Sep.1976.
  7. ^Alg.1, p.261. Their rule(a)corresponds to ruleswaphere,(b)todelete,(c)to bothdecomposeandconflict,and(d)to botheliminateandcheck.
  8. ^Although the rule keepsxtinG,it cannot loop forever since its preconditionxvars(G) is invalidated by its first application. More generally, the algorithm is guaranteed to terminate always, seebelow.
  9. ^abin the presence of equalityC,equalitiesNlandNrare equivalent, similar forDlandDr

References[edit]

  1. ^Dowek, Gilles (1 January 2001). "Higher-order unification and matching".Handbook of automated reasoning.Elsevier Science Publishers B. V. pp. 1009–1062.ISBN978-0-444-50812-6.Archived fromthe originalon 15 May 2019.Retrieved15 May2019.
  2. ^abcVukmirović, Petar; Bentkamp, Alexander; Nummelin, Visa (14 December 2021)."Efficient Full Higher-Order Unification".Logical Methods in Computer Science.17(4): 6919.arXiv:2011.09507.doi:10.46298/lmcs-17(4:18)2021.
  3. ^Apt, Krzysztof R. (1997).From logic programming to Prolog(1. publ ed.). London Munich: Prentice Hall. p. 24.ISBN013230368X.
  4. ^Fages, François; Huet, Gérard (1986)."Complete Sets of Unifiers and Matchers in Equational Theories".Theoretical Computer Science.43:189–200.doi:10.1016/0304-3975(86)90175-1.
  5. ^abMartelli, Alberto; Montanari, Ugo (Apr 1982). "An Efficient Unification Algorithm".ACM Trans. Program. Lang. Syst.4(2): 258–282.doi:10.1145/357162.357169.S2CID10921306.
  6. ^Robinson (1965)nr.2.5, 2.14, p.25
  7. ^Robinson (1965)nr.5.6, p.32
  8. ^Robinson (1965)nr.5.8, p.32
  9. ^J. Herbrand: Recherches sur la théorie de la démonstration.Travaux de la société des Sciences et des Lettres de Varsovie,Class III, Sciences Mathématiques et Physiques, 33, 1930.
  10. ^Jacques Herbrand (1930).Recherches sur la théorie de la demonstration(PDF)(Ph.D. thesis). A. Vol. 1252. Université de Paris.Here: p.96-97
  11. ^abClaus-Peter Wirth; Jörg Siekmann; Christoph Benzmüller; Serge Autexier (2009). Lectures on Jacques Herbrand as a Logician (SEKI Report). DFKI.arXiv:0902.4682.Here: p.56
  12. ^Robinson, J.A. (Jan 1965)."A Machine-Oriented Logic Based on the Resolution Principle".Journal of the ACM.12(1): 23–41.doi:10.1145/321250.321253.S2CID14389185.;Here: sect.5.8, p.32
  13. ^J.A. Robinson (1971)."Computational logic: The unification computation".Machine Intelligence.6:63–72.
  14. ^David A. Duffy (1991).Principles of Automated Theorem Proving.New York: Wiley.ISBN0-471-92784-8.Here: Introduction of sect.3.3.3"Unification",p.72.
  15. ^abde Champeaux, Dennis (Aug 2022)."Faster Linear Unification Algorithm"(PDF).Journal of Automated Reasoning.66:845–860.doi:10.1007/s10817-022-09635-1.
  16. ^PerMartelli & Montanari (1982):
  17. ^Baader, Franz; Snyder, Wayne (2001)."Unification Theory"(PDF).Handbook of Automated Reasoning.pp. 445–533.doi:10.1016/B978-044450813-3/50010-2.
  18. ^McBride, Conor (October 2003)."First-Order Unification by Structural Recursion".Journal of Functional Programming.13(6): 1061–1076.CiteSeerX10.1.1.25.1516.doi:10.1017/S0956796803004957.ISSN0956-7968.S2CID43523380.Retrieved30 March2012.
  19. ^e.g.Paterson & Wegman (1978)sect.2, p.159
  20. ^"Declarative integer arithmetic".SWI-Prolog.Retrieved18 February2024.
  21. ^Jonathan Calder, Mike Reape, and Hank Zeevat,,An algorithm for generation in unification categorial grammar.In Proceedings of the 4th Conference of the European Chapter of the Association for Computational Linguistics, pages 233-240, Manchester, England (10–12 April), University of Manchester Institute of Science and Technology, 1989.
  22. ^Graeme Hirst and David St-Onge,[1]Lexical chains as representations of context for the detection and correction of malapropisms, 1998.
  23. ^Walther, Christoph(1985)."A Mechanical Solution of Schubert's Steamroller by Many-Sorted Resolution"(PDF).Artif. Intell.26(2): 217–224.doi:10.1016/0004-3702(85)90029-3.Archived fromthe original(PDF)on 2011-07-08.Retrieved2013-06-28.
  24. ^Smolka, Gert (Nov 1988).Logic Programming with Polymorphically Order-Sorted Types(PDF).Int. Workshop Algebraic and Logic Programming. LNCS. Vol. 343. Springer. pp. 53–70.doi:10.1007/3-540-50667-5_58.
  25. ^Schmidt-Schauß, Manfred (Apr 1988).Computational Aspects of an Order-Sorted Logic with Term Declarations.Lecture Notes in Artificial Intelligence(LNAI). Vol. 395. Springer.
  26. ^Gordon D. Plotkin,Lattice Theoretic Properties of Subsumption,Memorandum MIP-R-77, Univ. Edinburgh, Jun 1970
  27. ^Mark E. Stickel,A Unification Algorithm for Associative-Commutative Functions,Journal of the Association for Computing Machinery, vol.28, no.3, pp. 423–434, 1981
  28. ^abF. Fages,Associative-Commutative Unification,J. Symbolic Comput., vol.3, no.3, pp. 257–275, 1987
  29. ^Franz Baader,Unification in Idempotent Semigroups is of Type Zero,J. Automat. Reasoning, vol.2, no.3, 1986
  30. ^J. Makanin,The Problem of Solvability of Equations in a Free Semi-Group,Akad. Nauk SSSR, vol.233, no.2, 1977
  31. ^F. Fages (1987)."Associative-Commutative Unification"(PDF).J. Symbolic Comput.3(3): 257–275.doi:10.1016/s0747-7171(87)80004-4.S2CID40499266.
  32. ^Martin, U., Nipkow, T. (1986). "Unification in Boolean Rings". In Jörg H. Siekmann (ed.).Proc. 8th CADE.LNCS. Vol. 230. Springer. pp. 506–513.{{cite book}}:CS1 maint: multiple names: authors list (link)
  33. ^A. Boudet; J.P. Jouannaud; M. Schmidt-Schauß (1989)."Unification of Boolean Rings and Abelian Groups".Journal of Symbolic Computation.8(5): 449–477.doi:10.1016/s0747-7171(89)80054-9.
  34. ^abBaader and Snyder (2001), p. 486.
  35. ^F. Baader and S. Ghilardi,Unification in modal and description logics,Logic Journal of the IGPL 19 (2011), no. 6, pp. 705–730.
  36. ^P. Szabo,Unifikationstheorie erster Ordnung(First Order Unification Theory), Thesis, Univ. Karlsruhe, West Germany, 1982
  37. ^Jörg H. Siekmann,Universal Unification,Proc. 7th Int. Conf. on Automated Deduction, Springer LNCS vol.170, pp. 1–42, 1984
  38. ^N. Dershowitz and G. Sivakumar,Solving Goals in Equational Languages,Proc. 1st Int. Workshop on Conditional Term Rewriting Systems, Springer LNCS vol.308, pp. 45–55, 1988
  39. ^Fay (1979). "First-Order Unification in an Equational Theory".Proc. 4th Workshop on Automated Deduction.pp. 161–167.
  40. ^abWarren D. Goldfarb(1981)."The Undecidability of the Second-Order Unification Problem".TCS.13(2): 225–230.doi:10.1016/0304-3975(81)90040-2.
  41. ^Gérard P. Huet (1973)."The Undecidability of Unification in Third Order Logic".Information and Control.22(3): 257–267.doi:10.1016/S0019-9958(73)90301-X.
  42. ^Claudio Lucchesi: The Undecidability of the Unification Problem for Third Order Languages (Research Report CSRR 2059; Department of Computer Science, University of Waterloo, 1972)
  43. ^Gérard Huet: A Unification Algorithm for typed Lambda-Calculus []
  44. ^Gérard Huet: Higher Order Unification 30 Years Later
  45. ^Gilles Dowek: Higher-Order Unification and Matching. Handbook of Automated Reasoning 2001: 1009–1062
  46. ^Miller, Dale (1991)."A Logic Programming Language with Lambda-Abstraction, Function Variables, and Simple Unification"(PDF).Journal of Logic and Computation.1(4): 497–536.doi:10.1093/logcom/1.4.497.
  47. ^Libal, Tomer; Miller, Dale (May 2022)."Functions-as-constructors higher-order unification: extended pattern unification".Annals of Mathematics and Artificial Intelligence.90(5): 455–479.doi:10.1007/s10472-021-09774-y.
  48. ^Gardent, Claire;Kohlhase, Michael;Konrad, Karsten (1997). "A Multi-Level, Higher-Order Unification Approach to Ellipsis".Submitted to EuropeanAssociation for Computational Linguistics(EACL).CiteSeerX10.1.1.55.9018.
  49. ^Wayne Snyder (Jul 1990). "Higher order E-unification".Proc. 10th Conference on Automated Deduction.LNAI. Vol. 449. Springer. pp. 573–587.

Further reading[edit]