Vous êtes sur la page 1sur 51

Logique : notes de cours

Jean-Pierre Jouannaud

12 février 2005
Table des matières

1 Logique du premier ordre 4


1.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Formules logiques . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Variables libres et variables liées . . . . . . . . . . . . . . . . . . . 5
1.1.4 Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.5 Substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Sémantique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Sémantique des connecteurs logiques . . . . . . . . . . . . . . . . 7
1.2.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Interprétation des formules . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 Validé et satisfiabilité . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.5 Conséquence et équivalence sémantiques . . . . . . . . . . . . . . 10
1.2.6 Théorie d’une structure . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Séquents, Clauses et Résolution 19


2.1 Feuille de route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Mise sous forme clausale . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Théorème de Herbrand . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Calcul des séquents clausal . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Complétude de la résolution close . . . . . . . . . . . . . . . . . . . . . . 24
2.6 Relèvement et Complétude de la résolution . . . . . . . . . . . . . . . . . 25
2.7 Lectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2
3 Unification 28
3.0.1 Problèmes d’unification . . . . . . . . . . . . . . . . . . . . . . . 28
3.0.2 Formes résolues . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.0.3 Règles de transformation . . . . . . . . . . . . . . . . . . . . . . . 30
3.0.4 Terminaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.0.5 Complétude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1 Lectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4 Clauses de Horn et PROLOG 36


4.1 Stratégies de résolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.1 Résolution binaire . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.1.2 Résolution négative . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.3 Stratégie Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2 Stratégies de résolution complètes pour les Clauses de Horn . . . . . . . . 38
4.3 Plus petit modèle de Herbrand et sémantique des programmes logiques . . . 40
4.4 Lectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5 Stratégies de Résolution et Clauses de Horn 44


5.1 Résolution binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Résolution négative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3 Clauses de Horn et stratégie input . . . . . . . . . . . . . . . . . . . . . . 45
5.4 Plus petit modèle de Herbrand et sémantique des programmes logiques . . . 48
5.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3
Chapitre 1

Logique du premier ordre

1.1 Syntaxe
1.1.1 Vocabulaire
Un langage du premier ordre est constitué à partir d’un vocabulaire comprenant
1. un ensemble (supposé infini sauf mention express du contraire) de symboles de va-
riables X = {x, y, z, . . .},
2. un ensemble de symboles de fonctions F = {f, g, h, . . . , a, b, c, . . .} munis d’arités
tel que Fn est le sous-ensemble des symboles de fonction d’arité n,
3. un ensemble de symboles de prédicats P = {P, Q, R, . . . , p, q, r, . . .} munis d’arités
tel que Pn est le sous-ensemble des symboles de prédicats d’arité n,
4. des connecteurs logiques usuels : ∧, ∨, ¬, ⇒, des constantes 0, 1, et des quantifi-
cateurs ∃, ∀. On utilisera également des symboles auxiliaires de désambiguation
comme (, ), [, ], { et }.

1.1.2 Formules logiques


Le langage logique est formé de quatre entités syntaxiques, les symboles de variables
(ou variables), les termes, les atomes et les formules, construites successivement comme
suit :
1. l’ensemble T (F, X ) des termes finis est défini comme le plus ensemble tel que
- toute variable est un terme ;
- si f est un symbole de fonction d’arité n et t1 , . . . tn sont des termes, alors
f (t1 , . . . , tn ) est un terme.
Exercice 1.1 Montrer que l’ensemble des termes représentés comme des mots sur
l’alphabet X ∪ F est un langage hors-contexte lorsque F et X sont finis.
Un terme est dit clos s’il ne contient pas de variable. On notera par T (F) l’ensemble
des termes clos sur le vocabulaire F. On représentera sovent les termes par des arbres
étiquettés. La profondeur d’un terme (t ∈ T (F, X )) est la longueur de sa plus longue
branche. Sa taille est celle de l’arbre associé. Si t ∈ T (F, X ), V ar(t) désigne l’en-
semble des variables de t. Enfin, l’égalité “syntaxique” entre termes est notée ≡.

4
Les mathématiciens ont pour habitude de remplacer les parenthèses par des règles
d’association et de priorité qui permettent de désambigüer les formules, donc de faire
leur analyse syntaxique. On supposera ainsi que tous les symboles associent à gauche,
et que leur ordre de priorité décroissant est donné par ¬ > ∧ > ∨ >⇒.
2. L’ensemble des atomes est l’ensemble des expressions de la forme P (t1 , . . . , tn ) où
P est un symbole de prédicat et t1 , . . . , tn sont des termes.
3. Le langage F(R, F, X ) des formules du premier ordre bati sur le vocabulaire
R, F, X est le plus petit ensemble contenant les constantes logiques 0 et 1 et les
atomes, et clos par les opérations qui
- à la formule A associent sa négation ¬A,
- aux formules A, B associent leur conjonction A ∧ B, leur disjonction A ∨ B, et
l’implication A ⇒ B,
- à la formule A et à la variable x associent la formule existenciellement quantifiée
∃xA, et la formule universellement quantifiée ∀xA.
Le langage des formules propositionnelles est obtenu pour X = ∅, F = ∅, P = P0 .
Un littéral est un atome (auquel cas il est dit positif) ou la négation d’un atome (au-
quel cas il est dit négatif). Une formule sans variable est dite close. Une formule dont les
quantificateurs apparaissent tous en tête est dite prénexe. Une formule universelle (resp.
existentielle) est une formule prénexe close dont les seuls quantificateurs sont universels
(resp. existentiels).
On appelle clause toute formule universelle dont les sous formules non quantifiées sont
des littéraux ou des disjonctions de littéraux. Une clause a donc la forme générale

∀x1 . . . ∀xn A1 ∨ . . . ∨ Ap ∨ ¬B1 ∨ . . . ∨ ¬Bq

où A1 , . . . , Ap , B1 , . . . , Bq désignent des atomes.

Exercice 1.2 Montrer que l’ensemble des formules et des formules prénexes représentés
comme des mots sur l’alphabet X ∪ F ∪ P est un langage hors-contexte lorsque F, P et X
sont finis.
Qu’en est-il de l’ensemble des clauses ?

1.1.3 Variables libres et variables liées


Les quantificateurs lient les variables sur lesquelles ils portent. On définit donc les va-
riables libres Var() et les variables liées BVar() d’une formule par récurrence sur la struc-
ture de la formule :
Variables Var(x) = {x} si x est une variable
BVar(x) = ∅ si x est une variable
Termes Var(f (t1 , . . . , tn )) = Var(t1 ) ∪ . . . ∪ Var(tn )
BVar(f (t1 , . . . , tn )) = ∅
Atomes Var(P (t1 , . . . , tn )) = Var(t1 ) ∪ . . . ∪ Var(tn )
BVar(P (t1 , . . . , tn )) = ∅
Formules Var(A ∧ B) = Var(A) ∪ Var(B)
BVar(A ∧ B) = BVar(A) ∪ BVar(B)
Var(A ∨ B) = Var(A) ∪ Var(B)

5
BVar(A ∨ B) = BVar(A) ∪ BVar(B)
Var(A ⇒ B) = Var(A) ∪ Var(B)
BVar(A ⇒ B) = BVar(A) ∪ BVar(B)
Var(¬A) = Var(A)
BVar(¬A) = BVar(A)
Var(∃xA) = Var(A) − {x}
BVar(∃xA) = BVar(A) ∪ {x}
Var(∀xA) = Var(A) − {x}
BVar(∀xA) = BVar(A) ∪ {x}

1.1.4 Positions

On représente souvent les formules comme des arbres, et on utilise des mots sur le vo-
cabulaire des entiers naturels pour désigner les positions des sous formules. Cela permet
de parler plus précisément des occurrences libres ou liées d’une variable x. Par exemple,
la variable x a une occurrence libre (à la position 1.1) et une occurence liée (à la position
2.1.1) dans la formule P (x) ∨ ∀xQ(x), à condition de considérer ∀x comme un opérateur
unaire indexé par la variable x. Cela a un sens informatique très précis : la variable liée x
est représentée par un pointeur sur le noeud correspondant. Deux occurrences d’une même
variable liées par le même quantificateur (∀ ou ∃) pointeront donc sur le même noeud (éti-
quetté par ∀ ou ∃). Deux variables distinctes ou bien liées par des quantificateurs différents
pointeront sur des noeuds distincts. Les variables libres pointeront sur des noeuds (∃ ou ∀
selon les cas) fictivement rajoutés au dessus du terme. Cette représentation des termes est
due à De Bruijn.
Formellement, soit N l’ensemble des entiers naturels, N+ l’ensemble des entiers na-
turels non nuls, N∗+ l’ensemble des suites (ou séquences) finies d’entiers naturels non nuls
(ou des mots sur le vocabulaire N+ ), et Λ ∈ N∗+ la suite (ou mot) vide. Chaque i ∈ N+ est
identifié à la séquence contenant l’unique élément i. Si p, q ∈ N∗+ , p · q dénote leur concaté-
nation, opération interne dont la séquence vide est élément neutre à droite et à gauche. On
comparera des positions par l’ordre préfixe : q ≤pref p s’il existe une position r telle que
p = q · r.
On appelle ensemble de positions tout ensemble fini P ⊆ N∗+ clos par l’ordre préfixe et
sans trou : ∀p · i ∈ P, p ∈ P et p · prec(i) ∈ P si i > 1, où prec(i) désigne le prédecesseur
de i.
Étant donnée une signature F , un terme sur cette signature peut être vu comme un arbre
étiqueté, c’est-à-dire une application t d’un ensemble de positions noté P os(t) dans F, qui
respecte l’arité des symboles de fonction :
– t(p) ∈ F0 ssi p est une feuille de P os(t)
– Si t(p) = f d’arité n, alors ∀i ∈ N, p · i ∈ P os(t) ⇔ 1 ≤ i ≤ n.
On notera par φ|p la sous-formule de φ à la position p, et par φ[ψ]p la formule obtenue en
remplçant φ|p par ψ dans φ. Bien entendu, il faudra toujours respecter la catégorisation en
termes et formules de manière à construire des objets bien formés.

6
1.1.5 Substitutions
On appelle substitution toute application de l’ensemble des variables dans les termes.
On utilisera une notation postfixée pour leur application. On appelle domaine de la substi-
tution σ l’ensemble Dom(σ) = {x ∈ X | xσ 6= x}. Une substitution de domaine fini
sera noté en extension, sous la forme {x1 7→ t1 , . . . , xn 7→ tn }. On notera par σ|X la res-
triction de σ au domaine Dom(σ) ∩ X. On appelle image d’une substitution σ l’ensemble
S
ℑ(σ) = x∈Dom(σ) Var(xσ). L’application d’une substitution est étendue successivement
aux termes, aux atomes, puis aux formules :
Variables xσ = σ(x)
Termes f (t1 , . . . , tn )σ = f (t1 σ, . . . , tn σ)
Atomes P (t1 , . . . , tn )σ = P (t1 σ, . . . , tn σ)
Formules (A ∧ B)σ = Aσ ∧ Bσ
(A ∨ B)σ = Aσ ∨ Bσ
(A ⇒ B)σ = Aσ ⇒ Bσ
(¬A)σ = ¬(Aσ)
(∃xA)σ = ∃y(Aσ ′ ) where σ ′ = σ|6=x ∪ {x 7→ z} pour z 6∈ ℑ(σ)
(∀xA)σ = ∀y(Aσ ′ ) where σ ′ = σ|6=x ∪ {x 7→ z} pour z 6∈ ℑ(σ)

1.2 Sémantique
La sémantique de Tarski a pour but d’associer une valeur de vérité parmi (T pour true
et F pour false) à toute formule close, et une fonction à valeur dans les valeurs de vérité
à toute formule possédant des variables libres. Certaines sémantiques utilisent trois valeurs
de vérité (en ajoutant la valeur indéfini par exemple). Nous avons fait attention de distinguer
les noms dans la syntaxe et la sémantique. Ainsi 0 est une constante logique de la syntaxe,
alors que F est une valeur du domaine sémantique.

1.2.1 Sémantique des connecteurs logiques


On munit les valeurs de vérité d’une structure via une table de vérité qui décrit l’action
des connecteurs Booléens sur les valeurs de vérité. Ces connecteurs Booléens expriment les
propriétés des connecteurs logiques via les notions fondamentales de structure et d’inter-
prétation.

¬Bool (T ) = F, ¬Bool (F ) = T

∧Bool (T, T ) = T, ∧Bool (T, F ) = F, ∧Bool (F, T ) = F, ∧Bool (F, F ) = F


∨Bool (T, T ) = T, ∨Bool (T, F ) = T, ∨Bool (F, T ) = T, ∨Bool (F, F ) = F
⇒Bool (T, T ) = T, ⇒Bool (T, F ) = F, ⇒Bool (F, T ) = T, ⇒Bool (F, F ) = T

1.2.2 Structures
Définition 1.3 Une (F, P)-structure (ou simplement structure) est une paire (S, I) où S est
un ensemble appelé domaine de discours et I est une interprétation qui consiste d’une part
en un homomorphisme de T (F) dans une F-algèbre de domaine S munie d’un ensemble

7
d’opérations I(F) tel que fI ∈ I(F) d’arité n ssi f ∈ F d’arité n, et d’autre part en une
interprétation des symboles de prédicats telle que PI ∈ I(P) est un sous ensemble de D n
ssi P ∈ Pn .
On abrégera souvent (S, I) en S lorsque l’interprétation est déterminée sans ambigüité
par le contexte.
Lorsque le symbole q est d’arité nulle, la relation qI est alors une valeur de vérité, T
(pour true) ou F (pour false).

Quelques exemples de structures importantes :


Exemple 1.4

Domaine Opérations Relations Nom Notation


N 0, S, + =, ≤ Arithmétique de Presburger Presburger
N +, ∗, 0, S =, ≤ Arithmétique de Peano Peano
R +, ∗, 0, S =, ≤ Théorie des Réels Tarski
{T, F } ∅ {p0 , . . . , pn } Structure propositionnelle Prop
T (F ) F̂ {=} Structure algèbrique F-Algèbre
T (F ) F̂ R̂ Modèle de Herbrand Herbrand

Dans le cas d’une structure algébrique, et plus généralement du modèle de Herbrand, les
opérations et relations qui servent à l’interprétation de la syntaxe sont définies comme suit :

∀f ∈ F, fˆ(t1 , . . . , tn ) = f (t1 , . . . , tn )

s = t est égal à T ssi s ≡ t


∀R ∈ P \ {=}, R̂(t1 , . . . , tn ) ∈ {T, F }

1.2.3 Interprétation des formules


Nous allons maintenant interpréter les formules, et il y a deux façons de procéder. La
première consiste à interpréter une formule comme une fonction Booléenne de ses variables
libres. Une formule close sera donc interprétée par une valeur de vérité. Techniquement,
l’ensemble des variables libres d’une formule n’étant pas identique à celui de ses sous-
formules, il va être nécessaire de calculer la fonction d’interprétation d’une formule vis à
vis d’un ensemble quelconque de variables contenant ses variables libres.
La seconde consiste à se donner à priori des valeurs du domaine d’interprétation pour
toutes les variables de X . Techniquement, cela nécessite l’introduction d’une fonction (ar-
bitraire) de X dans le domaine D, appellée valuation. Une valuation étant donnée, l’inter-
prétation d’une formule relativement à cette valuation devient une valeur de vérité. Cette
solution évite donc la gestion d’un ensemble de variables dans la définition des interpréta-
tions, au prix d’un concept supplémentaire, celui de valuation, que l’on peut voir comme
une variable globale donnant la valeur de toute les variables afin que les interpretations
soient des valeurs plutôt que des fonctions.
Dans ce cours, nous avons choisi la première solution. Il pourra être utile pour le lecteur
de reformuler les énoncés et refaire les preuves avec la seconde.
On notera par [A]I,{x1 ,...,xn } (d1 , . . . , dn ) la valeur pour le n-uplet (d1 , . . . , dn ) de la
fonction d’interprétation de la formule A vis à vis de l’interprétation I et de l’ensemble

