Si n= 0, alors la substitution ιest bien un unificateur.
Supposons que n≥1, choisissons une couple (ti, vi), nous allons assumer que i= 1 :
1. Si t1=v1=x∈X, alors retourner un unificateur de (t2, v2),...,(tn, vn).
2. Si le terme t1est une variable x6∈ V ar(v1), posons
σ(z) = (t1,si z=x
z, sinon.
Soit τun unificateur de (σt2, σv2). . . (σtn, σvn), on retourne τ◦σ.
3. Le cas sym´etrique : si v1=x6∈ V ar(t1), on definit σcomme en haut – avec v1`a la
place de t1– et on retourne τ◦σ,τ´etant un unificateur de (σt2, σv2). . . (σtn, σvn).
4. Sinon, soit t1=f(a1, . . . , am) et v1=g(b1, . . . , bk). Si f=get n=m, alors
calculer alors un unificateur de
(a1, b1),...,(am, bm),(t2, v2),...,(tn, vn).
Exercice.
– Que se passe t-il si une des conditions d´ecrites ci-dessus n’est pas v´erifi´e ?
– On vient de d´ecrire, de fa¸con informelle, un algorithme r´ecursif pour calculer un unificateur.
Montrer que cet algorithme se termine. Pour cela il faudra d´efinir la taille d’un instance,
et montrer qu’`a chaque appel r´ecursif la taille de l’instance est plus petite.
Posons σ≤τs’il existe une substitution ψtelle que τ=ψ◦σ: on dira alors que σest plus
g´en´erale que τ. On peut d´emontrer que si τ≤σet σ≤τ, c.`a-d. σ=ψ1◦τet τ=ψ2◦σ,
alors les ψisont des r´enommages des variables : ψi(x)∈Xpour tout x∈X.
Proposition 2.1 Soit (t1, v1),(t2, v2),...,(tn, vn) un probl`eme d’unification. Si ce probl`eme
admet une solution, alors il admet une solution plus g´en´erales : il existe une solution σtelle
que pour toute autre solution τon a τ=ψ◦σ.
L’algorithme d´ecrit ci-dessus produit un unificateur plus g´en´erale.
3 R´esolution au premier ordre
Un langage au premier ordre Lest un couple de signatures arΩ: Ω -Net arΠ: Π -N.
Les ´el´ements de Ω sont les symboles de fonction, les ´el´ements de Π sont les symboles de
pr´edicat. Si P∈Π et arΠ(P) = n, on dira que Pest un symbole de pr´edicat n-aire.
D´efinition 3.1 – Une formule atomique est de la forme
P(t1, . . . , tn)
o`u Pest un symbole de pr´edicat n-aire et ti∈ T (Ω, X) pour i= 1, . . . , n.
3