Résolution avec variables
Transcription
Résolution avec variables
Chapitre 4 Résolution avec variables I Étapes de la démonstration automatique Le problème général de la démonstration automatique peut se formuler par la question : “est-il vrai qu’une formule B est conséquence logique d’un ensemble de formules Γ ?” ou encore de manière équivalente, “est-il vrai que l’ensemble Γ ∪ {¬B} n’a pas de modèle ?”. Notons que Γ peut être vide. On est donc ramené au problème de savoir si un certain ensemble de formules Γ0 = Γ∪{¬B} possède un modèle ou non. Pour le résoudre, dans un premier temps, on prépare les formules en effectuant successivement les traitements suivants : 1. mise sous forme prénexe des formules de Γ0 , ce qui donne Γ1 ; 2. mise sous forme de Skolem des formules de Γ1 , ce qui donne Γ2 ; 3. suppression des quantificateurs universels des formules de Γ2 , d’où Γ3 ; 4. mise sous forme clausale des formules de Γ3 , ce qui donne Γ4 . Puis via la résolution et la factorisation, on tente de générer la clause vide. Si on y arrive, cela signifie que Γ0 est contradictoire et donc que B est effectivement conséquence logique de Γ. Si Γ0 est contradictoire, alors il y a moyen d’y arriver. Exemple I.1 Soit le problème de savoir si la formule B = ∃x ∃y Q(x, y) est conséquence de l’ensemble des formules Γ = {∀x (P (x)=⇒∃y (R(y) ∧ Q(x, y))), ∃x P (x)}. L’ensemble Γ0 est alors : Γ0 = {∀x (P (x)=⇒∃y (R(y) ∧ Q(x, y))), ∃x P (x), ¬∃x ∃y Q(x, y)}. On obtient successivement les ensembles de formules : Γ1 = {∀x ∃y (¬P (x) ∨ (R(y) ∧ Q(x, y))), ∃x P (x), ∀x ∀y ¬Q(x, y)}, Γ2 = {∀x (¬P (x) ∨ (R(f (x)) ∧ Q(x, f (x)))), P (a), ∀x ∀y ¬Q(x, y)}, Γ3 = {¬P (x) ∨ (R(f (x)) ∧ Q(x, f (x))), P (a), ¬Q(x, y)}, Γ4 = {¬P (x) ∨ Q(x, f (x)), ¬P (x) ∨ R(f (x)), P (a), ¬Q(x, y)} Si Γ4 n’a pas de modèle, alors la formule B est conséquence logique de l’ensemble de formules Γ ; autrement, la formule B n’est pas conséquence logique de l’ensemble de formules Γ. 5 II II.A Préparation des formules Forme prénexe La mise sous forme prénexe et la mise sous forme de Skolem permettent de se débarrasser des quantificateurs d’un ensemble fini de formules du calcul des prédicats du premier ordre. Soit A une formule du calcul des prédicats du premier ordre. On dit que A est sous forme prénexe si A est de la forme : A = Q1 x1 . . . Qn xn B où chaque Qi est soit ∀, soit ∃ et où B ne contient aucun quantificateur. Proposition II.1 Pour toute formule A du calcul des prédicats du premier ordre, il existe une formule A! sous forme prénexe qui est équivalente à A. On sait que si dans une formule F comportant une sous-formule B, on remplace B par une formule (sémantiquement) équivalente B ! , on obtient une formule F ! (sémantiquement) équivalente à F . Voici une méthode permettant, à partir d’une formule quelconque, d’obtenir une formule équivalente sous forme prénexe. Le fait que cette méthode se termine et donne effectivement une formule sous forme prénexe équivalente à celle de départ résulte de considérations élémentaires. (a) Se débarrasser de =⇒ et ⇐⇒ en utilisant les équivalences suivantes de gauche à droite : a1 (A=⇒B) ≡ (¬A ∨ B) a2 (A ⇐⇒ B) ≡ ((A ∧ B) ∨ (¬A ∧ ¬B)) (b) Changer le nom de certaines variables liées de manière à n’avoir plus de variable quantifiée deux fois, en utilisant les équivalences suivantes : b1 ∀x A(x) ≡ ∀y A(y) b2 ∃x A(x) ≡ ∃y A(y). (c) Faire remonter tous les quantificateurs en tête en utilisant les équivalences suivantes de gauche à droite (x n’étant pas variable libre de C) : c1 ¬∃x A(x) ≡ ∀x ¬A(x) c2 ¬∀x A(x) ≡ ∃x ¬A(x) c3 (C ∨ ∀x A(x)) ≡ ∀x (C ∨ A(x)) c4 (C ∨ ∃x A(x)) ≡ ∃x (C ∨ A(x)) c5 (C ∧ ∀x A(x)) ≡ ∀x (C ∧ A(x)) c6 (C ∧ ∃x A(x)) ≡ ∃x (C ∧ A(x)) Exemple II.1 (∀x A(x)=⇒(∃y B(y) ∨ ∃y C(y))) ≡ (¬∀x A(x) ∨ (∃y B(y) ∨ ∃y C(y))) ≡ (¬∀x A(x) ∨ (∃y B(y) ∨ ∃z C(z))) ≡ (∃x ¬A(x) ∨ (∃y B(y) ∨ ∃z C(z))) 6 (a1) (b2) (c2) ≡ ∃x (¬A(x) ∨ (∃y B(y) ∨ ∃z C(z))) ≡ ∃x (¬A(x) ∨ ∃y (B(y) ∨ ∃z C(z))) ≡ ∃x ∃y (¬A(x) ∨ (B(y) ∨ ∃z C(z))) ≡ ∃x ∃y (¬A(x) ∨ ∃z (B(y) ∨ C(z))) ≡ ∃x ∃y ∃z (¬A(x) ∨ (B(y) ∨ C(z))) (c4 et commutativité de ∨) (c4 et commutativité de ∨) (c4) (c4) (c4) Remarque II.1 Pour limiter le nombre de quantificateurs de la formule finale, il peut être intéressant de ne pas mener complètement l’étape (b) et, à l’étape (c), d’utiliser les deux équivalences supplémentaires suivantes : c7 (∀x A(x) ∧ ∀x B(x)) ≡ ∀x (A(x) ∧ B(x)) c8 (∃x A(x) ∨ ∃x B(x)) ≡ ∃x (A(x) ∨ B(x)) Exemple II.2 En reprenant l’exemple précédent : (∀x A(x)=⇒(∃y B(y) ∨ ∃y C(y))) ≡ (¬∀x A(x) ∨ (∃y B(y) ∨ ∃y C(y))) ≡ (¬∀x A(x) ∨ ∃y (B(y) ∨ C(y))) ≡ (∃x ¬A(x) ∨ ∃y (B(y) ∨ C(y))) ≡ (∃x ¬A(x) ∨ ∃x (B(x) ∨ C(x))) ≡ ∃x (¬A(x) ∨ (B(x) ∨ C(x))) (a1) (c8) (c2) (b2) (c8) Exercice II.1 Mettre sous forme prénexe les formules suivantes : A : ∀x ∃y ∀z (P (x, y, z)=⇒∀y ∃z Q(y, z)) B : ∀x (∃z (P (z, x)=⇒∃y P (y, x) ∧ ¬(∃t (P (t, x) ∧ P (t, z))))) C : ∀x ∀y (< (x, y)=⇒¬ < (y, x)) ∨ ∃z ∀x (< (x, y)=⇒∀x < (z, x)) D : ∀y ∃x P (x, y) ⇐⇒ ∀z ∀x P (z, x) II.B Forme de Skolem Soit Q1 x1 . . . Qn xn B une formule A mise sous forme prénexe. On appelle forme de Skolem de A, et on note AS , la formule obtenue en enlevant tous les ∃xi , en remplaçant chacune des variables xi quantifiées avec un ∃ par fi (xj1 , . . . xjl ) où xj1 , . . . xjl sont les variables quantifiées par des ∀ placés avant le ∃xi . Lorsqu’il n’y a aucun quantificateur ∀ avant le ∃xi , le symbole que l’on introduit est une constante (une constante est un symbole fonctionnel d’arité nulle). On suppose, bien sûr, que les symboles fonctionnels fi introduits sont différents de tous ceux utilisés par ailleurs. Exemple II.3 La forme de Skolem de ∃x1 ∀x2 ∃x3 ∀x4 ∃x5 P (x1 , x2 , x3 , x4 , x5 ) est ∀x2 ∀x4 P (a, x2 , f1 (x2 ), x4 , f2 (x2 , x4 )). Théorème II.1 (Théorème de Skolem). Soit {A1 , . . . , An } un ensemble fini de formules du calcul des prédicats du premier ordre. Soit {AS1 , . . . , ASn } l’ensemble des formes de Skolem de ces formules. Alors {A1 , . . . , An } admet un modèle de domaine D ssi {AS1 , . . . , ASn } admet un modèle de domaine D. Exercice II.2 Mettre sous forme de Skolem les formules suivantes : 7 A : ∀x ∃y ∀z (P (x, y, z)=⇒∀y ∃z Q(y, z)) B : ∀x (∃z (P (z, x)=⇒∃y P (y, x) ∧ ¬(∃t (P (t, x) ∧ P (t, z))))) C : ∀x ∀y (< (x, y)=⇒¬ < (y, x)) ∨ ∃z ∀x (< (x, y)=⇒∀x < (z, x)) D : ∀y ∃x P (x, y) ⇐⇒ ∀z ∀x P (z, x) II.C Forme clausale – Un littéral est une formule atomique (auquel cas il est dit positif ) ou la négation d’une formule atomique (auquel cas il est dit négatif ). – Une clause est une disjonction finie de littéraux. La clause vide ! (sans littéraux) est insatisfiable. III Unification L’unification est la mise en coı̈ncidence des atomes par un bon choix des termes substitués aux variables. Il s’agit là d’une idée qui est assez ancienne en logique mathématique. Son utilisation comme élément fondamental d’un algorithme de démonstration automatique est due à Robinson (1965). III.A Substitutions Les formules considérées dans ce sous-paragraphe ne sont pas quantifiées. – On appelle composant de substitution toute expression de la forme (x | t) où x est une variable et t un terme quelconque du calcul des prédicats. Si A est une formule du calcul des prédicats, on note (x | t) A la formule obtenue en remplaçant dans A toutes les occurrences de x par t. Remarque III.1 Les formules envisagées dans cette section n’étant pas quantifiées, le renommage des variables n’est pas nécessaire. Une substitution est une application σ de l’ensemble des fbf du calcul des prédicats du premier ordre dans lui-même, de la forme : σ : A )→ c1 . . . ck A où c1 , . . . , ck sont des composants de substitution. La suite finie c1 , . . . , ck est appelée décomposition de la substitution σ, ce que l’on note σ = [c1 . . . ck ]. La substitution identique sera notée [ ] ou ε. Exemple III.1 Soit σ = [(x | f (a)) (y | f (x))] une substitution. Alors σ P (x, y) = (x | f (a)) P (x, f (x)) = P (f (a), f (f (a))) Remarque III.2 La décomposition en composants de substitution n’est en général ni commutative (se vérifie à partir de l’exemple ci-dessus), ni unique ([(x | y) (z | y)] = [(z | y) (x | y)]). 8 – Soit Γ = {A1 , . . . , An } un ensemble fini de formules atomiques du calcul des prédicats du premier ordre. On appelle unificateur de Γ toute substitution σ telle que σ A1 = · · · = σ An . Exemple III.2 Soit Γ = {A1 , A2 , A3 } avec A1 = P (x, z), A2 = P (f (y), g(a)) et A3 = P (f (u), z). Alors σ = [(x | f (u)) (y | u) (z | g(a))] est un unificateur de Γ. Remarque III.3 1) Si σ est un unificateur d’un ensemble fini de formules Γ, alors pour toute substitution α : α σ est un unificateur de Γ. 2) Il est possible qu’un ensemble de formules n’admette aucun unificateur (Γ = {P (x, f (x)), P (f (y), y)}). Soit σ un unificateur d’un ensemble de formules Γ. On dit que σ est un plus grand unificateur (ou un unificateur le plus général ) de Γ si pour tout unificateur α de Γ il existe une substitution β telle que σ = β α. Exemple III.3 En reprenant l’exemple précédent, σ est un plus grand unificateur de Γ. La substitution ρ = [(x | f (v)) (y | v) (z | g(a)) (u | v)] en est un autre et on a σ = (v | u) ρ et ρ = (u | v) σ. Algorithme d’unification de deux atomes A et B III.B 1. θ := ε ; 2. tant que θ A += θ B faire (a) déterminer le symbole le plus à gauche de θ A qui soit différent du symbole de même rang de θ B ; (b) déterminer t1 et t2 les sous-termes respectifs de θ A et θ B qui commencent à ce symbole ; (c) si aucun n’est une variable ou l’un est une variable contenue dans l’autre alors échec : A et B ne sont pas unifiables ; fin. (d) sinon faire i. déterminer x une variable parmi t1 et t2 ; ii. soit t celui de t1 et t2 qui n’est pas x ; iii. θ = (x | t) θ ; 3. θ est un plus grand unificateur de A et B ; 4. fin. Exemple III.4 θA θB P (x, f (x), a) P (u, w, w) θ ' ↑ ↑ P (x, f (x), a) P (u, w, w) [(x | u)] P (u, f (u), a) P (u, w, w) [(w | f (u)) (x | u)] ↑ ↑ P (u, f (u), a) ↑ ↑ ↑ P (u, f (u), f (u)) échec car a et f (u) non variables ↑ 9 Exemple III.5 θA P (x, f (g(x)), a) θB P (b, y, z) θ ' P (x, f (g(x)), a) P (b, y, z) [(x | b)] P (b, f (g(b)), a) P (b, y, z) [(y | f (g(b))) (x | b)] ↑ ↑ ↑ ↑ ↑ ↑ P (b, f (g(b)), a) ↑ P (b, f (g(b)), z) ↑ [(z | a) (y | f (g(b))) (x | b)] Succès, A et B sont unifiables et un plus grand unificateur est : [(z | a) (y | f (g(b))) (x | b)]. Exercice III.1 Peut-on unifier les deux formules atomiques suivantes ? P (f (x, g(z)), x, f (y, g(b))) et P (u, g(f (a, b)), u) IV Résolution La méthode de résolution étendue au calcul des prédicats est plus complexe que sa version en calcul propositionnel puisqu’elle doit prendre en compte les variables. Pour pouvoir appliquer la méthode de résolution, les formules sont mises sous forme clausale. La résolution consiste, comme dans le cas du calcul propositionnel, à apparier des clauses satisfaisant à certaines conditions pour produire de nouvelles clauses jusqu’à obtenir la clause vide. La résolution avec variables RAV est définie par les deux règles d’inférence res et fac : 1. f, g , h ssi res f est de la forme l ∨ f1 g est de la forme ¬l! ∨ g1 h, la résolvante, est de la forme σ(f1 ∨ g1 ) où σ est un plus grand unificateur des atomes l et l! , f et g étant deux clauses n’ayant aucune variable commune (toujours possible sans perte de généralité par renommage des variables). 2. f , h ssi fac f est de la forme l ∨ l! ∨ f1 h, le facteur, est de la forme σl ∨ σf1 où σ est un plus grand unificateur de l et l! . Exemple IV.1 On a P (y, c) ∨ R(y), ¬P (c, c) ∨ Q(x) , R(c) ∨ Q(x) res avec l = P (y, c), l! = P (c, c) et σ = [(y|c)]. 10 Exemple IV.2 On a P (x, g(y)) ∨ P (f (c), z) ∨ R(x, y, z) , P (f (c), g(y)) ∨ R(f (c), y, g(y)) fac avec σ = [(x|f (c))(z|g(y))]. Théorème IV.1 Un ensemble Γ de clauses du calcul des prédicats du premier ordre est insatisfiable ssi Γ , !. RAV Exemple IV.3 Soit à démontrer que l’ensemble de clauses Γ : {C1 : P (a, y) ∨ Q(x, y), C2 : ¬Q(z, t) ∨ R(a, z), C3 : ¬P (a, b), C4 : ¬R(u, v)} est contradictoire. Le tableau ci-dessous utilise trois colonnes donnant respectivement les clauses parentes, la résolvante ou le facteur et la substitution ayant permis l’unification d’atomes. À chaque factorisation ou résolution, on crée une nouvelle clause à laquelle on assigne un nouvel identificateur (par exemple C5 ). Toutes les variables de cette nouvelle clause sont renommées pour qu’elle n’ait aucune variable commune avec les autres clauses. Parents C1 , C3 C2 , C4 C5 , C6 Résolvante ou facteur C5 : Q(w, b) C6 : ¬Q(v ! , t! ) C7 : ! Substitution [(y | b)] [(z | v) (u | a)] [(t! | b) (v ! | w)] RAV génère la clause vide en C7 , donc Γ est contradictoire. Exemple IV.4 Considérons l’ensemble de clauses Γ : {C1 : P (x) ∨ P (y), C2 : ¬P (a) ∨ ¬P (b)}. On peut justifier informellement de l’insatisfiabilité de Γ comme suit. C1 signifie en fait que P est vraie pour tous les éléments du domaine. C2 indique que P est fausse pour au moins un élément. Ces deux informations sont contradictoires. Cependant, sans factorisation, on ne peut pas déduire la clause vide car la résolvante de deux clauses comptant deux littéraux chacune comprend elle aussi deux littéraux. Donc uniquement avec la règle d’inférence res, la clause vide est hors d’atteinte. Avec la factorisation, on a : Parents C1 C2 , C3 C3 , C4 Résolvante ou facteur C3 : P (z) C4 : ¬P (b) C5 : ! Substitution [(y | x)] [(z | a)] [(z | b)] RAV génère la clause vide en C5 , donc Γ est contradictoire. Exercice IV.1 Démontrer la déduction suivante à l’aide de la méthode de résolution. Tout humain est un primate. Les dauphins ne sont pas des primates. Il y a des dauphins qui sont intelligents. Donc on peut ne pas être humain et être intelligent. 11