8
de variables {x1 , . . . , xn } contenant Var(A). On omettra l’indice I lorsque cela sera sans
ambiguité. On utilisera la notation x pour la liste de variables {x1 , . . . , xn } prises dans
cet ordre, la lettre d pour désigner un élément du domaine S, et d pour la liste de valeurs
{d1 , . . . , dn } prises dans cet ordre.
Variable [y]{...,y,...} (. . . , d, . . .) = d
Terme [f (t1 , . . . , tp )]x (d) = fI ([t1 ]x (d), . . . , [tp ]x (d))
Atome [R(t1 , . . . , tp )]x (d) = RI ([t1 ]x (d), . . . , [tp ]x (d))
Formules [0]x (d) = F, [1]x (d) = T
[¬A]x (d) = ¬Bool [A]x (d)
[A ∧ B]x (d) = [A]x (d) ∧Bool [B]x (d)
[A ∨ B]x (d) = [A]x (d) ∨Bool [B]x (d)
[A ⇒ B]x (d) = [A]x (d) ⇒Bool [B]x (d)
[∃xA]x (d) = T ssi il existe d ∈ S tel que [A]x,x (d, d) = T
[∀xA]x (d) = T ssi pour tout d ∈ S, [A]x,x (d, d) = T

Dans la définition ci-dessus, notons que x ne doit pas apparaître dans la liste x. Si
cela était le cas, il faudrait renommer la variable liée x, ce qui est toujours possible. Par
ailleurs, l’utilisation du ssi implique que l’interprétation est égale à F lorsque les conditions
indiquées ne sont pas satisfaites.

Lemme 1.5 Soient deux ensembles de variables x et y tels que Var(A) ⊆ x. Alors la
restriction de [A]x∪y à x coincide avec [A]x .

Preuve
Par récurrence sur la structure de A. 2

Définition 1.6 On appelle interprétation de A dans la structure (S, I) la fonction


[A]I,Var(A) encore notée [A]I ou tout simplement [A] lorsque cela n’est pas ambigu.

Le lemme suivant indique que les notions d’interprétation et de substitution sont com-
patibles :

Lemme 1.7 [Aσ]y (d) = [A]x ([x1 σ]y (d), . . . , [xn σ]y (d)), avec les conventions habituelles
Var(A) ⊆ x, et Var(xi σ) ⊆ y pour tout 1 ≤ i ≤ n.

1.2.4 Validé et satisfiabilité


Définition 1.8 Soit (S, I) une structure interprétant le langage du premier ordre
CP1(F, P, X ), et A une formule de n variables libres. On dit que :
- A est satisfiable (ou, mieux encore, satisfaisable) dans (S, I) s’il existe d ∈ S n tel que
[A](d) = T ,
- A est satisfiable s’il existe une structure (S, I) dans laquelle A est satisfiable, et insa-
tisfiable dans le cas contraire,
- A est valide dans (S, I), noté (S, I) |= A, si pour tout d ∈ S n , alors [A](d) = T , et
on dit dans ce cas que (S, I) est un modèle de A,
- A est (universellement) valide, noté |= A, si A est valide dans toute structure (S, I),
et on dit alors également que A est une tautologie.

9
Une formule est donc satisfiable si sa clôture existentielle ∃Var(A)A s’interprète en T
dans une certaine structure (S, I), et valide si sa clôture universelle ∀Var(A)A s’interprète
en T dans toute structure (S, I). On peut donc toujours raisonner sur des formules closes.
Notons qu’une formule peut être satisfiable sans posséder de modèle. Notons également
qu’une formule A est valide ssi sa négation ¬A est insatisfiable. Celle dernière remarque
est à la base des méthodes de preuve par réfutation.

1.2.5 Conséquence et équivalence sémantiques


Définition 1.9 B est conséquence sémantique de A, noté A |= B, si pour toute structure
(S, I), [B]x (d) = T chaque fois que [A]x (d) = T . La relation de conséquence séman-
tique s’étend naturellement à des ensembles de formules aussi bien à droite qu’à gauche du
symbole |=.

Pour des formules closes, A |= B ssi (S, I) |= B pour tout modèle (S, I) de A.
La relation de conséquence sémantique est un préordre dont l’équivalence associée est
l’équivalence sémantique notée ≡.

Exemple 1.10 A ⇒ B ≡ B ∨ ¬A

Cette équivalence nous aurait permis de définir un calcul des prédicats sans l’implica-
tion, puis de rajouter l’implication A ⇒ B comme une abréviation de la formule équi-
valente B ∨ ¬A. C’est pour cette raison que nous nous sommes dispensés de quelques
autres opérateurs logiques importants, comme l’équivalence, A ↔ B étant l’abbréviation
de (A ⇒ B) ∧ (B ⇒ A), le ou exclusif, A ⊗ B étant l’abbréviation de (A ∨ B) ∧ ¬(A ∧ B),
etc ...
L’équivalence sémantique permet de munir l’ensemble des formules d’une structure
d’algèbre de Boole. Le choix d’un ensemble d’opérateurs adéquat (basé sur le ou exclusif
noté ⊕) résulte même en une structure d’anneau Booléen. Nous donnons ci-dessous les
axiomes de l’algèbre de Boole :

A ∨ (B ∨ C) ≡ (A ∨ B) ∨ C A ∧ (B ∧ C) ≡ (A ∧ B) ∧ C
A∨B ≡ B∨A A∧B ≡ B∧A
A∨0 ≡ A A∧0 ≡ 0
A∨1 ≡ 1 A∧1 ≡ A
A∨A ≡ A A∧A ≡ A
A ∨ (B ∧ C) ≡ (A ∨ B) ∧ (A ∨ C) A ∧ (B ∨ C) ≡ (A ∧ B) ∨ (A ∧ C)
¬(A ∨ B) ≡ (¬A) ∧ (¬B) ¬(A ∧ B) ≡ (¬A) ∨ (¬B)
¬1 ≡ 0 ¬0 ≡ 1
A ∨ ¬A ≡ 1 A ∧ ¬A ≡ 0
¬¬A ≡ A

Ces égalités ne font pas intervenir explicitement les quantificateurs —ni les symboles de
fonction ou de prédicats—, ce sont des égalités propositionnelles. Si on les supprime, on se
retrouve dans le calcul propositionnel. Savoir si une formule propositionnelle est satisfiable
est le problème NP-complet qui a reçu la plus grande attention, tant pour son importance
théorique que pour ses applications pratiques, en particulier à la preuve de circuits logiques.

10
Ces axiomes égalitaires peuvent aussi s’appliquer à des expressions quelconques, pou-
vant éventuellement contenir des quantificateurs. La prise en compte explicite des interac-
tions entre les quantificateurs et la négation fait apparaître une nouvelle série d’axiomes :

¬∀xA ≡ ∃x¬A ¬∃xA ≡ ∀x¬A


(∀xA) ∧ B ≡ ∀x(A ∧ B) (∀xA) ∨ B ≡ ∀x(A ∨ B)
if x 6∈ Var(B)
(A ⇒ ∀xB) ≡ ∀x(A ⇒ B) (A ⇒ ∃xB) ≡ ∃x(A ⇒ B)
if x 6∈ Var(A)
(∀xA ⇒ B) ≡ ∃x(A ⇒ B) (∃xA ⇒ B) ≡ ∀x(A ⇒ B)
if x 6∈ Var(B)

Ces axiomes joueront un rôle essentiel plus tard lors de la mise en forme normale des
formules logiques. La question se pose bien sûr de leur application dans le cas où la condi-
tion d’application portant sur la variable quantifiée n’est pas satisfaite. Il suffit alors de la
renommer :

Lemme 1.11 ∀x A ≡ ∀y A{x 7→ y} pourvu que y 6∈ Var(A).

La preuve de ce lemme simple est laissée au lecteur.

1.2.6 Théorie d’une structure


Définition 1.12 La théorie d’une structure (S, I) est l’ensemble des formules closes de
CP 1 dont (S, I) est un modèle. On la note T h(S, I).

Définition 1.13 Un ensemble Γ de formules closes est une théorie s’il est clos par consé-
quence sémantique, cad A ∈ Γ ssi Γ |= A.

La théorie d’une structure est bien-entendu une théorie.

Définition 1.14 Une théorie Γ est consistante si elle ne contient pas à la fois une formule
A et sa négation ¬A.
Une théorie Γ est complète si pour toute formule A, A ∈ Γ ou (¬A) ∈ Γ.
Une théorie Γ est finiment axiomatisable s’il existe un sous-ensemble fini de Γ dont Γ
soit conséquence sémantique.
Une théorie Γ est récursivement axiomatisable s’il existe un sous-ensemble récursif
(reconnu par un algorithme qui termine toujours) de Γ dont Γ soit conséquence sémantique.
Une théorie Γ est décidable s’il existe une procédure qui termine toujours, telle que
pour toute formule A la procédure retourne oui si A ∈ Γ et non dans le cas contraire.
Une théorie Γ est semi-décidable s’il existe une procédure telle que pour toute formule
A la procédure retourne oui si A ∈ Γ et non ou ne termine pas dans le cas contraire.

Exemple 1.15 L’arithmétique de Presburger (resp. Peano, Tarski) est la théorie de la struc-
ture Presburger (resp. Peano, Tarski) de l’exemple 1.4.

Notons que l’usage veut que l’on appelle théorie de Tarski (ou théorie des réels) l’arith-
métique du même nom.

11
Lemme 1.16 L’arithmétique de Presburger est décidable. L’arithmétique de Peano est in-
décidable. La théorie de Tarski est décidable.
Les preuves de ces assertions ne sont pas immédiates, la dernière étant difficile. La
décidabilité de l’arithmétique de Presburger peut s’obtenir par des techniques d’automates.
Exemple 1.17 La théorie du graphe ({1, 2}, {(1, 2), (2, 1)}) contient les formules
∀xy(xEy ⇒ yEx), ∀x.¬xEx, ∀xy(xEy ∨ ¬xEy), ..., où E ∈ P2 .
Exemple 1.18 Le prédicat d’égalité est en général implicitement présent dans le voca-
bulaire d’un langage du premier ordre. Sa théorie (dite de l’égalité) est définie par les
axiomes :
réflexivité : ∀x x = x
symétrie : ∀xy x = y ⇒ y = x
transitivité : ∀xyz x = y ∧ y = z ⇒ x = z
Pour chaque entier n et chaque symbole de fonction f ∈ Fn :
congruence : ∀xy x = y ⇒ f (x) = f (y)
Pour chaque entier n et chaque symbole de prédicat R ∈ Pn :
∀xy x = y ⇒ R(x) ↔ R(y)
Cette théorie possède donc un ensemble fini d’axiomes si le langage CP 1 possède un
vocabulaire fini.
Exemple 1.19 La théorie des groupes est engendrée par exemple par les trois axiomes
suivants :
∀xyz x ∗ (y ∗ z) = (x ∗ y) ∗ z, ∀x e ∗ x = x, ∀x∃y x ∗ y = e
La théorie des groupes n’est pas complète, car il existe des groupes commutatifs et
d’autres qui ne le sont pas.
Exemple 1.20 L’arithmétique de Peano est engendrée par les axiomes suivants :

∀x ¬(S(x) = 0), ∀xy S(x) = S(y) ⇒ x = y


∀x x + 0 = x, ∀xy x + S(y) = S(x + y)
∀x x ∗ 0 = 0, ∀xy x ∗ S(y) = x ∗ y + x
∀x ¬(x < 0), ∀x 0 < S(x), ∀xy S(x) < S(y) ⇒ x < y
Pour toute formule A, et pour toute variable x libre dans A,
[A(0) ∧ ∀x(A(x) ⇒ A(S(x)))] ⇒ ∀xA(x)
Cette dernière expression est le schéma d’axiomes de récurrence. Il y a donc un axiome de
récurrence par formule et variable libre de la formule. L’arithmétique de Peano n’est donc
pas finiment axiomatisable, mais elle est récursive car il existe une procédure qui termine
toujours qui, étant donnée une formule, réponde oui s’il s’agit d’un axiome de récurrence
et non dans le cas contraire.

12
Lemme 1.21 L’arithmétique de Peano est incompléte.

La preuve d’incomplétude est due à Gödel. Sa lecture est recommandée.


Nous avons donc maintenant deux définitions de l’arithmétique de Peano. Montrer
qu’elles coincident est laissé à la sagacité (ou à l’érudition) du lecteur.

Exemple 1.22 La théorie des arbres finis étiquetés sur un alphabet fini est fondamentale à
l’informatique. Elle joue un rôle clé en programmation logique en particulier, où elle sous-
tend la notion d’unification et les axiomes de Clarke pour le traitement de la négation. Elle
sera étudiée plus en détail dans le chapitre ??. Cette théorie est engendrée par les axiomes
de l’égalité que nous avons déjà vus ainsi que par les axiomes suivants qui expriment la
"liberté" de l’algèbre T (F ) :
Décomposition : Pour chaque entier n et chaque symbole f ∈ Fn :

∀xy[f (x) = f (y) ↔ x = y]

Conflit : Pour chaque couple d’entiers m, n et chaque couple de symboles f ∈ Fm , g ∈


Fn :
∀xy[f (x) = g(y) ↔ 0]
Occurence :
∀xy[x[y]p6=Λ = y ↔ 0]
où x[y]p6=Λ est une notation signifiant que y est un sous-arbre de x à une position p diffé-
rente de la racine. La définition axiomatique de cette notation est laissée au lecteur.
Monde clos :
∀x(∃y x = f (y)) ∨ . . . ∨ (∃y x = g(z))
la disjonction précédente énumérant tous les symboles de fonction de F. Cet axiome est
donc finitaire si F est fini.
Notons que cet ensemble de formules est infini, à cause des axiomes d’occurrence, mais
récursif.

Theorem 1.23 La théorie des arbres finis étiquetés est complète.

Ce résultat est dû à Mal’cev. Une axiomatisation récursive légèrement différente a été


donnée par Maher, qui se généralise aisément au cas des arbres infinis (rationels ou pas).
Une preuve récente, qui se généralise volontiers à des structures d’arbres quotients par des
axiomes comme la commutativité d’un symbole, est due à Comon. Ces questions font l’ob-
jet du dernier chapitre.

Définition 1.24 Deux structures (S, I) et (S ′ , I, ) sont isomorphes s’il existe une bijection
ξ de S dans S ′ (étendue aux produits cartésiens S n ) telle que :
- pour tout symbole de fonction f ∈ Fn et tout d ∈ S n , fI (d) = c ssi fI ′ (ξ(d)) = ξ(c),
- pour tout symbole de relation R ∈ Pn et tout d ∈ S n , d ∈ RI ssi ξ(d) ∈ RI ′ ,

Par exemple, deux graphes qui ne diffèrent que par le nom des sommets sont iso-
morphes.
De difficulté très inégale, les preuves des lemmes qui suivent sont laissées au plaisir du
lecteur.

13
Lemme 1.25 Deux structures isomorphes sont modèles des même formules.

Lemme 1.26 Deux structures finies qui valident le même ensemble de formules sont iso-
morphes.

La réciproque de ce théorème est fausse. Les deux structures (Q, {<Q }) et (R, {<R })
ne peuvent être isomorphes puisque leurs domaines n’ont pas la même cardinalité. Toute-
fois,

Lemme 1.27 Les deux structures (Q, {<Q }) et (R, {<R }) sont modèles des même for-
mules du premier ordre.

En fait, les deux structures sont bien sûr distinguables, mais pas par des formules du
premier ordre construites sur le seul symbole relationnel <. Il faut soit rajouter des symboles
de fonctions, par exemple 0 ou S, soit considérer des formules de second ordre.

Lemme 1.28 Si un ensemble de formules a un modèle unique à isomorphisme près, alors


sa clôture par conséquence sémantique est une théorie complète.

Le problème dual, la définissabilité, est par essence informatique : il consiste à program-


mer dans une structure au moyen du langage du calcul des prédicats du premier ordre. Ce
problème a été très étudié dans le cadre des langages de bases de données, pour lesquelles
les structures peuvent être considérées comme finies.

Définition 1.29 Une relation R d’arité n sur une (F, P)-structure (S, I) est définissable
dans la logique du premier ordre s’il existe une formule A ∈ CP1(F, P, X ) dépendant des
n variables libres x telle que [A]I,x (d) = T ssi d ∈ R. La définition s’étend aux classes de
structures.

Exemple 1.30 La relation de la structure Peano R(x) ssi x est premier est définissable par
la formule :

∀yz x = y ∗ z ⇒ (y = x ∧ z = S(0)) ∨ (z = x ∧ y = S(0))

L’interprétation de cette formule dans la structure Peano vaut en effet T pour tout nombre
premier et F pour tout nombre non premier.

De très nombreuses propriétés élémentaires des structures usuelles comme les graphes
ne sont pas exprimables on logique du premier ordre (voir les exercices). La logique du
premier ordre est donc assez pauvre. Pour remédier à ce problème, la solution consiste à
enrichir le langage logique, en autorisant la quantification sur des variables de fonctions ou
de prédicat. On obtient ainsi la logique du second ordre, dont une restriction, la logique
monadique du second ordre, n’autorise que la quantification sur les symboles de prédicats
unaires, cad sur des variables interprétées comme des sous-ensembles du domaine d’inter-
prétation. Ce fragment de la logique a une grande importance en informatique théorique,
puisqu’il permet de caractériser les langages (de mots ou d’arbres) reconnaissables par un
automate fini (de mot ou d’arbre). Il a une grande importance pratique également, puisque
les automates sont utilisés de manière routinière pour modéliser les circuits logiques.

14
1.3 Exercices
1.3.1
Soit la structure propositionnelle (S, {}, {p1 , . . . , pn }).
1. Soit n = 3. On considère la formule A = (p1 ∧ p2 ∧ ¬p3 ) ∨ (p1 ∧ ¬p2 ∧ p3 ) ∨ (¬p1 ∧
p2 ∧ p3 ).
A et ¬A sont-elles satisfiables ? valides ?
2. Soit B la formule où p1 est remplaçé par ¬p1 .
Est-ce que A |= B ou B |= A ?
3. Soit maintenant n = 4. Trouver une formule Ψ qui s’interprète en T dans la struc-
ture propositionnelle ssi le nombre de symboles propositionnels égaux à T dans la
structure est égal au nombre de symboles propositionnels égaux à F .
4. Peut-on généraliser à n = 2k ?

1.3.2
Exercice 1.31 Le but de cet exercice est l’axiomatisation de la théorie de Presburger. On
considère donc un langage qui contient une constante r, un symbol de fonction unaire S et
comme seul symbol de prédicat =.
On désire étudier une classe de graphes considérés comme des structures
{E, {rE , SE }, {=}}. r est interprété comme la racine (supposée unique) du graphe, et S
comme une fonction injective donnant le successeur de chaque nœud (élément de E) dans
la relation du graphe, qui est donc fonctionnelle. Ces propriétés sont axiomatisées par les
trois axiomes :

A : ∀x ¬(S(x) = r)

B : ∀x (∀y¬(S(y) = x)) ⇒ x = r

C : ∀xy (S(x) = S(y) ⇒ x = y)

On considère les structures :

N = {N, {0, succ}, {=}}, Z = {Z, {succ}, {=}}, Z/p = {[0..(p − 1)], {succ}, {=}}

et appellerons N Z ∗Z/p∗ l’ensemble des structures formées d’une copie unique de N , d’un
nombre fini ou infini (de cardinal arbitraire) de copies de Z, et d’un nombre fini ou infini
(de cardinal arbitraire) de copies de Z/p.
1. Montrer que les axiomes A, B, C n’ont pas de modèle fini.
2. Montrer que toute structure de N Z ∗ Z/p∗ est un modèle de A, B, C.
On se propose maintenant de montrer que tout modèle de A, B, C est isomorphe à une
structure de N Z ∗ Z/p∗. Pour cela, on considère les trois sortes de composantes connexes
d’un modèle, infini avec racine, infini sans racine, et fini.

15
1. Considérons une composante connexe infinie avec racine r. Soit ξ l’application de N
dans les sommets de la composante connexe définie par ξ(0) = r et ξ(succ(x)) =
S(ξ(x)) pour tout entier x ≥ 0. Montrer successivement que ξ est une application de
N dans les sommets de la composante connexe de r, puis qu’elle est injective, enfin
qu’elle est surjective. En déduire que la composante connexe est isomorphe à N .
2. Considérons une composante connexe infinie sans racine. Soit ξ l’application de Z
dans les sommets de la composante connexe définie par ξ(0) = a, où a désigne un
sommet arbitraire de la composante connexe, ξ(succ(x)) = S(ξ(x)) pour tout entier
x ≥ 0, et ξ(pred(x)) = y tel que S(y) = x pour tout entier x ≤ 0, et En déduire que
la composante connexe est isomorphe à Z.
3. Considérons une composante connexe finie ayant p sommets. Montrer que cette com-
posante connexe est en fait un cycle Hamiltonien élémentaire (passant une fois et une
seule par chaque sommet). En déduire qu’elle est isomorphe à Z/p.
4. En déduire que tout modèle de A, B, C est isomorphe à une structure de N Z ∗ Z/p∗.

On se propose maintenant d’éliminer certains modèles superflus pour se rapprocher du


modèle “standard” des entiers qui est formé d’une unique composante connexe. Pour cela,
on va rajouter le schéma d’axiomes d’induction :

D :Φ(0)[∀x(Φ(x) ⇒ Φ(S(x)))] ⇒ ∀xΦ(x)

pour toute formule Φ et variable libre x de Φ. Soit Ψ la formule ∀x¬S p (x) = x, où S p


désigne l’application p fois de S.

1. Montrer que Ψ n’est pas valide dans un modèle qui contient une copie de Z/p.
2. Montrer que ¬S p (0) = 0 est valide dans les modèles de A, B, C, D.
3. Montrer que ∀x (¬S p (x) = x ⇒ ¬S p (S(x)) = S(x)) est valide dans les modèles
de A, B, C.
4. En déduire que Ψ est valide dans les modèles de A, B, C, D.
5. En déduire que les modèles de A, B, C, D sont formés d’une unique copie de N , et
d’un nombre arbitraire de copies de Z.
6. Peut-on éliminer les copies de Z en rajoutant de nouveaux axiomes ou schémas
d’axiomes ?

On dit qu’une théorie T est catégorielle pour un cardinal α ssi tous les modèles de T
de cardinal α sont isomorphes.
– Pour quels cardinals α la clôture de A, B, C est-elle catégorielle ?
– Même question pour la clôture de A, B, C, D.
Le théorème de Łos-Vaught énonce que si une théorie T sur un langage fini n’a que des
modèles infinis, et si T est catégorielle pour un cardinal infini, alors T est complète.
– La clôture par conséquence sémantique de A, B, C est-elle complète ?
– La clôture par conséquence sémantique de A, B, C, D est-elle complète ?

16
1.3.3
Trouver une formule A batie sur le langage défini par la constante 0, le symbole de
fonction unaire S, le prédicat d’égalité = et le prédicat ternaire P lus telle que la structure
N soit un modèle de A ssi le symbole de prédicat P lus est interprété par la relation P +
définie par (x, y, z) ∈ P + ssi z = x + y.
Afin de montrer que P + est la seule relation R qui convient, on pourra considérer un
plus petit triplet (x, y, z) pour lequel R et P + diffèrent.

1.3.4
On considère la structure (R, {0, 1, +, −, ∗, ÷}, {<}).
1. Evaluer la formule A = ∀xy∃z (x < y) ⇒ (x < z ∧ z < y).
2. La structure est-elle un modèle de A ?
3. Trouver les relations Qa telles que (R, {0, 1, +, −, ∗, ÷}, {<, Qa}) |=
∀xy(Q(x, y) ⇒ Q(y, x)) ⇒ (x 6= y), où Q désigne un symbole de prédicat
binaire.
4. Construire une formule B exprimant la transitivité d’une relation binaire, et une for-
mule C exprimant son antisymmétrie. Est-ce que B ∧ C |= A ?
5. Construire une formule exprimant que l’ordre partiel défini par B et C est en fait un
ordre total.

1.3.5
Peut-on caractériser la connexité d’un graphe quelconque par une formule de CP 1 ?

1.3.6
Soient F = {a}, P = {P } et φ la formule ¬P (a) ∨ ∃xP (x). φ est elle satisfaisable ?
Possède-t-elle un modèle de Herbrand ? Que faire ?

1.3.7
Décidabilité de l’arithmétique de Presburger par des techniques d’automates.
Le principe sera d’associer à toute formule un automate qui reconnait le langage des
entiers (en représentations binaire) qui satisfont la formule. Comme une formule peut avoir
plusieurs variables libres, ces automates vont donc devoir lire plusieurs mots à la fois, que
l’on représentera sur autant de lignes qu’il y a de variables libres. Ces lignes de mots peuvent
être vus comme des mots sur l’alphabet {0, 1}n où n est le nombre de variables libres.
Comme les mots associés à deux entiers distincts n’ont pas la même longueur, on les com-
plète par des zéros non significatifs de façon à les égaliser tous.
La première étape est celle de la représentation d’un nombre comme un mot sur l’alpha-
bet {0, 1}. Comme on désire lire les mots sur l’automate en partant des bits de faible poids,
ils seront représentés à l’envers. Ainsi le nombre 11 aura-t-il {1101, 11010, 110100, . . .}
parmi ses représentations possibles.
1. Quelle est la taille minimale de la représentation du nombre de valeur n ?

17
2. Donner les automates déterministes minimaux reconnaissant les formules 0 et 1.
3. Donner les automates déterministes minimaux reconnaissant les formules de la forme
S n (0) = S m (0) et S n (0) ≤ S m (0).
4. Énumérer les diverses formes d’atomes clos possibles.
5. Énumérer les diverses formes d’atomes possibles ayant une unique variable libre.
6. Énumérer les diverses formes d’atomes possibles ayant deux variables libres.
7. Pour chaque forme d’atome possible, donner l’automate déterministe minimal recon-
naissant le langage des mots qui satisfont la formule.
8. Soit A un automate reconnaissant le langage des mots qui satisfont la formule φ.
Donner un automate reconnaissant le langage des mots qui satisfont la formule ¬φ.
9. À partir de maintenant, on suppose que les variables sont ordonnées, on les notera
x1 , . . . , xn , . . ..
Soit A un automate reconnaissant le langage des mots qui satisfont la formule φ(x, z)
une formule que l’on considère maintenant comme dépendant en plus de la variable
z. Donner un automate reconnaissant le le langage des mots qui satisfont la formule
φ(x, y, z).
10. Soit A1 et A2 des automates reconnaissant le langage des mots qui satisfont les for-
mules φ1 et φ2 . Donner un automate reconnaissant le langage des mots qui satisfont
la formule φ1 ∧ φ2 .
11. Soit A un automate reconnaissant le langage des mots qui satisfont la formule φ.
Donner un automate reconnaissant le langage des mots qui satisfont la formule ∃xφ.
12. Soit A un automate reconnaissant le langage des mots qui satisfont la formule φ.
Donner un automate reconnaissant le langage des mots qui satisfont la formule ∀xφ.
13. En déduire que la théorie de Presburger est décidable.
14. Quelle est la complexité de l’algorithme obtenu ?

18
Chapitre 2

Séquents, Clauses et Résolution

Ce chapitre a pour but d’introduire des méthodes calculatoires qui trouvent leur origine
dans des travaux de Herbrand et de Robinson. Ces méthodes reposent sur la transformation
de formules en clauses. Leur justification dans ce cours fera appel aux travaux de Skolem et
Gentzen.

2.1 Feuille de route


Un théorème se présente sous la forme d’un ensemble d’hypothèses H1 , . . . , Hn et
d’une conclusion C, et il s’agit donc de montrer que la formule H∧ . . . ∧ Hn ⇒ C est
valide, et, en utilisant la complétude du calcul des séquants de Gentzen, d’en construire une
preuve dans ce calcul. En fait, nous allons utiliser une démarche plus complexe dans le but
d’utiliser les propriétés du calcul des séquents pour certains types de formules appellées
clauses.
1. Dans une première étape, nous remarquons que
H∧ . . . ∧ Hn ⇒ C est valide ssi
H∧ . . . ∧ Hn ∧ ¬C est insatisfiable.
Par exemple, si l’on désire se convaincre du bien-fondé du raisonnement
tous les hommes sont grecs ; Socrate est un homme ; donc Socrate est grec.
on doit tout d’abord le formaliser, ce qui donne :

(∀xH(x) ⇒ G(x)) ∧ H(S) ⇒ G(S)

et on est donc amené à vérifier que la formule

(∀xH(x) ⇒ G(x)) ∧ H(S) ∧ (¬G(S))

est insatisfiable.
2. Dans une seconde étape, nous allons transformer la formule H∧ . . . ∧ Hn ∧ ¬C en un
ensemble de clauses {C1 , . . . Cp }, c’est-à-dire de formules de la forme

∀xA1 ∨ . . . ∨ AM ∨ ¬B1 ∨ . . . ∨ ¬Bn

19
où les Ai et les Bi sont des formules atomiques, tout en préservant l’insastifiabilité.
On verra que cela est équivalent à transformer chaque élément de la conjonction en
clauses. Dans l’exemple précédent, cela donne l’ensemble de clauses :
{H(x) ⇒ G(x), H(S), ¬G(S)}
3. Dans une troisième étape, nous reviendrons à la prouvabilité dans le calcul des sé-
quents, grâce toujours au théorème de complétude : l’insatisfiabilité de l’ensemble de
clauses {C1 , . . . Cp } équivant à la validité de la formule C1 ∧ . . . ∧ Cp ⇒ ⊥ et donc
à la prouvabilité du séquent C1 , . . . Cp −→.
4. La quatrième étape consistera en l’application du théorème de Herbrand, qui permet-
tra de ramener la prouvabilité du séquent C1 , . . . Cp −→ à celle d’un nouveau séquent
C1′ , . . . Cp′ ′ −→ dont les clauses Cj′ sont des instances sans variables ni quantificateurs
des clauses Ci .
5. La cinquième étape consistera à analyser la preuve devenue propositionnelle du sé-
quent C1′ , . . . Cp′ ′ −→ en groupant certaines étapes structurelles avec la règle d’intro-
duction ∨G, donnant naissance au calcul des séquents clausal.
6. La sixième étape aura pour but d’en déduire la complétude de la règle dite de résolu-
tion close :
A ∨ C ¬A ∨ D
C ∨D
Dans cette règle d’inférence, A dénote un atome, et C et D dénotent des clauses
(éventuellement vides). Les clauses A ∨ C, ¬A ∨ D, C ∨ D sont supposées en forme
normale vis à vis des règles de l’algèbre de Boole. En conséquence, ni A ni ¬A
ne peuvent apparaître dans C ∨ D. Elles sont également supposées ne pas avoir de
variables communes, ce qui peut nécessiter des renommages appropriés.
La complétude de la règle de résolution s’énoncera comme l’appartennace de la
clause vide à l’ensemble Res∗ ({C1′ , . . . , Cp′ ′ }) des clauses inférables par résolution
à partir de l’ensemble de clauses {C1′ , . . . , Cp′ ′ }.
La complétude de la résolution close sera une conséquence directe de la complétude
du calcul des séquents clausal.
7. La septième étape sera celle du lemme de relèvement qui permettra en fait de travailler
avec des clauses avec variables, en généralisant la règle de résolution close en une
règle de résolution générale grâce à l’opération d’unification :
P1 ∨ . . . ∨ Pp ∨ C ¬N1 ∨ . . . ∨ ¬Nn ∨ D
Résolution :
Cσ ∨ Dσ
Dans cette règle d’inférence de résolution, σ désigne l’unificateur principal du pro-
blème d’unification
P1 = P2 ∧ . . . ∧ P1 = Pp ∧ P1 = N1 ∧ N1 = N2 ∧ . . . ∧ N1 = Nn
On peut alors terminer notre exemple, avec les preuves possibles suivantes :
G(x) ∨ ¬H(x) H(S) G(x) ∨ ¬H(x) ¬G(S)
¬G(S) H(S)
G(S) ¬H(S)

2 2

20
qui engendre la clause vide à partir des clauses de départ.
L’opération d’unification permet en fait d’assurer que si deux clauses ont des ins-
tances closes qui peuvent se résoudre par résolution close, alors la résolvante (close)
est une instance close de celle obtenue par résolution (générale) des deux closes de
départ. Il ne sera donc nul besoin de connaitre les instances closes fournies par le
théorème de Harbrand, seule leur existence est importante.
8. La dernière étape sera celle de l’unification, dont nous détaillerons les propriétés al-
gorithmiques.
Nous allons maintenant considérer en détail ces différentes étapes.

2.2 Mise sous forme clausale


On commence par la mise des formules sous forme prénexe.

Définition 2.1 Une formule est en forme prénexe si elle est non quantifiée, ou de l’une des
deux formes ∀xφ ou ∃xφ où φ est une formule prénexe.

Lemme 2.2 Toute formule logique est équivalente à une formule prénexe.

Il suffit pour cela d’utiliser les axiomes vus précédemment qui permettent de repousser
les quantificateurs à l’extérieur des formules lorsqu’ils sont appliqués (arbitrairement) de la
gauche vers la droite (un nombre nécessairement fini de fois). Cela peut bien sûr nécessiter
de renommer les variables liées d’une formule.

Définition 2.3 Une formule clausale est une formule prénexe close sans quantificateur exis-
tentiel.
Une clause est une formule clausale de la forme ∀x(A1 ∧ . . . ∧ An ⇒ B1 ∨ . . . ∨ Bp ),
ou, de manière équivalente ∀x(¬A1 ) ∨ . . . ∨ (¬An ) ∨ B1 ∨ . . . ∨ Bp . Les quantificateurs
d’une clause étant tous universels, ils sont souvent omis. Il sera parfois utile de distinguer
la version quantifiée d’une clause de sa version non quantifiée en écrivant ∀xC pour la
première et C pour la seconde. Une clause sera dite close si elle nést pas quantifiée et si
elle ne contient pas de variable.
On dira qu’une clause close C ′ est une instance d’une clause ∀xC si elle est obtenue
par mise sous forme clausale df’une formule de la forme Cγ où γ est une substitution close
de domaine Var(C).

Lemme 2.4 Toute formule clausale est équivalente à une conjonction de clauses.

Preuve
La preuve et constructive. Il suffit d’appliquer les règles de l’algèbre de Boole (sauf les
axiomes de commutativité et associativité), et de remarquer que ces règles terminent
lorsqu’elles sont appliquées de gauche à droite sur les classes d’équivalence de formules
modulo la commutativité et l’associativité de la conjonction et de la disjonction. La forme
normale est une conjonction de clauses. On peut aussi faire une preuve par récurrence. 2

L’importance de la notion de clause vient du théorème de Skolem :

21
Theorem 2.5 Pour toute formule close A, il existe un ensemble S de clauses tel que S est
insatisfiable ssi A l’est.

Preuve
Par récurrence sur le nombre de quantificateurs existentiels de A supposée en forme prénexe
sans perte de généralité, on démontre l’existence d’une formule clausale A′ telle que A′ |=
A. Et donc A′ est insatisfiable puisque A l’est. Mais il ne serait pas correct de dire que A
et A′ sont équivalentes, car on va voir que les deux formules ne sont pas construites sur le
même langage logique.
Si A ne possède pas de quantificateur existentiel, c’est terminé. Sinon, soit A =
∀x∃y B, où B est donc une formule prénexe. Soit f un nouveau symbole de fonction (dit
symbole de Skolem) dont l’arité est égale au nombre de variables dans x, et C la formule
prénexe ∀xB{y 7→ f (x)}. On vérifie que C |= A grâce au lemme 1.7. C contient un
quantificateur existentiel de moins que A, donc il existe une formule clausale A′ telle que
A′ |= C. On conclue par transitivité de la relation de conséquence sémantique, et applica-
tion du lemme précédent.
Notons que si C était satisfiable dans une interprétation (S, I), alors on en déduirait
aisément une interprétation (S, I ′ ) (prenant pour I ′ la restriction de I au langage de A)
telle que A soit satisfiable. 2

Exemple 2.6 Mise en forme clausale de la formule ¬(∀x∃y.P (x, y)) ∨ ∃z.Q(z) :

¬(∀x∃y.P (x, y)) ∨ ∃z.Q(z) → ∃x∀y∃z.¬P (x, y) ∨ Q(z)


→ ∀y.¬P (a, y) ∨ Q(f (y))

Mais la forme clausale n’est pas unique ; on peut aussi effectuer la transformation :

¬(∀x∃y.P (x, y)) ∨ ∃z.Q(z) → ∃x.(∀y.¬P (x, y) ∨ Q(x))


→ ∀y.¬P (a, y) ∨ Q(a)

On peut bien sûr également s’intéresser à minimiser le nombre de clauses, ou tout autre
mesure de la taille du problème final à résoudre.

2.3 Théorème de Herbrand


Le théorème d’élimination des coupures de Gentzen peut être renforcé, de manière à
obtenir le théorème dit “du séquent intermédiaire” qui énonce que tout séquent valide Σ :
Γ −→ ∆ possède une preuve organisée en deux parties :
– une partie supérieure propositionnelle, c’est-à-dire sans utilisation des règles portant
sur les quantificateurs, aboutissant à la preuve d’un unique séquent Σ′ : Γ′ −→
∆′ dont toutes les formules sont des sous-formules non quantifiées de Γ, ∆ au sens
suivant : à la notion de sous-formule structurelle habituelle, on ajoute que A(t) est
uns sous-formule de ∀xτ A(x) à condition que t soit un terme de type τ construit sur
la signature disponible.
– une partie inférieure dont toutes les règles sont des introductions de quantificateurs
ou des contractions.

22
Nous allons décrire ce théorème et sa preuve dans le cas beaucoup plus simple des
clauses. Ce cas élimine le besoin d’appliquer des règles droites ainsi que la règle ∃L, et donc
le vocabulaire de la preuve ne change pas pendant la preuve, ce qui permet de l’omettre.

Théorème 2.7 Tout séquent valide Γ −→ où Γ est une conjonction de clauses possède une
preuve organisée en deux parties :
– une partie supérieure propositionnelle, dont les seules règles autorisées sont des ∨G
et des règles structurelles gauches, aboutissant à la preuve d’un séquent Γ′ −→
formé de clauses qui sont des instances closes des clauses de Γ ;
– une partie inférieure dont toutes les règles sont des introductions ∀G ou des contrac-
tions gauches.

Preuve
Par récurrence appropriée et transformation (récursive) de la preuve par des règles de per-
mutation adéquates à partir d’une preuve initiale supposée sans coupure. Notons quíl faut
modifier la règle Initial, de manière à manipuler des clauses, Elle devient :

A, ¬A −→
où A désigne un atome.
2
Donnons un exemple de permutation de façon à voir son impact sur la preuve.
Preuve initiale :
A[t/x], Γ′ −→
∀L
∀xA, Γ′ −→ ...

Règles Structurelles RS C, ∀xA, Γ −→

B, ∀xA, Γ −→
∨L
B ∨ C, ∀xA, Γ −→
Preuve transformée :
A[t/x], Γ′ −→
WL ...
A[t/x], ∀xA, Γ′ −→
C, ∀xA, Γ −→
Règles Structurelles RS WL
C, A[t/x], ∀xA, Γ −→
B, A[t/x], ∀xA, Γ −→
∨L
B ∨ C, A[t/x], ∀xA, Γ −→
∀L
B ∨ C, ∀xA, ∀xA, Γ −→
CL
B ∨ C, ∀xA, Γ −→

23
On peut remarquer que la distance de la règle ∀L à la racine de la preuve a décru. Il y a
bien sûr d’autres cas à considérer, et il faut trouver une mesure de la complexité de preuve
qui convienne à tous.
Notons que l’on pourrait également intégrer à cette étape la phase de skolémisation. Il
suffirait pour cela de partir d’un séquent Σ : Γ −→ où Γ devrait alors être formé de formules
prénexes. Mais la théorème du séquent intermédiaire s’avère alors beaucoup plus difficile à
prouver.

2.4 Calcul des séquents clausal


Les règles en sont :

A ∈ Γ, ¬A ∈ Γ for some atom A


Γ −→
C1 , . . . , Cm , Γ′ −→ B, Γ′ −→
D1 ∨ B, . . . , Dn ∨ B, Γ −→

(i) Γ′ , Γ′′ sont des sous-ensembles de {D1 ∨ B, . . . , Dn ∨ B, Γ}
(ii) {C1 , . . . , Cm } est un sous-ensemble non vide de {D1 , . . . , Dn }
(iii) B est un littéral

Théorème 2.8 Le calcul des séquents clausal est correct et complet.

Preuve
Il s’agit cette fois de regrouper des séquences d’application de règles d’inférences du calcul
des séquents dans la partie propositionnelle d’une preuve de la forme précédente.
On regroupe tout d’abord la règle d’initialisation avec les règles structurelles qui la
suivent et on obtient ainsi la première règle du calcul.
On regroupe ensuite plusieurs étapes ∨L successives pourvu qu’elles mettent toutes en
jeu des séquent de la forme B, Γ −→, ainsi que les règles structurelles qui les suivent, ce
qui donne la seconde règle du calcul.

2.5 Complétude de la résolution close


Preuve
Par récurrence sur la structure de l’arbre de preuve du calcul des séquents clausal.
Cas de base : la preuve se réduit à une feuille de la forme D1 , . . . , Dn −→, auquel cas il
existe Di et Dj avec i 6= j auxquels appliquer la résolution close pour en déduire la clause
vide.
Cas général : La preuve dans le calcul des séquents clausal se termine donc par l’appli-
cation de la règle , et l’arbre de preuve a donc la forme :
T1 T2

C1′ , . . . , CP′ , Γ′ −→ B, Γ′′ −→

C1 ∨ B, . . . , Cn ∨ B, Γ −→

24
Par hypothèse de récurrence, 2 ∈ Res∗ (C1′ , . . . , Cp′ , Γ′ ) (réfutation R1 ) et 2 ∈
Res∗ (B, Γ′′ ) (réfutation R2 ).
Cas 1 : L’une des réfutations est à partir de D1 , . . . , Dn et c’est terminé.
Cas 2 : Aucune des réfutations ne travaille à partir de D1 , . . . , Dn et donc B 6∈
{D1 , . . . , Dn }. On remplace alors tout d’abord C1′ , . . . , Cp′ par C1′ ∨ B, . . . , Cp′ ∨ B dans
R1 , ce qui fournit un arbre de résolution R1′ aboutissant en B. Il suffit alors de brancher cet
arbre dans R2 aux occurrences de B pour avoir une réfutation de la clause vide à partir des
clauses de départ.

2.6 Relèvement et Complétude de la résolution


Lemme 2.9 Soient A∨Cγ et ¬A∨Dη deux instances closes (en forme normale disjonctive)
des clauses P ∨C et N ∨D, telles que (i) Var(P ∨ C)∩Var(N ∨ D) = ∅, et (ii) les atomes
de P γ soient tous égaux à A et ceux de N η à ¬A. Alors P = N possède un plus grand
unificateur σ tel que Cσ ∨ Dσ ∈ Res(P ∨ C, N ∨ D), et Cγ ∨ Dη = (Cσ ∨ Dσ)τ pour
une certaine substitution τ .

Preuve
Comme on peut toujours supposer que les clauses P ∨ C et N ∨ D ont des variables toutes
distinctes, on en déduit que la substitution close γ ∪ η égale à γ pour les variables libres de
P ∨ C et à η pour celles de N ∨ D unifie le problème P = N . Soit σ l’unificateur principal
du problème, et τ la substitution telle que γ ∪ η = στ . On vérifie sans peine la propriété
annoncée. 2

On en déduit :

Theorem 2.10 (Robinson) Un ensemble S de clauses est insatisfiable ssi la clause vide
appartient à Res∗ (S).

Preuve
Elle utilise le théorème de Herbrand, la complétude dans le cas clos et le lemme précédent.
Par le théorème de Herbrand, S est insatisfiable ssi cela est le cas de l’ensemble fini
E des instances closes de S. Par le lemme de relèvement, Res∗ (E) est inclus dans les
instances closes de Res∗ (S). La clause vide ne pouvant être l’instance que d’elle même, on
en déduit le résultat.
Notons que l’utilisation du lemme de relèvement impose l’élimination par résolution
de tous les atomes qui deviennent égaux dans l’unification. 2

2.7 Lectures
[12, 13, 8]

25
2.8 Exercices
1 Décrire un algorithme qui engendre comme précédemment un ensemble de clauses
insatisfiables pour lequel le nombre de symboles de Skolem ajoutés soit minimal.
2 Montrer la correction du raisonnement suivant : Les Crétois sont tous des menteurs.
Je suis Crétois. Donc je suis menteur.
3 Soit F reres(x, y) une relation symétrique, transitive et antiréflexive. Montrer la cor-
rection du raisonnement suivant qui se passe en Crète, royaume des menteurs :
1. tout Crétois a un frère menteur ;
2. tout Crétois a les cheveux blonds ou bruns ;
3. deux frères ont la même couleur de cheveux ssi ils sont menteurs tous deux ou
pas menteurs tous deux ;
4. Donc, en Crète, si deux frères n’ont pas la même couleur de cheveux, alors ils
ont un troisième frère.
4 Montrer que tout ensemble insatisfiable de clauses contient au moins une clause dont
tous les littéraux sont négatifs.
5 Montrer que tout ensemble insatisfiable de clauses contient au moins une clause dont
tous les littéraux sont positifs.
6 On suppose les vocabulaires F, X et A dénombrables. Soit T (F) l’ensemble des
termes clos, appellé univers de Herbrand et noté G. Soit A(P, F) l’ensemble des
atomes clos, appellé base de Herbrand et noté B. Une interprétation H de Herbrand
- a pour domaine l’univers de Herbrand G,
- interprète le symbole f ∈ Fn par l’opération fH d’arité n telle que fH (t) = f (t),
- interprète le symbole de prédicat R ∈ Pn par un sous-ensemble arbitraire RH de
Gn.
On demande de montrer les propriétés suivantes :
1. Un ensemble S de clauses est satisfiable ssi il l’est dans une interprétation de
Herbrand.
2. La base de Herbrand est dénombrable, et donc B = {Ai }i∈N .
3. Étant donnée une énumération de la base de Herbrand, donner la définition d’un
arbre binaire, appellé arbre des interprétations, dont les branches soient en cor-
respondance biunivoque avec les interprétations de Herbrand.
4. Donner l’enumération de la base de Herbrand dans le cas de l’arbre des inter-
prétations de la figure 2.1, pour lequel le vocabulaire est formé des symboles
0 (symbole de constante), s (symbole de fonction unaire) et P (symbole de
prédicat binaire).
Un chemin de la racine à un noeud p ∈ (N + )∗ de l’arbre sera noté Hp et appellé
une interprétation partielle des atomes A0 à A|p|−1 . On dira que l’interprétation Iq
prolonge l’interprétation Ip si le chemin p est un préfixe du chemin q. On définit
un calcul des interprétations partielles dans une logique trivaluée (avec une nouvelle
valeur ⊥ qui se veut représenter la valeur indéfinie) de la manière suivante :
Pour toute clause C,
– Hp (C) = T si H(C) = T dans toute interprétation totale qui prolonge Hp .

26
P(0,0) V F

V F F
P(0,s(0)) V

P(s(0),0) V F V F V F V F

P(0,s(s(0))) V F V F V F V F V F V F V F V F

F IG . 2.1 – Exemple d’arbre des interprétations

– Hp (C) = F si H(C) = F dans toute interprétation totale qui prolonge Hp .


– Hp (C) = ⊥ dans le cas contraire.
On demande de répondre aux questions suivantes :
4. Soit Hp une interprétation partielle qui énumère tous les atomes de la clause
close C. Montrer que [C]Hp 6= ⊥.
5. Soit C une clause telle que [∀xC]H = F . Montrer qu’il existe une interprétation
partielle Hp telle que [∀xC]Hp = F .
On dit que p est un noeud d’échec pour l’ensemble S = {C1 , . . . , Cn } de clauses s’il
existe une clause Ci et une substitution close γ telle que [Ci γ]Hp = F et la propriété
n’est vrai pour aucun prédécesseur de p dans l’arbre des interprétations.
On appelle arbre sémantique d’un ensemble S de clauses l’arbre obtenu à partir de
l’arbre des interprétations en élaguant les sous-arbres issus d’un noeud d’échec et en
étiquettant ce dernier par les instances des clauses réfutées.
Un arbre sémantique sera dit clos si toute branche se termine en un noeud d’échec.
7. Supposons que F est réduit à un symbole de constante 0 et à un symbole unaire
s, P étant réduit au symbole de prédicat unaire A. Soit S l’ensemble de clauses
{¬A(x) ∨ A(s2 (x)), A(0), A(s(0)), ¬A(s3 (0)) ∨ ¬A(s(0))}. Dessiner l’arbre
sémantique associé pour une énumération naturelle des atomes clos de la base
de Herbrand.
8. Cet ensemble de clauses est-il satisfiable ?
9. Quel est l’arbre sémantique clos pour l’ordre sur les atomes qui énumère tous
les atomes de la forme A(s2n+1 (0)) avant d’énumérer les atomes de la forme
A(s2n (0)) ?
10. Montrer la propriété suivante [Théorème de Herbrand] : un ensemble S de
clauses est insatisfiable ssi il possède un arbre sémantique clos.
11. En déduire qu’un ensemble S de clauses est insatisfiable si et seulement si cela
est vrai d’un ensemble fini d’instances closes de clauses de S.
12. En déduire la complétude réfutationnelle de la résolution close.
13. En déduire la complétude réfutationnelle de la résolution close négative, c’est-
à-dire faisant nécessairement intervenir une clause dont tous les littéraux sont
négatifs.

27
Chapitre 3

Unification

Les termes avec variables servent à représenter l’ensemble de toutes leurs instances
closes. Par exemple, si les entiers naturels sont représentés en unaire à l’aide des symboles
0 et s (successeur), le terme s(x) représente l’ensemble infini {s(0), s(s(0)), . . .}. Cer-
taines opérations sur les termes sont alors fondamentales. Par exemple, l’intersection des
ensembles d’instances de deux termes est obtenue grâce à l’unification. L’opération d’unifi-
cation correspond également à la borne supérieure de deux termes (modulo similarité) pour
le préordre d’inclusion des instances.

3.0.1 Problèmes d’unification


Définition 3.1 Un problème d’unification P est ou bien la formule ⊥ ou bien une formule
t 1 = u1 ∧ . . . ∧ t n = un
où t1 , . . . , tn , u1 , . . . , un sont des termes. Lorsque n = 0, le problème obtenu est par
convention la formule ⊤.
On note par Var(P ) l’ensemble des variables de P .
Le signe "=" est symétrique, si bien que nous ne faisons aucune différence entre s = t
et t = s. Étant donné un problème d’unification, on distingue ses solutions des unificateurs
qui les représentent. On fera en général l’hypothèse implicite qu’il existe une constante dans
F.
Définition 3.2 Étant donné un problème d’unification t1 = u1 ∧ . . . ∧ tn = un ,
– une solution est une substitution close σ telle que σ(ti ) = σ(ui ) pour tout i ;
– un unificateur est une substitution σ telle que toute substitution close soit solution du
problème d’unification t1 σ = u1 σ ∧ . . . ∧ ti σ = ui σ.
Toute substitution close est solution de ⊤ et aucune substitution close n’est solution de ⊥.
Deux problèmes d’unification sont équivalents s’ils ont mêmes ensembles de solutions.
Exemple 3.3 Le problème d’unification f (x, g(x)) = f (h(y, z), y) n’a pas de solution
dans T (F, X).
Un unificateur sert donc à décrire (en utilisant des variables) des ensembles potentielle-
ment infinis de solutions. L’opération d’instantiation nous permet de passer d’un unificateur
à un autre, et donc de les comparer :

28
Définition 3.4 étant donné un problème d’unification P , on dit que l’unificateur σ est plus
général que l’unificateur τ , noté σ ≤
• τ s’il existe une substitution λ telle que σ = τ λ.

Définition 3.5 Un unificateur de P est dit principal (ou plus général) s’il est minimal pour
l’ordre ≤.

Propriéte 3.6 Si σ et τ sont deux substitutions principales de Γ, alors elles sont similaires,
c’est-à-dire s’échangent par renommage de leur variables.

Preuve
Laissée au lecteur. 2

L’unificateur principal de deux termes, lorsqu’il existe, est donc unique modulo =.

3.0.2 Formes résolues


Les formes résolues sont des problèmes d’unification plus simples pour lesquels le cal-
cul des solutions comme des unificateurs (qui forment toujours deux ensembles non-vides)
est immédiat ; plusieurs formes résolues sont interessantes : nous verrons les arbre-formes
résolues et les DAG-formes résolues et comment les calculer.

Définition 3.7 Un problème d’unification est une arbre-forme résolue (ou forme résolue
tout court) si c’est ⊥ ou ⊤ ou s’il peut s’écrire :

x1 = t1 ∧ . . . ∧ xn = tn

où x1 , . . . , xn sont des variables distinctes qui n’ont pas d’autre occurrence dans le pro-
blème (⊥ est une abbréviation pour le cas n = 0).

Lemme 3.8 Les solutions d’une arbre-forme résolue x1 = t1 ∧ . . . ∧ xn = tn sont les


instances closes d’une substitution σ = {x1 → t1 . . . , xn → tn } qui en est l’unificateur
principal.

Preuve
On vérifie aisément que σ est un unificateur, car xi σ = ti et ti σ = ti d’après la condition sur
les variables. De plus, si θ est un unificateur arbitraire, xi θ = ti θ = (xi σ)θ, d’où θ = σθ,
ce qui montre que θ est une instance de σ qui est donc une substitution principale pour
l’ensemble des unificateurs. Comme toute solution est un unificateur particulier, et toute
instance close d’un unificateur est une solution particulière, on en déduit le résultat. 2

Définition 3.9 Un problème d’unification est une DAG-forme résolue si c’est ⊤, ⊥ ou s’il
peut s’écrire :
x1 = t1 ∧ . . . ∧ xn = tn
où x1 , . . . , xn sont des variables distinctes telles que, pour tout i ≤ j, xi ∈
/ V ar(tj ).

Ces formes résolues ne font que représenter un plus général unificateur de façon com-
pacte :

29
Lemme 3.10 Si x1 = t1 ∧ . . . ∧ xn = tn est une DAG-forme résolue équivalente à s = t,
alors σ = σ1 σ2 . . . σn , où σi = {xi → ti pour tout i ∈ [1..n], est un plus général unificateur
de s et t. 2

Preuve
On montre d’abord que σ est un unificateur. On a xi σ = xi σi . . . σn = ti σi+1 . . . σn = ti σ
grâce à la condition sur les variables de la forme résolue.
On montre ensuite que σ est principale parmi l’ensemble des unificateurs par récurrence
sur n. Le cas de base n = 0 est trivial. Dans le cas général, τ = σ1 σ2 . . . σn−1 est unificateur
principal de la forme résolue P ′ = x1 = t1 ∧ . . . ∧ xn−1 = tn−1 . Mais tout unificateur
γ de s = t est en particulier unificateur de P ′ , et donc γ = τ θ. Comme γ unifie aussi
l’équation xn = tn , on a xn τ θ = tn τ θ, d’où xn θ = tn θ par condition sur les variables
de la forme arbre-résolue, et donc θ est une instance de la substitution {xn 7→ tn } qui est
unificateur prioncipal de cette équation par le lemme 3.8. Et donc γ est une instance de σ,
ce qui termine la preuve. 2
Le lecteur aura intérêt à se demander où a été utilisée notre hyothèse d’existence d’une
constante.

3.0.3 Règles de transformation


Nous donnons maintenant des règles de transformation qui permettent de réécrire un
problème d’unification en un problème d’unification équivalent jusqu’à obtenir une forme
résolue.
Les règles de la figue 3.1 sont ici volontairement redondantes (nous verrons pourquoi
dans le paragraphe 3.0.5). Ce sont des (schémas de) règles de réécriture dans l’algèbre des
problèmes d’unification. En particulier elles peuvent s’appliquer à n’importe quel sous-
problème, remplaçant le membre gauche par le membre droit dès que la condition d’appli-
cation est vérifiée. Le symbole ∧ est ici supposé associatif et commutatif.

Proposition 3.11 Chacune des règles de la figure 3.1 transforme un problème d’unification
en un problème équivalent.

Preuve
Les règles d’élimination ou de remplacement de variables, d’élimination des équations tri-
viales et de fusion sont des conséquences des axiomes de l’égalité, ou, si l’on préfère, ce
sont des conséquence du fait que l’égalité des termes est une congruence.
Les règles de décomposition et d’incompatibilité sont une conséquence des axiomes des
termes.
Enfin, le test d’occurrence exprime qu’un terme fini ne peut être égal à un de ses
sous-termes stricts. En effet, si c’était le cas, par propriété de congruence de l’égalité, on
obtiendrait par récurrence un arbre infini. 2

3.0.4 Terminaison
Les règles de la figure 3.1 ne précisent pas de stratégies d’application : à partir de ces
règles on peut fabriquer de nombreux algorithmes d’unification en spécifiant un peu plus

30
équations triviales s=s
−→

Decompose f (s1 , . . . , sn ) = f (t1 , . . . , tn )


−→
s 1 = t1 ∧ . . . ∧ s n = tn

Conflit f (s1 , . . . , sn ) = g(t1 , . . . , tm )


−→

Si f 6= g

Coalescence x = y∧P
−→
x = y ∧ P {x → y}
Si x, y ∈ V ar(P ), x 6= y

Elimination de variable x = s ∧ P
−→
x = s ∧ P {x → s}
Si x ∈ V ar(P ), x ∈
/ V ar(s) et s 6∈ X

Fusion x = s∧x= t
−→
x = s∧s = t
Si x ∈ X et 0 < |s| ≤ |t|

Test d’occurrence x1 = t1 [x2 ]p1 ∧ . . . ∧ xn = tn [x1 ]pn


−→

Si p1 · . . . · pn 6= Λ

Absorbsion ⊥ ∧P
−→

Neutralisation ⊤∧P
−→
P

F IG . 3.1 – Règles d’unification


31
dans quel ordre et à quelle sous-problème appliquer les règles. Mais nous allons montrer
que, quelle que soit la stratégie d’utilisation des règles, l’algorithme obtenu termine tou-
jours. Ceci permet de factoriser les preuves de terminaison de différents algorithmes d’uni-
fication.

Theorem 3.12 Le système de règles de la figure 3.1 définit un ordre strict bien fondé sur
les problèmes d’unification.

Preuve
On considère les fonctions d’interprétation suivantes des problèmes d’unification :
– Une variable x est dite résolue dans un problème P si P ≡ x = s ∧ Q et x ∈ / V ar(s)
et x ∈/ V ar(Q).
φ1 (P ) est le nombre de variables non résolues de P .
– Si P ≡ s1 = t1 ∧ . . . ∧ sn = tn , alors φ2 (P ) est le multi-ensemble {m1 , . . . , mn }
où mi = m(si = ti ) et m(s = t) = max(|s|, |t|). Par convention, on pose m(⊥) =
m(⊤) = 0
– φ3 (P ) est le nombre d’équations de P dont l’un des membres au moins est une va-
riable.
φ(P ) est le triplet (φ1 (P ), φ2 (P ), φ3 (P )). L’ensemble de ces triplets est muni de la com-
posée lexicographique de trois ordres :
1. L’ordre habituel sur les entiers naturels
2. L’extension multi-ensemble de l’ordre sur les entiers naturels
3. L’ordre habituel sur les entiers naturels
Il est ainsi muni d’un ordre bien fondé puisque construit à partir d’extensions multi-
ensemble et lexicographiques d’ordres bien fondés.
Il suffit maintenant de montrer que si P −→ Q alors φ(P ) > φ(Q). Le sens de varia-
tions des trois fonctions d’interprétation est résumé dans le tableau ci-dessous :

φ1 φ2 φ3
équations triviales  ≺
Decompose  ≺
Incompatibilité  ≺
Élimination de variable ≺
Fusion  = ≺
Test d’occurrence  ≺
Absorbsion  ≺
Neutralisation  ≺

Il n’est pas difficile de vérifier qu’aucune règle ne crée de nouvelle variable non-résolue.
Les conditions d’application des deux règles d’élimination et de remplacement de variables
garantissent par ailleurs qu’une variable non résolue (x dans la formulation des règles doit
apparaitre dans P ) devient résolue après leur application.
Notons également que la règle de décomposition fait bien décroître φ2 puisqu’elle rem-
place m = max(|f (s1 , . . . , sn )|, |f (t1 , . . . , tn )|) par n entiers strictement inférieurs.
La règle de fusion conserve bien φ2 à cause de la condition |s| ≤ |t| : max(|x|, |t|) =
max(|s|, |t|). Enfin, φ3 est bien décroissante par fusion à cause de la condition s ∈ / x qui,

32
avec |s| ≤ |t|, garantit que s = t est une équation dont aucun des membres n’est une
variable.
Bien entendu certaines fonctions d’interprétation (φ2 ou φ3 ) peuvent croître par
application de certaines règles, mais la composée lexicographique des trois interprétations
est toujours décroissante comme le montre le tableau ci-dessus. 2

3.0.5 Complétude
Nous extrayons successivement 3 ensembles de règles de la figure 3.1 et nous montrons
que dans chaque cas, l’ensemble de règles permet d’obtenir les formes résolues souhaitées,
ce qui fournit trois algorithmes d’unification.

Proposition 3.13 Si P est un problème d’unification auquel aucune règle de la figure 3.1
ne s’applique, alors P est une arbre-forme résolue. (NB : les règles de fusion et de rempla-
cement de variables sont inutiles pour obtenir ce résultat).

Preuve
Comme les règles d’incompatibilité et de décomposition ne s’appliquent pas, toutes les
équations ont une variable x dans un de leurs membres. Comme le test d’occurrence et la
règle des équations triviales ne s’applique pas, si x = t est une des équations de P , x n’est
pas une variable de t. Comme la règle d’élimination de variable ne s’applique pas, x ou t
doit de plus être une variable résolue, ce qui conduit au résultat souhaité. 2

Définition 3.14 Deux termes s et t sont dits unifiables si s = t possède au moins une
solution.

Corollaire 3.15 Deux termes s et t sont unifiables si et seulement si ils ont un plus général
unificateur.

Property 3.16 Il existe des termes s et t dont la forme résolue est exponentiellement plus
grande que s et t.

La preuve est à faire en exercice.

Proposition 3.17 Si P est un problème d’unification auquel la seule règle (peut-être) ap-
plicable parmi les règles de la figure 3.1 est l’élimination de variables, alors P est une
DAG-forme résolue.

Preuve
De même que ci-dessus, si la seule règle applicable à P est l’élimination de variable, alors
toutes les équations de P sont de la forme x = t où x ∈ / V ar(t). Considérons alors la
relation d’occurrence ≥occ sur les variables de P définie comme la plus petite relation de
préordre telle que, si x = t[y]p est dans P , alors x ≥occ y. Comme le test d’occurrence ne
s’applique pas, la relation d’équivalence associée à ce préordre est la plus petite relation
d’équivalence =S qui contient x =S y si x = y est dans P . Mais, si x =S y, x ou y est
une variable résolue puisque la règle de remplacement de variables ne s’applique pas. On

33
peut donc construire un ordre ≥ sur les variables de P tel que : les variables résolues sont
minimales et x >occ y ⇒ x > y. En complétant ≥ en un ordre total, on obtient le résultat
souhaité. 2

Property 3.18 La forme DAG-résolue de deux termes s et t quelconque est de taille li-
néaire en la taille de s et t.

La preuve est à faire en exercice.

Property 3.19 La forme DAG-résolue de deux termes s et t quelconque peut être calculée
en temps O(|s| + |t|).

La preuve (non évidente) est laissée au lecteur. Il s’agit de trouver un ordre d’application
des règles qui assure la linéarité du calcul.

Exemple 3.20

x = f (f (x)) ∧ x = f (x) →Fusion x = f (x) ∧ f (f (x)) = f (x)


→Décomposition x = f (x) ∧ x = f (x)
→Fusion x = f (x) ∧ f (x) = f (x)
→équations triviales x = f (x)
→T estd′ occurrence ⊥

3.1 Lectures
[6, 7, 11, 3]

3.2 Exercices
1. Donner une DAG-forme résolue et une arbre-forme résolue pour les problèmes d’uni-
fication suivants :
(a) f (f (x1 , x2 ), f (x3 , x4 )) = f (f (f (x2 , x2 ), f (x3 , x3 )), f (f (x4 , x4 ), f (a, a)))
(b) f (x) = y ∧ f (f (y)) = f (z) ∧ x = f (z)
(c) f (x, f (x, x)) = f (f (y, y), f (f (f (z, z), f (a, x′ )), f (f (a, a), f (a, a))))
2. On pourrait définir les unificateurs de manière analogue aux solutions, en suppri-
mant la restriction que la substitution est close. Les deux définitions sont-elles équi-
valentes ?
3. On dit que le terme s est plus général que le terme t s’il existe une substitution σ telle
que t = sσ.
(a) Montrer que la relation de généralité (ou filtrage) est un préordre.
(b) Montrer que l’equivalence engendrée par le préordre de généralité est le renom-

mage =.
(c) La partie stricte du préordre de généralité est bien fondée.

34
4. Montrer par des exemples que toutes les conditions d’application des règles de la
figure 3.1 sont nécessaires pour assurer la terminaison.
5. Soient trois termes unifiables u, v, w avec θ pour unificateur principal, σ l’unificateur
principal des deux premiers et τ l’unificateur de uσ et w. Montrer que uθ = wτ .
6. Étant donnés n termes t1 , . . . , tn à unifier, quelle est la complexité d’un algo-
rithme d’unification procédant de manière incrémentale, en unifiant (en temps li-
néaire) successivement, t1 = t2 (résultat σ1 ), puis σ1 ∧ t1 = t3 , etc, jusqu’à
σ1 ∧ . . . ∧ σn−1 ∧ tn−1 = tn ?
7. Si x1 = t1 ∧ . . . ∧ xn = tn est une arbre-forme résolue, on appelle paramètres les
variables autres que x1 , . . . , xn . Montrer que deux formes résolues équivalentes ont
même nombre de variables résolues et le même nombre de paramètres. On parlera
donc dans la suite du nombre de paramètres d’un système d’équations
8. Soient P et P ′ deux problèmes d’unification. Montrer que, si toute solution de P est
une solution de P ′ et que, de plus, P et P ′ ont même nombre de paramètres, alors P
et P ′ ont même ensemble de solutions.
9. Montrer que, si E possède N paramètres et E1 , . . . , Ek sont des problèmes d’unifi-
cation ayant chacun strictement moins de N paramètres, alors E possède au moins
une solution qui n’est solution d’aucun des problèmes Ei .
10. Montrer que deux arbre-forme résolues équivalentes ont même taille (i.e. même
nombre de symboles)
11. Donner un exemple de DAG-forme résolue dont la taille est O(n) alors que l’arbre-
forme résolue correspondante est de taille O(2n ).
12. Montrer que si un problème d’unification E est équivalent à une disjonction E1 ∨
. . . ∨ En de problèmes d’unification, alors E est équivalent à l’un des Ei .

35
Chapitre 4

Clauses de Horn et PROLOG

4.1 Stratégies de résolution


Dans ce paragraphe, nous ne faisons pas d’hypothèse restrictive sur la forme des clauses
manipulées.

4.1.1 Résolution binaire


La règle de résolution que nous avons donné a le désavantage d’unifier des termes en
nombre arbitraire plutôt que des couples de termes. Nous allons donc donner une nouvelle
version de la résolution à l’aide de règles d’inférences dites binaires, appellées RF B, pou-
vant coder la résolution générale.

A ∨ C ¬B ∨ D
Résolution Binaire :
Cσ ∨ Dσ
où σ est l’unificateur principal des atomes A et B.

A∨B∨C
Factorisation Binaire :
Bσ ∨ Cσ
où σ est l’unificateur principal des littéraux A et B.

Theorem 4.1 Résolution et factorisation binaires sont correctes et complètes, cad un en-
semble de clauses S est insatisfiable ssi la clause vide appartient à RF B ∗ (S).

Preuve
On montre que toute résolution se code comme une séquence de résolutions et factorisations
binaires. Ce codage utilise de façon essentielle le fait que les clauses résolues ne partagent
pas de variables. On part d’une inférence par résolution :

P1 ∨ . . . ∨ Pp ∨ C ¬N1 ∨ . . . ∨ ¬Nn ∨ D
Cσ ∨ Dσ
où σ désigne l’unificateur principal du problème d’unification

P1 = P2 ∧ . . . ∧ P1 = Pp ∧ P1 = N1 ∧ N1 = N2 ∧ . . . ∧ N1 = Nn

36
et on résoud le problème d’unification avec une stratégie adéquate d’application des règles
d’unification de manière à faire apparaître les factorisations binaires successives terminées
par une résolution binaire. Il est important de noter ici que les clauses à résoudre sont re-
nommées de manière à ce qu’elles ne partagent pas de variable.
Pour cela, on commence par unifier P1 = P2 , ce qui donne un unificateur principal
σ2 , et l’on remplace les variables de Dom(σ2 ) dans le reste du problème, c’est-à-dire dans
P3 , . . . , Pp . Cela fait apparaître une factorisation, et l’on recommence jusqu’à résolution
complète du problème P1 = P2 ∧ . . . ∧ P1 = Pp , qui fait donc apparaître les unificateurs
partiels σ2 , . . . , σp . On recommence ensuite avec le problème N1 = N2 ∧ . . . ∧ N1 = Nn ,
ce qui introduit les unificateurs partiels τ2 , . . . , τn . Il nous reste à terminer avec le problème
P1 σ2 . . . σn = N1 τ2 . . . τn , qui engendre une résolution binaire.
2

On peut bien sûr se demander quel est l’impact de cette stratégie sur la complexité
des opérations d’unification qui doivent être effectuées, d’un seul coup pour l’unification
générale, et sous forme d’unifications binaires succesives dans le cas binaire. Cette question
intéressante est laissée à la sagacité du lecteur.

4.1.2 Résolution négative


Une preuve par résolution consiste à explorer l’ensemble Res∗ (S) organisé générale-
ment sous forme d’un arbre. Cet ensemble étant en général infini, et la clause vide pouvant
se trouver loin de la racine, il est essentiel d’en réduire la taille d’une part, et d’adopter des
stratégies d’exploration efficaces d’autre part. Pour cela, une méthode consiste à contraindre
l’application de la règles de résolution. Parmi les nombreuses restrictions de la résolution,
l’une d’elle joue un rôle essentiel, la résolution négative, pour laquelle au moins l’une des
deux clauses de départ ne contient que des littéraux négatifs.

P ∨C N ∨D
Résolution négative :
Cσ ∨ Dσ
où σ est l’unificateur principal du problème P = N , et la clause N ∨ D ne contient que des
littéraux négatifs. On notera par Res − neg∗ (S) l’ensemble des clauses qui peuvent être
inférées à partir d’un ensemble S de clauses par la règle de résolution négative.

Theorem 4.2 La résolution négative est correcte et complète : un ensemble S de clauses


est insatisfiable ssi la clause vide appartient à Res − neg∗ (S).

Preuve
Le lemme de relèvement s’appliquant sans changement, il suffit de prouver la complétude
dans le cas clos. On peut le faire par une méthode sémantique, ce qui fait l’objet de l’exer-
cice 2.8.6.13. On peut aussi le faire par une méthode syntaxique, comme nous l’avons fait
pour la résolution, en faisant des permutations appropriées dans la preuve obtenue par le
théorème du séquent intermédiaire. Le cas général des clauses arbitraires s’avère toutefois
assez complexe à mettre en œuvre. 2
On peut bien sûr se restreindre à une règle de résolution négative binaire, pourvu que
l’on conserve la règle de factorisation binaire.

37
4.1.3 Stratégie Input
La stratégie dite input résout toujours une clause engendrée par résolution (en principe
la dernière) avec une clause de l’ensemble S de départ. Cette stratégie a la propriété de
ne pas faire exploser l’espace de recherche, elle a donc une importance fondamentale. Elle
est malheureusement incomplète, comme on pourra s’en convaincre avec l’exemple S =
{A ∨ B, A ∨ ¬B, ¬A ∨ B, ¬A ∨ ¬B}.

4.2 Stratégies de résolution complètes pour les Clauses de Horn


Définition 4.3 Une clause de Horn est une clause comportant au plus un littéral positif.

Une remarque essentielle est que le résultat d’une inférence négative mettant en jeu des
clauses de Horn est une clause de Horn.
L’étape suivante consiste à préciser ce que sont un programme et une requête en logique
de Horn.

Définition 4.4 Un programme en logique de Horn est un ensemble fini de clauses compor-
tant chacune exactement un littéral positif. On notera souvent par A : −B1 , . . . , Bp une
telle clause, n pouvant être nul.
Une requête est un ensemble fini (disjonction) de littéraux négatifs. On notera souvent
par : −R1 , . . . , Rn une telle clause.

Notons que tout programme possède des modèles, puisqu’il suffit d’interpréter tous les
atomes de la base de Herbrand par vrai.
Des définitions, on déduit facilement :

Theorem 4.5 La résolution négative input est complète pour les programmes en logique
de Horn.

Preuve
Il suffit de remarquer que la règle de factorisation est inutile dans le cas des clauses de
Horn (la preuve utilise à nouveau une stratégie d’unification particulière qui va permettre
de résoudre autant de fois que nécessaire avec la même clause du programme), et que seules
les clauses du programme comportent un littéral positif les clauses inférées étant toutes des
requêtes. Il est à nouveau essentiel de renommer les clauses avant toute résolution. Les
détails de cette preuve sont laissés au lecteur. 2.
En pratique, étant donnée une requête R1 , . . . , Rp (donc chaque Ri est un littéral néga-
tif), la stratégie négative consiste à unifier l’un des Ri avec le littéral positif H d’une clause
H ∨ A1 ∨ . . . ∨ An du programme. Si σ est l’unificateur principal de H et Ri , on infère
A1 σ . . . , An σ qui peuvent être considérés comme de nouvelles requêtes. Comme, par la
stratégie, la clause but qui vient d’être engendrée est toujours une des prémisses de la nou-
velle inférence, le but Ri peut être effacé. Ceci revient ainsi à réécrire le but (ou plutôt un
des littéraux du but) en utilisant une des clauses du programme, vu comme une réécriture
de la tête (littéral positif) dans le corps (littéraux négatifs).
On peut facilement montrer que le choix d’un littéral particulier du but n’a pas d’in-
fluence sur l’obtention de la clause vide. Il suffit pour cela de faire commuter les résolutions

38
successives. On parle à ce propos de non-déterminisme “don’t care”, et on va donc adopter
un ordre particulier pour le choix du littéral à éliminer à chaque étape.
On appelle fonction de sélection un ordre total sur les littéraux négatifs qui spécifie le
but à réécrire en priorité : on résoud toujours sur le but minimal. Cette stratégie est complète
(i.e. à chaque étape il suffit de considérer un seul but). Par contre, lors de la recherche d’une
preuve, toutes les clauses permettant de réécrire ce but devront être considérées : on parle
cete fois de non-déterminisme “don’t know”.
La règle de résolution avec une fonction de sélection et pour les programmes logiques
est appelée SLD-résolution. Des considérations ci-dessus il résulte que :

Theorem 4.6 La SLD-résolution est complète.

Enfin, en programmation logique, on s’intéresse aussi au résultat d’une requête, c’est-


à-dire aux valeurs des variables de la requête claculées au cours de l’obtention de la clause
vide par résolution. Pour des raisons d’efficacité, on ne souhaite pas appliquer les substi-
tutions. Pour ces raisons, on considère des clauses contraintes. Une clause contrainte est
une paire formée d’une clause C et d’un problème d’unification φ et notée C | φ. Une telle
clause contrainte représente en fait l’ensemble des clauses {Cσ | σ |=T (F ) φ}. (σ |=T (F ) φ
si σ est une substitution close des variables libres de φ et φσ est valide dans la théorie des
termes finis). En général, on remplace aussi |=T (F ) par |=RT (F ) afin d’éviter d’avoir à faire
le test d’occurrence dans l’unification. Dans ce contexte, la règle de résolution peut s’écrire :
A(t) ∨ C ¬B(u) ∨ D | φ
C ∨ D | φ ∧ A(t) = B(u)
et il faut alors lui adjoindre de nouveles règles qui ont trait au traitement des contraintes (on
note par R | φ la requête courante, exprimée comme une clause contrainte) :

R | φ → R | φ′ si φ −→U N IF φ′
R | ⊥ → échec
2 | φ → succès(φ) φ est en forme résolue

Les variables de t sont supposées ne pas apparaître libres dans u. De plus les variables
n’apparaissant pas dans le but initial et n’apparaissant plus non plus dans le but sont im-
plicitement quantifiées existentiellement (ce qui reflète le fait qu’on ne s’intéresse qu’aux
valeurs des variables du but initial).
La réponse à une requête ¬B est alors la contrainte ψ telle que l’on ait inféré la clause
2 | ψ. La contrainte ψ est donnée en forme résolue. Ses solutions sont des substitutions σ
telles que P |= Bσ.
Le fait que les contraintes soient ici des équations ne joue de rôle que pour la mise
en forme résolue et on peut donc employer d’autres systèmes de contraintes plus expres-
sifs (c’est souvent le cas en pratique). De même les clauses du programme P peuvent être
contraintes.

Exemple 4.7 Soit le programme logique

I(x, [], x.[]).


I(x, x.l, x.l).
I(x, y.l, y.l′ ) ← I(x, l, l′ ) | x 6= y

39
Qui a pour but d’insérer un élément dans une liste sans doublons.
Soit la requête I(0, s(0).(x.[]), y). On obtient deux dérivations possibles conduisant
à 2 | ψ avec une contrainte ψ satisfiable : la première est (par souci de simplicité,
nous n’écrivons la contrainte complète que dans cette séquence, puis nous écrivons une
contrainte simplifiée).

I(0, s(0).(x.[]), y) → I(x1 , l, l′ ) | 0 = x1 ∧ y1 .l = s(0).(x.[]) ∧ y = y1 .l′ ∧ x1 6= y1


→ 2 | ∃x2 , l′ , l′′ , ∧y = s(0).l′ ∧ x2 = 0 ∧ x2 .l′′ = x.[] ∧ x2 .l′′ = l′
; 2 | x = 0 ∧ y = s(0).(0.[])

La deuxième est :
I(0, s(0).(x.[]), y) → I(x1 , l, l′ ) | x1 = 0 ∧ l = x.[] ∧ y = s(0).l′
→ I(x2 , l1 , l1′ ) | ∃y2 , l, l′ , l = x.[] ∧ y = s(0).l′ ∧ x2 = 0
∧l = y2 .l1 ∧ l′ = y2 .l1′ ∧ x2 6= y2
→ 2 | ∃x2 , l1 , l1′ , y2 , l, l′ , l1 = [] ∧ l1′ = x2 .[]
∧l = x.[] ∧ y = s(0).l′ ∧ x2 = 0 ∧ l = y2 .l1
∧l′ = y2 .l1′ ∧ x2 6= y2
; 2 | ∧y = s(0).(0.(x.[]))) ∧ x 6= 0

Nous reformulons ci-dessous les résultats de correction et de complétude de la SLD-


résolution en termes de requêtes et de programmes :

Proposition 4.8 Si la réponse ψ à une requête R pour un programme logique P a pour


mgu σ, alors, pour toute substitution close θ, Rσθ, P est insatisfiable.

Proposition 4.9 Si R est une requête pour un programme logique P et si IRθ, P est insatis-
fiable, alors il existe une réponse ψ à R telle que ψ a pour mgu σ et il existe une substitution
τ telle que στ = θ.

4.3 Plus petit modèle de Herbrand et sémantique des pro-


grammes logiques
Le but de ce paragraphe est de préciser lequel, parmi tous les modèles de Herbrand
d’un programme logique, est celui qui sous-tend les calculs par résolution. On va en donner
une caractérisation abstraite, puis une caractérisation calculatoire, et lón montrera qu’elles
coincident.
Si P est un programme logique. On note B la base de Herbrand et 2B l’ensemble des
parties de B, que l’on confond aussi avec l’ensemble des interprétations de Herbrand (les
éléments de I ∈ 2B correspondent aux éléments de la base qui s’interprètent en vrai, les
autres s’inteprétant à faux). On note MP l’intersection de tous les modèles de Herbrand
de P , dont on va montrer qu’il s’agit bien d’un modèle de P , qui sera donc le "plus petit
modèle de Herbrand”
\ du programme :
MP = I.
I∈2B ,I|=P

Proposition 4.10 Pour tout programme logique P , MP |= P .

40
Preuve
Il suffit de montrer que l’intersection d’un nombre quelconque de modèles de Herbrand de
P est aussi un modèle de Herbrand de P . On fait le raisonnement sur des clauses closes
pour simplifier.
Soit A ∨ ¬B1 ∨ . . . ∨ ¬Bn une clause C. Il y a deux cas.
A ∈ MP . Alors MP |= C.
A 6∈ MP . Alors, par définition de MP , il existe un modèle de Herbrand I de P tel que
A 6∈ I. Mais comme I |= C, il existe j tel que Bj 6∈ I, et donc Bj 6∈ MP par définition de
MP , d’où MP |= C. 2

Exemple 4.11 Soit P le programme :

Q(s(x)) ∨ ¬Q(x)
P (0) ∨ ¬Q(s(x))

Alors MP = ∅ car l’interprétation vide (tout est faux) satisfait bien P .

Ainsi MP constitue une interprétation "standard" du programme logique P . De façon


classique, on peut aussi construire MP à l’aide de l’opérateur de conséquence immédiate :
Si P est un programme logique, on note TP l’opérateur de conséquence immédiate
défini sur 2B par

TP (I) = {A ∈ B | A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close d’une clause de P,


etA1 , . . . , An ∈ I}

Exemple 4.12 Reprenons l’exemple 5.10. Alors TP (∅) = ∅, TP (B) = {P (0)} ∪


{Q(s(t)) t ∈ T (F)}, TP (TP (B)) = {P (0)} ∪ {Q(s(s(t))) t ∈ T (F)}, etc.

2B est muni d’une structure de treillis complet pour l’ordre ⊆ (i.e. l’ordre d’inclusion
des interprétations). On va donc pouvoir caractériser le plus petit point fixe de TP grâce
au théorème de Tarski, comme la limite de ses approximations successives, pourvu que
l’opérateur TP soit croissant et continu.

Proposition 4.13 TP est croissant sur les interprétations de Herbrand.

Preuve
La preuve en est laissée au lecteur. 2

Proposition 4.14 TP est continu sur les interprétations de Herbrand.

Preuve
Soit une famille croissante de parties de B, {Ik }k∈IN , dont le sup, le treillis des parties étant
S
complet pour l’ordre, est noté S = k Ik . TP étant croissante, {TP (Ik )}k∈IN , est une autre
S
famille croissante dont le sup est noté k TP (Ik ).

41
S S
L’équation TP ( k Ik ) = k TP (Ik ) exprime la continuité de l’opérateur TP :
[
TP ( I) = {A ∈ B | A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
I∈S S
d’une clause de P et ∀iAi ∈ I∈S I}
= {A ∈ B | ∀i∃Ij ∈ S, A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
d’une clause de P et Ai ∈ Ij }
(Notons ici que Ij dépend de i.)
= {A ∈ B | ∃I ∈ S, A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
d’une clause de P et ∀iAi ∈ I}
Notons ici que I est la clause Ij pour j maximal, donc ne dépend plus de i.
Cela utilise bien sûr la propriété de croissance de la famille d’interprétations.

Par le théorème de Tarski, nous en déduisons que le plus petit point fixe de TP existe
(grâce à la propriété de croissance) et est le sous-ensemble
d [
F = TPω (∅) = TPk (∅)
k

(grâce à la propriété de continuité).


De façon générale, lorsque TP est monotone, TPα pour un ordinal α est défini par récur-
rence transfinie par : TP0 = ∅, si TPα+1 = TP (TPα ) et, si α est un ordinal limite, TPα est la
borne supérieure des TPβ pour β < α. C’est la continuité qui implique que α = ω.
Nous allons maintenant montrer que le modèle minimal est un point fixe de TP , et que
tout point fixe de TP est un modèle de P . Cela assurera que le modèle minimal coincide
avec le plus petit point fixe. Ces propriétés découlent du lemme suivant :

Proposition 4.15 Soit I une interprétation de Herbrand et P un programme logique. I est


un modèle de P si et seulement si TP (I) ⊆ I.

Preuve
I |= P ssi pour toute instance close A∨¬A1 ∨. . .∨¬An d’une clause de P , I |= A1 , . . . , An
implique I |= A. 2

Theorem 4.16 Si P est un programme logique, MP est le plus petit point fixe de TP .

Preuve
Tout point fixe de TP est un modèle de P par la proposition 5.15, et il nous sufit donc de
montrer que MP est un point fixe de TP de mani‘ere à conclure par minimalité de MP .
MP étant un modèle de P , TP (MP ) ⊆ MP par la proposition 5.15. D’autre part,
d’après la proposition 4.13 on a aussi TP2 (MP ) ⊆ TP (MP ) et donc TP (MP ) est un modèle
de P par la proposition 5.15. Par minimalité de MP on a donc MP ⊆ TP (MP ) et donc
TP (MP ) = MP . 2
ω
Le théorème du point fixe nous assure que TP (∅) est le plus petit point fixe de l’opé-
rateur continu TP . Le modèle minimal est donc calculable, du moins ses approximations
finies le sont-elles.

42
Il est possible de généraliser la définition de TP aux clauses arbitraires :

TP (I) = {A ∈ B | A ∨ C est une instance close d’une clause de P et I |= ¬C}

Mais dans ce cas TP n’est plus nécessairement continu ni même croissant :

Exemple 4.17 Supposons P réduit à la seule clause A ∨ B. TP (∅) = {A, B} et


TP ({A, B}) = ∅, TP ({A}) = {A} et TP ({B}) = {B}. Par exemple pour la partie dirigée
S S
S = {∅, {A}}, TP ( I∈S I) = TP ({A}) = {A} =6 {A, B} = TP (∅) = I∈S TP (I).

4.4 Lectures
[9, 10, 1, 2, 4]

4.5 Exercices
4.5.1
1. Montrer que résolution et factorisation binaires sont correctes.
2. Montrer que résolution et factorisation binaires sont complètes.
3. La stratégie unitaire consiste à ne considérer que des résolutions dont une des pré-
misses est une clause réduite à un littéral.
Montrer que la stratégie unitaire est en général incomplète. (Autrement dit, donner un
ensemble de clauses insatifiable tel que factorisation + résolution unitaire ne permet
pas de dériver la clause vide).
Plus généralement, montrer qu’il existe une réfutation d’un ensemble S de clauses par
la résolution unitaire si et seulement si il existe une réfutation de S par la stratégie
"input".
4. Montrer que la stratégie unitaire est complète pour les clauses de Horn. Est-ce une
stratégie intéressante ?
5. Étant donné un ensemble P de clause de Horn, montrer que l’opérateur TP est crois-
sant.
6. Donner un ensemble de clauses tel que TPω n’est pas un point fixe alors que TP2×ω est
un point fixe.

43
Chapitre 5

Stratégies de Résolution et Clauses


de Horn

5.1 Résolution binaire


La règle de résolution que nous avons donné a le désavantage d’unifier des termes en
nombre arbitraire plutôt que des couples de termes. Nous allons donc donner une nouvelle
version de la résolution à l’aide de règles d’inférences dites binaires, appellées RF B, pou-
vant coder la résolution générale.
A ∨ C ¬B ∨ D
Résolution Binaire :
Cσ ∨ Dσ
où σ est l’unificateur principal des atomes A et B.
A∨B∨C
Factorisation Binaire :
Bσ ∨ Cσ
où σ est l’unificateur principal des littéraux A et B.

Theorem 5.1 Résolution et factorisation binaires sont correctes et complètes, cad un en-
semble de clauses S est insatisfiable ssi la clause vide appartient à RF B ∗ (S).

Preuve
On montre que toute résolution se code comme une séquence de résolutions et factorisations
binaires. 2

On peut bien sûr se demander quel est l’impact de ce codage sur la complexité des opé-
rations d’unification qui doivent être effectuées, d’un seul coup pour l’unnification générale,
et sous forme d’unifications binaires succesives dans le codage. Cette question intéressante
est laissée à la sagacité du lecteur.

5.2 Résolution négative


Une preuve par résolution consiste à explorer l’ensemble Res∗ (S) organisé générale-
ment sous forme d’un arbre. Cet ensemble étant en général infini, et la clause vide pouvant

44
se trouver loin de la racine, il est essentiel d’en réduire la taille d’une part, et d’adopter des
stratégies d’exploration efficaces d’autre part. Pour cela, une méthode consiste à contraindre
l’application de la règles de résolution. Parmi les nombreuses restrictions de la résolution,
l’une d’elle joue un rôle essentiel, la résolution négative, pour laquelle au moins l’une des
deux clauses de départ ne contient que des littéraux négatifs.
P ∨C N ∨D
Résolution négative :
Cσ ∨ Dσ
où σ est l’unificateur principal du problème P = N , et la clause N ∨ D ne contient que des
littéraux négatifs. On notera par Res − neg∗ (S) l’ensemble des clauses qui peuvent être
inférées à partir d’un ensemble S de clauses par la règle de résolution négative.

Theorem 5.2 La résolution négative est correcte et complète : un ensemble S de clauses


est insatisfiable ssi la clause vide appartient à Res − neg∗ (S).

Preuve
Le lemme de relèvement s’appliquant sans changement, il suffit de prouver la complétude
dans le cas clos. Pour cela, on reprend la preuve précédente en précisant le noeud J. Pour
cela, on considère un chemin particulier dans l’arbre sémantique clos de Res∗ (S), appellé
chemin gauche, qui consiste à descendre toujours à gauche dans l’arbre, sauf si le successeur
gauche est un noeud d’échec, auquel cas on descend à droite. On appelle J1 , . . . , Jn les
noeuds du chemin où la descente s’est poursuivie à droite, Aik l’atome interprété dans les
interprétations partielles successeurs de Jk , et Ck la clause réfutée par l’interprétation fils
gauche de Jk . Comme précédemment, le noeud d’échec R fils droit de Jn est étiquetté
par une clause de la forme Ain ∨ C, et le noeud d’échec L fils gauche de Jn est étiquetté
par une clause de la forme ¬Ain ∨ D. On va maintenant montrer que C peut être choisie
purement négative, et on pourra alors faire une résolution négative à partir de ces deux
clauses, entrainant une contradiction.
Pour cela, on remarque que les seuls atomes positifs pouvant apparaître dans C sont
ceux qui sont interprétés en F dans l’interprétation L, cad Ai1 , . . . , Ain−1 . On va donc faire
une récurrence sur le nombre de noeuds d’échecs réfutés par des clauses non purement
négatives, de manière à remplacer les clauses en question, du haut vers le bas, par des
clauses purement négatives obtenues par inférence. On utilise pour cela au plus n2 /2
inférences négatives. On peut ensuite éliminer les atomes positifs de ¬Ai−n ∨ C par au
plus n résolutions négatives avec les clauses obtenues. 2

On peut bien sûr se restreindre à une règle de résolution négative binaire, pourvu que
l’on conserve la règle de factorisation binaire.
La stratégie dite input résout toujours une clause engendrée par résolution (en principe
la dernière) avec une clause de l’ensemble S de départ. Cette stratégie a la propriété de
ne pas faire exploser l’espace de recherche, elle a donc une importance fondamentale. Elle
est malheureusement incomplète, comme on pourra s’en convaincre avec l’exemple S =
{A ∨ B, A ∨ ¬B, ¬A ∨ B, ¬A ∨ ¬B}.

5.3 Clauses de Horn et stratégie input


Définition 5.3 Une clause de Horn est une clause comportant au plus un littéral positif.

45
Une remarque essentielle est que le résultat d’une inférence négative mettant en jeu des
clauses de Horn est une clause de Horn.
L’étape suivante consiste à préciser ce que sont un programme et une requête en logique
de Horn.

Définition 5.4 Un programme en logique de Horn est un ensemble fini de clauses compor-
tant chacune exactement un littéral positif.
Une requête est un ensemble fini (disjonction) de littéraux négatifs.

On en déduit facilement :

Theorem 5.5 La résolution négative input est complète pour les programmes en logique
de Horn.

Preuve
Il suffit de remarquer que la règle de factorisation est inutile dans le cas des clauses de
Horn, et que seules les clauses du programme comportent un littéral positif. 2

En pratique, étant donnée une requête R1 , . . . , Rp (donc chaque Ri est un littéral néga-
tif), la stratégie négative consiste à unifier l’un des Ri avec le littéral positif H d’une clause
H ∨ A1 ∨ . . . ∨ An du programme. Si σ est l’unificateur principal de H et Ri , on infère
A1 σ . . . , An σ qui peuvent être considérés comme de nouvelles requêtes. Comme, par la
stratégie, la clause but qui vient d’être engendrée est toujours une des prémisses de la nou-
velle inférence, le but Ri peut être effacé. Ceci revient ainsi à réécrire le but (ou plutôt un
des littéraux du but) en utilisant une des clauses du programme, vu comme une réécriture
de la tête (littéral positif) dans le corps (littéraux négatifs).
On appelle fonction de sélection un ordre total sur les littéraux négatifs qui spécifie le
but à réécrire en priorité : on résoud toujours sur le but minimal. Cette stratégie est complète
(i.e. à chaque étape il suffit de considérer un seul but). Par contre, lors de la recherche d’une
preuve, toutes les clauses permettant de réécrire ce but devront être considérées.
La règle de résolution avec une fonction de sélection et pour les programmes logiques
est appelée SLD-résolution. Des considérations ci-dessus il résulte que :

Theorem 5.6 La SLD-résolution est complète.

Enfin, en programmation logique, on s’intéresse aussi au résultat d’une requête et, pour
des raisons d’efficacité, on ne souhaite pas appliquer les substitutions. Pour ces raisons, on
considère des clauses contraintes. Une clause contrainte est une paire formée d’une clause
C et d’un problème d’unification φ et notée C | φ. Une telle clause contrainte représente
en fait l’ensemble des clauses {Cσ | σ |=T (F ) φ}. (σ |=T (F ) φ si σ est une substitution
close des variables libres de φ et φσ est valide dans la théorie des termes finis). En général,
on remplace aussi |=T (F ) par |=RT (F ) afin d’éviter d’avoir à faire le test d’occurrence dans
l’unification. Dans ce contexte, la règle de résolution peut s’écrire :

P (t) ∨ C ¬B(u) ∨ D | φ
C ∨ D | φ ∧ B(u) = P (t)

46
et il faut alors lui adjoindre de nouveles règles qui ont trait au traitement des contraintes :
R | φ → R | φ′
R | ⊥ → nil
R | φ → succs(φ) φ est en forme résolue
Les variables de t sont supposées ne pas apparaître libres dans u. De plus les variables
n’apparaissant pas dans le but initial et n’apparaissant plus non plus dans le but sont im-
plicitement quantifiées existentiellement (ce qui reflète le fait qu’on ne s’intéresse qu’aux
valeurs des variables du but initial).
La réponse à une requête ¬B est alors la contrainte ψ telle que l’on ait inféré la clause
2 | ψ. La contrainte ψ est donnée en forme résolue. Ses solutions sont des substitutions σ
telles que P |= Bσ.
Le fait que les contraintes soient ici des équations ne joue de rôle que pour la mise
en forme résolue et on peut donc employer d’autres systèmes de contraintes plus expres-
sifs (c’est souvent le cas en pratique). De même les clauses du programme P peuvent être
contraintes.
Exemple 5.7 Soit le programme logique
I(x, [], x.[]).
I(x, x.l, x.l).
I(x, y.l, y.l′ ) ← I(x, l, l′ ) | x 6= y
Qui a pour but d’insérer un élément dans une liste sans doublons.
Soit la requête I(0, s(0).(x.[]), y). On obtient deux dérivations possibles conduisant
à 2 | ψ avec une contrainte ψ satisfiable : la première est (par souci de simplicité,
nous n’écrivons la contrainte complète que dans cette séquence, puis nous écrivons une
contrainte simplifiée).
I(0, s(0).(x.[]), y) → I(x1 , l, l′ ) | 0 = x1 ∧ y1 .l = s(0).(x.[]) ∧ y = y1 .l′ ∧ x1 6= y1
→ 2 | ∃x2 , l′ , l′′ , ∧y = s(0).l′ ∧ x2 = 0 ∧ x2 .l′′ = x.[] ∧ x2 .l′′ = l′
; 2 | x = 0 ∧ y = s(0).(0.[])
La deuxième est :
I(0, s(0).(x.[]), y) → I(x1 , l, l′ ) | x1 = 0 ∧ l = x.[] ∧ y = s(0).l′
→ I(x2 , l1 , l1′ ) | ∃y2 , l, l′ , l = x.[] ∧ y = s(0).l′ ∧ x2 = 0
∧l = y2 .l1 ∧ l′ = y2 .l1′ ∧ x2 6= y2
→ 2 | ∃x2 , l1 , l1′ , y2 , l, l′ , l1 = [] ∧ l1′ = x2 .[]
∧l = x.[] ∧ y = s(0).l′ ∧ x2 = 0 ∧ l = y2 .l1
∧l′ = y2 .l1′ ∧ x2 6= y2
; 2 | ∧y = s(0).(0.(x.[]))) ∧ x 6= 0
Nous reformulons ci-dessous les résultats de correction et de complétude de la SLD-
résolution en termes de requêtes et de programmes :
Proposition 5.8 Si la réponse ψ à une requête R pour un programme logique P a pour
mgu σ, alors, pour toute substitution close θ, Rσθ, P est insatisfiable.
Proposition 5.9 Si R est une requête pour un programme logique P et si IRθ, P est insatis-
fiable, alors il existe une réponse ψ à R telle que ψ a pour mgu σ et il existe une substitution
τ telle que στ = θ.

47
5.4 Plus petit modèle de Herbrand et sémantique des pro-
grammes logiques
Si P est un programme logique. On note B la base de Herbrand et 2B l’ensemble des
parties de B, que l’on confond aussi avec l’ensemble des interprétations de Herbrand (les
éléments de I ∈ 2B correspondent aux éléments de la base qui s’interprètent en vrai, les
autres s’inteprétant à faux). On note MP le "plus petit modèle de Herbrand de P ", c’est-à-
\ de tous les modèles de Herbarnd de P :
dire l’intersection
MP = I.
I∈2B ,I|=P

Exemple 5.10 Soit P le programme :

Q(s(x)) ∨ ¬Q(x)
P (0) ∨ ¬Q(s(x))

Alors MP = ∅ car l’interprétation vide (tout est faux) satisfait bien P .

Proposition 5.11 Pour tout programme logique P , MP |= P .

Preuve

Il suffit de remarquer que l’intersection de modèles de Herbrand de P est aussi un


modèle de Herbrand de P . On fait le raisonnement sur des clauses closes pour simplifier.
Soit A ∨ ¬B1 ∨ . . . ∨ ¬Bn une clause C. Il y a deux cas.
A ∈ MP . Alors MP |= C.
A 6∈ MP . Alors, par définition de MP , il existe un modèle de Herbrand I de P tel que
A 6∈ I. Mais comme I |= C, il existe j tel que Bj 6∈ I, et donc Bj 6∈ MP par définition de
MP , d’où MP |= C. 2
Ainsi MP consititue une interprétation "standard" du programme logique P . De façon
classique, on peut aussi construire MP à l’aide de l’opérateur de conséquence immédiate :
Si P est un programme logique, on note TP l’opérateur de conséquence immédiate
défini sur 2B par

TP (I) = {A ∈ B | A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close d’une clause de P,


etA1 , . . . , An ∈ I}

Exemple 5.12 Reprenons l’exemple 5.10. Alors TP (∅) = ∅, TP (B) = {P (0)} ∪


{Q(s(t)) t ∈ T (F)}, TP (TP (B)) = {P (0)} ∪ {Q(s(s(t))) t ∈ T (F)}, etc.

2B est muni d’une structure de treillis complet pour l’ordre ⊆ (i.e. l’ordre de prolonge-
ment des interprétations).

Proposition 5.13 TP est continu sur les interprétations de Herbrand.

Preuve
Tout d’abord, TP est une fonction croissante, la preuve en est laissée au lecteur.

48
Soit donc une famille croissante de parties de B, {Ik }k∈IN , dont le sup, le treillis des
S
parties étant complet pour l’ordre, est noté S = k Ik . TP étant croissante, {TP (Ik )}k∈IN ,
S
est une autre famille croissante dont le sup est noté k TP (Ik ).
S S
L’équation TP ( k Ik ) = k TP (Ik ) exprime la continuité de l’opérateur TP .
Pour cela,
[
TP ( I) = {A ∈ B | A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
I∈S S
d’une clause de P et ∀iAi ∈ I∈S I}
= {A ∈ B | ∀i∃I ∈ S, A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
d’une clause de P et Ai ∈ I}
= {A ∈ B | ∃I ∈ S, A ∨ ¬A1 ∨ . . . ∨ ¬An est une instance close
d’une clause de P et ∀iAi ∈ I}

Notons l’utilisation du fait que {Ik }k est une chaine croissante pour faire commuter les
quantificateurs. 2
Il est possible de généraliser la définition de TP aux clauses arbitraires :

TP (I) = {A ∈ B | A ∨ C est une instance close d’une clause de P et I |= ¬C}

Mais dans ce cas TP n’est plus nécessairement continu.

Exemple 5.14 Supposons P réduit à la seule clause A ∨ B. TP (∅) = {A, B} et


TP ({A, B}) = ∅, TP ({A}) = {A} et TP ({B}) = {B}. Par exemple pour la partie dirigée
S S
S = {∅, {A}}, TP ( I∈S I) = TP ({A}) = {A} =6 {A, B} = TP (∅) = I∈S TP (I).

Proposition 5.15 Soit I une interprétation de Herbrand et P un programme logique. I est


un modèle de P si et seulement si TP (I) ⊆ I.

Preuve
I |= P ssi pour toute instance close A∨¬A1 ∨. . .∨¬An d’une clause de P , I |= A1 , . . . , An
implique I |= A. 2

Theorem 5.16 Si P est un programme logique, MP = TPω (∅) est le plus petit point fixe de
TP .

Preuve
Le théorème du point fixe nous assure que TPω (∅) est le plus petit point fixe de l’opérateur
continu TP . Il nous reste à montrer que MP est égal au plus petit point fixe de TP .
Tout point fixe de TP est un modèle de P par la proposition 5.15, et il nous sufit donc
de montrer que MP est un point fixe de TP de mani‘ere à conclure par minimalité de MP .
MP étant un modèle de P , TP (MP ) ⊆ MP par la proposition 5.15. D’autre part,
d’après la proposition 5.13 on a aussi TP2 (MP ) ⊆ TP (MP ) et donc TP (MP ) est un modèle
de P par la proposition 5.15. Par minimalité de MP on a donc MP ⊆ TP (MP ) et donc
TP (MP ) = MP . 2
α
De façon générale, lorsque TP est monotone, TP pour un ordinal α est défini par récur-
rence transfinie par : TP0 = ∅, si TPα+1 = TP (TPα ) et, si α est un ordinal limite, TPα est la
borne supérieure des TPβ pour β < α. C’est la continuité qui implique que α = ω.

49
5.5 Exercices
5.5.1
1. La stratégie unitaire consiste à ne considérer que des résolutions dont une des pré-
misses est une clause réduite à un littéral.
Montrer que la stratégie unitaire est en général incomplète. (Autrement dit, donner un
ensemble de clauses insatifiable tel que factorisation + résolution unitaire ne permet
pas de dériver la clause vide).
Plus généralement, montrer qu’il existe une réfutation d’un ensemble S de clauses par
la résolution unitaire si et seulement si il existe une réfutation de S par la stratégie
"input".
La stratégie unitaire est donc complète pour les clauses de Horn. Est-ce une stratégie
intéressante ?
2. Donner un ensemble de clauses tel que TPω n’est pas un point fixe alors que TP2×ω est
un point fixe.

50
Bibliographie

[1] K. R. Apt and M. H. van Emden. Contributions to the theory of logic programming.
Journal of the ACM, 29(3), July 1982.
[2] Alain Colmerauer. Prolog II. Manuel de référence et modèle théorique. Research
report, GIA Luminy, Marseille, March 1982.
[3] Alain Colmerauer. Equations and inequations on finite and infinite trees. In FGCS’84
Proceedings, pages 85–99, November 1984.
[4] Alain Colmerauer. Opening the Prolog III universe. Byte Magazine, August 1987.
[5] N. Dershowitz and J.-P. Jouannaud. Rewrite systems. In J. van Leeuwen, editor, Hand-
book of Theoretical Computer Science, volume B, pages 243–309. North-Holland,
1990.
[6] Gérard Huet. Résolution d’équations dans les langages d’ordre 1, 2, . . . ω. Thèse
d’Etat, Univ. Paris 7, 1976.
[7] Jean-Pierre Jouannaud and Claude Kirchner. Solving equations in abstract algebras :
A rule-based survey of unification. In Jean-Louis Lassez and Gordon Plotkin, editors,
Computational Logic : Essays in Honor of Alan Robinson, pages 257–321. MIT-Press,
1991.
[8] Robert Kowalski. Semantic trees in automatic theorem-proving. Machine Intelligence,
4 :86–101, 1969.
[9] Robert Kowalski. Search strategies for theorem-proving. Machine Intelligence,
5 :181–201, 1970.
[10] Robert A. Kowalski and M. H. van Emden. The semantics of predicate logic as a
programming language. J. of the Association for Computing Machinery, 23 :733–742,
October 1976.
[11] Alberto Martelli and Ugo Montanari. An efficient unification algorithm. ACM Tran-
sactions on Programming Languages and Systems, 4(2) :258–282, April 1982.
[12] J. A. Robinson. A machine-oriented logic based on the resolution principle. Journal
of the ACM, 12(1) :23–41, 1965.
[13] J.A. Robinson. The generalized resolution principle. Machine Intelligence, 3, 1968.

51