INFO-F-302, Cours d’Informatique Fondamentale Logique pour l’Informatique Emmanuel Filiot Département d’Informatique Faculté des Sciences Université Libre de Bruxelles Année académique 2011-2012 Basé sur le cours Logique Informatique du Pr. J.-F. Raskin 1- INFO-F-302 - / Règle de la résolution Etant donnée une clause C , les formules atomiques de C apparaissant sans négation sont dites positives et celles apparaissant précédées d’une négation sont dites négatives. La clause C peut être notée (N, P) où N, respectivement P, est l’ensemble des formules atomiques négatives, respectivement positives de C . La règle de résolution permet de déduire une nouvelle clause à partir de deux clauses C1 et C2 . Elle opère en deux temps 2- 1 d’abord unification d’un ensemble de formules atomiques négatives de C1 et positives de C2 , 2 puis coupure sur la formule atomique obtenue. INFO-F-302 - La Logique des Prédicats / Résolution Règle Soit C1 = (N1 , P1 ) et C2 = (N2 , P2 ) deux clauses séparées , c’est-à-dire sans variables communes (il suffit de renommer des variables dans une des clauses si nécessaire). S’il existe P10 ⊆ P1 et N20 ⊆ N2 tels que l’ensemble des formules atomiques P10 ∪ N20 soit unifiable et si σ est un unificateur principal, la nouvelle clause C , déduite des deux clauses C1 , C2 par résolution, est définie par N = σ(N1 ) ∪ σ(N2 \ N20 ) et P = σ(P1 \ P10 ) ∪ σ(P2 ) La clause C est dite déduite par résolution des clauses C1 et C2 relativement à l’unificateur σ (et P10 , N20 ). On dit que la clause C est un résolvant de C1 et C2 relativement à σ. 3- INFO-F-302 - La Logique des Prédicats / Résolution Exemple Soit L un langage comportant les symboles de prédicats p, q, s unaires, r binaire, f un symbole de fonction unaire et les clauses : C1 ≡ ¬s(z) ∨ p(z) ∨ q(z) C2 ≡ ¬p(f (y )) ∨ r (x, y ) 4- INFO-F-302 - La Logique des Prédicats / Résolution Exemple On considère les sous-ensembles de C1 et C2 suivants : P1 = {p(z)}, N2 = {¬p(f (y ))} Nous allons unifier {p(f (y )), p(z)} On considère donc le système S = {(z, f (y ))} de hauteur zéro qui est unifié par σ(z) = f (y ). Nous pouvons maintenant calculer C3 (la clause résolvante) comme : C3 ≡ ¬s(f (y )) ∨ q(f (y )) ∨ r (x, y ) 5- INFO-F-302 - La Logique des Prédicats / Résolution Preuve par résolution Soit S un ensemble de clauses et C une clause. Une preuve par résolution de C à partir de S est une suite finie de clauses C1 , C2 , . . . , Cn telles que Cn = C et pour tout i = 1, 2, . . . , n : soit Ci est une clause de S ; soit il existe 1 ≤ j, k < i tels que Ci soit un résolvant de Cj , Ck . L’existence d’une preuve C par résolution à partir de S est notée S `R C . Une réfutation de S est une preuve de la clause vide à partir de S. La clause vide est notée ×. 6- INFO-F-302 - La Logique des Prédicats / Résolution Exercice Montrez que l’ensemble de clauses : ¬p(x) ∨ p(y ) p(z) ∨ q(z) ¬p(c) ¬q(d) possède une réfutation. 7- INFO-F-302 - La Logique des Prédicats / Résolution Nécessité de considérer des ensembles de littéraux Appliquez la méthode de résolution pour montrer l’insatisfaisabilité des clauses I I C1 = p(a, x) ∨ p(x, a) C2 = ¬p(a, x) ∨ ¬p(x, a) en vous imposant d’unifier des paires de littéraux seulement, et donc des paires d’ensemble de littéraux, i.e. en supposant que dans la règle de coupure, P10 et N20 sont des ensembles singletons. 8- INFO-F-302 - La Logique des Prédicats / Résolution Nécessité de considérer des ensembles de littéraux Appliquez la méthode de résolution pour montrer l’insatisfaisabilité des clauses I I C1 = p(a, x) ∨ p(x, a) C2 = ¬p(a, x) ∨ ¬p(x, a) en vous imposant d’unifier des paires de littéraux seulement, et donc des paires d’ensemble de littéraux, i.e. en supposant que dans la règle de coupure, P10 et N20 sont des ensembles singletons. Un pas de coupure donne toujours la clause p(a, x) ∨ ¬p(a, x). La méthode “par singletons” n’est donc pas complète. Par contre, en unifiant toutes les littéraux, on obtient par un pas de coupure la clause vide directement, avec la substitution (a/x). On peut néanmoins obtenir une méthode complète “par singletons”, mais il faut alors ajouter la règle de factorisation : étant donnée une clause de la forme l1 ∨ l2 ∨ C et un unificateur principal σ de l1 ∨ l2 (s’il existe), on génère la clause σ(l1 ) ∨ σ(C ). C’est une variante qui est souvent décrite dans la littérature. 8- INFO-F-302 - La Logique des Prédicats / Résolution Correction de la résolution La correction de la méthode de résolution est exprimée par la propriété suivante : l’existence d’une réfutation de S implique que S n’a pas de modèle. Comme pour la logique propositionnelle, pour établir ce résultat, nous prouvons d’abord l’adéquation d’un pas de coupure. Lemme (Adéquation de la règle de coupure) Si C est un résolvant de C1 , C2 alors C̄ est une conséquence logique de C¯1 ∧ C¯2 (la clôture universelle de C est notée C̄ ). Preuve. On a besoin de la propriété suivante dans la démonstration du lemme. Soit B(x1 , ..., xk ) une clause et µ une structure pour le langage L. Si σ est une substitution telle que pour i = 1, 2, ..., k : σ(xi ) = ti (y1 , ..., yl ) et b1 , ..., bl ∈ M µ , on pose : ai = tiµ [b1 , ..., bl ] La clause B satisfait alors : µ, [a1 , ..., ak ] |= B ssi µ, [b1 , ..., bl ] |= σ(B) . 9- INFO-F-302 - La Logique des Prédicats / Correction de la résolution Correction de la résolution Lemme (Adéquation de la règle de coupure) Si C est un résolvant de C1 , C2 alors C̄ est une conséquence logique de C¯1 ∧ C¯2 (la clôture universelle de C est notée C̄ ). Preuve (Suite). Nous pouvons maintenant aborder la preuve du lemme. Les clauses C1 , C2 et C , résolvant de C1 , C2 relativement à l’unificateur σ (pour P1 et N2 ) peuvent s’écrire sous la forme suivante : W V C1 ≡ G1 → (F1 ∨ P1 ) C2 ≡ (F2 ∧ N2 ) → D2 C ≡ (σ (G1 ) ∧ σ (F2 )) → (σ (F1 ) ∨ σ (D2 )) avecW V P1 ( N2 ) la disjonction (conjonction) des formules de P1 (N2 ) G1 la conjonction des formules atomiques apparaissant négativement dans C1 F1 la disjonction des formules atomiques apparaissant positivement dans C1 mais pas dans P1 D2 la disjonction des formules atomiques apparaissant positivement dans C2 F2 la conjonction des formules atomiques apparaissant négativement dans C2 mais pas dans N2 10- INFO-F-302 - La Logique des Prédicats / Correction de la résolution Correction de la résolution Lemme (Adéquation de la règle de coupure) Si C est un résolvant de C1 , C2 alors C̄ est une conséquence logique de C¯1 ∧ C¯2 (la clôture universelle de C est notée C̄ ). Preuve (Suite). On va maintenant établir la contraposée du lemme. On suppose donc qu’il existe µ tel que µ 6|= C̄ . En d’autres termes, nous supposons qu’il existe µ et b1 , b2 , ..., bl ∈ M µ tels que µ, [b1 , ..., bl ] |= ¬C On va maintenant établir que µ 6|= C̄1 ou µ 6|= C̄2 . Par hypothèse, µ, [b1 , . . . , bl ] |= ¬C , donc on a que µ et [b1 , . . . , bl ] sont tels que (1) µ, [b1 , ..., bl ] |= (σ (G1 ) ∧ σ (F2 )) et µ, [b1 , ..., bl ] |= ¬ (σ (F1 ) ∨ σ (D2 )) 11- INFO-F-302 - La Logique des Prédicats / Correction de la résolution Correction de la résolution Lemme (Adéquation de la règle de coupure) Si C est un résolvant de C1 , C2 alors C̄ est une conséquence logique de C¯1 ∧ C¯2 (la clôture universelle de C est notée C̄ ). Preuve (Suite). Soient x1 , x2 , ..., xk les variables apparaissant dans C1 , C2 et ti les termes définis par σ (xi ) = ti (y1 , ..., yl ) pour i = 1, 2, ..., k. La suite des ai est définie par ai = tiµ [b1 , ..., bl ] D’après la propriété rappelée précédemment et (1), on obtient donc que : µ, [a1 , ..., ak ] |= G1 µ, [a1 , ..., ak ] |= F2 µ, [a1 , ..., ak ] |= ¬F1 µ, [a1 , ..., ak ] |= ¬D2 12- INFO-F-302 - La Logique des Prédicats / Correction de la résolution Correction de la résolution Lemme (Adéquation de la règle de coupure) Si C est un résolvant de C1 , C2 alors C̄ est une conséquence logique de C¯1 ∧ C¯2 (la clôture universelle de C est notée C̄ ). Preuve (Suite). Vu que toutes les formules atomiques de P1 et N2 sont unifiées par σ en une formule atomique que nous notons φa , on a exactement deux cas possibles. Soit µ, [b1 , ..., bl ] |= φa soit µ, [b1 , ..., bl ] |= ¬φa . Dans le premier cas, d’après la propriété précédente, V on obtient que µ, [a1 , ..., W ak ] |= N2 . Dans le deuxième cas, on obtient que µ, [a1 , ..., ak ] |= ¬ P1 . Ainsi, dans le premier cas, on obtient que µ, [a1 , ..., ak ] satisfait la négation de C2 , et dans le deuxième cas que µ, [a1 ,..., ak ] satisfait la négation de C1 Dans les deux cas, l’une des formules de C¯1 , C¯2 est fausse dans µ. Corollaire Si S `R C , alors C̄ est une conséquence logique de S̄. En particulier, s’il existe une réfutation de S, alors S n’a pas de modèle. 13- INFO-F-302 - La Logique des Prédicats / Correction de la résolution Complétude de la résolution Théorème Si un ensemble de clauses S est non satisfaisable alors il existe une réfutation de S par résolution. Voici le schéma principal de la preuve de ce résultat : 14- 1 Si S est non satisfaisable, d’après le théorème de Herbrand, il existe un ensemble fini d’instances closes de clauses de S qui est non satisfaisable, i.e. il existe Sc ⊆ {σ(C ) | σ est une substitution close et C ∈ S} fini qui est non satisfaisable. 2 On peut appliquer la résolution de la logique propositionnelle à Sc , et comme elle est complète, il existe une réfutation de Sc par résolution. 3 La dernière étape consiste à construire une réfutation pour S à partir de la réfutation de Sc . Cette partie de preuve est basée sur le lemme du relèvement que nous allons voir maintenant. INFO-F-302 - La Logique des Prédicats / Complétude de la résolution Lemme du relèvement Lemme Soit C1 , C2 deux clauses et C10 , C20 deux instances closes de C1 et C2 . Soit C 0 un résolvant (clos) de C10 et C20 . Alors il existe un résolvant C de C1 et C2 tel que C 0 soit une instance close de C . Preuve. On sait que C10 = σ1 (C1 ) pour une substitution close σ1 , et de même C20 = σ2 (C2 ) pour une substitution close σ2 . Sans perte de généralité, on peut supposer que C1 et C2 n’ont pas de variables en commun (sinon on renomme les variables), et donc on peut supposer que σi est identitaire sur toutes les variables qui n’apparaı̂ssent pas dans Ci , i = 1, 2. On définit alors σ1 ∪ σ2 comme la substitution qui à x associe σ1 (x) si x est dans C1 , σ2 (x) si x est dans C2 et x sinon. Supposons que C1 = (P1 , N1 ) et C2 = (P2 , N2 ), et que la résolution close entre C10 et C20 se fait sur une formule atomique a0 qui apparaı̂t positivement dans C10 et négativement dans C20 . On pose P10 = {b ∈ P1 | σ1 (b) = a0 } et N20 = {b ∈ P2 | σ2 (b) = a0 }. 15- INFO-F-302 - La Logique des Prédicats / Complétude de la résolution Lemme du relèvement Lemme Soit C1 , C2 deux clauses et C10 , C20 deux instances closes de C1 et C2 . Soit C 0 un résolvant (clos) de C10 et C20 . Alors il existe un résolvant C de C1 et C2 tel que C 0 soit une instance close de C . Preuve (Suite). Sans perte de généralité on peut supposer que C1 = (P10 ∪ P100 , N1 ) C2 = (P2 , N20 ∪ N200 ) 0 0 00 C1 = ({a } ∪ σ1 (P1 ), σ1 (N1 ) C20 = (σ2 (P2 ), {a0 } ∪ σ2 (N200 )) Donc σ1 ∪ σ2 est un unificateur de P10 ∪ N20 . Soit maintenant σ un unificateur principal de P10 ∪ N20 . Soit C obtenu par coupure entre C1 et C2 sur P10 , N20 avec σ, i.e. C = (σ(P100 ∪ P2 ), σ(N1 ∪ N200 )). Puisque σ est un unificateur principal, il existe β tel que σ1 ∪ σ2 = β ◦ σ. Par ailleurs, on sait que C 0 = ((σ1 ∪ σ2 )(P100 ∪ P2 ), (σ1 ∪ σ2 )(N1 ∪ N200 )). Donc si on remplace σ1 ∪ σ2 par β ◦ σ, on obtient C 0 = β(C ). 16- INFO-F-302 - La Logique des Prédicats / Complétude de la résolution Relèvement d’une réfutation close On peut appliquer le lemme précédent pour relever une réfutation close et établir ainsi la complétude. On sait qu’il existe une réfutation close de Sc par la complétude de la résolution dans la logique propositionnelle, i.e. une 0 suite C00 , . . . , Cn0 , Cn+1 , . . . Cm0 de clauses closes telles que 0 0 Sc = {C0 , . . . , Cn } et Cm0 =⊥. On peut établir par induction, en appliquant le lemme de relèvement précédent (exercice), qu’il existe une suite de clauses A = C0 , . . . , Cn , Cn+1 , . . . Cm de clauses et une suite σ0 , . . . , σm de substitutions telles que Ci0 = σi (Ci ) pour tout i, S = {C0 , . . . , Cn } et Cn+1 , . . . , Cm sont obtenues par application de la règle de coupure. Comme Cm0 =⊥, on obtient Cm =⊥, donc A est une réfutation de S. Résolution C0 premier ordre ↓σ0 Résolution C00 propositionnelle 17- → C1 ↓σ1 → C10 → ... → ... Cn ↓σn Cn0 → Cn+1 . . . ↓σn+1 0 → Cn+1 ... INFO-F-302 - La Logique des Prédicats / Complétude de la résolution → ⊥ ↓σm → ⊥ Indécidabilité de la logique du premier ordre Nous allons montrer qu’il n’existe pas d’algorithme 1 A qui prend en entrée une formule de la logique du premier ordre et retourne 1 si elle est valide, 0 sinon. On dit que le problème de validité pour la logique du premier ordre est un problème indécidable. 1. Entendez par algorithme un programme Java, C, Python ... La formalisation des notions d ’algorithme et de problème n’est pas l’objet de ce cours, mais sera vue en Master dans le cours Calculabilité et Complexité. 18- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Notion de Réduction Pour montrer l’indécidabilité d’un problème de décision 2 P1 , on part d’un problème de décision P2 indécidable et on montre l’existence d’un algorithme, appelé réduction, qui pour toute instance I2 de P2 construit une instance I1 de P1 telle que I1 a une solution si et seulement si I2 a une solution. De cette façon, on montre que P1 est “aussi difficile” que P2 . S’il existait un algorithme pour résoudre P1 , alors cela nous donnerait un algorithme pour résoudre P2 : appliquer la réduction puis l’algorithme pour P1 . Cela contredirait le fait que P2 soit indécidable, donc il n’existe pas d’algorithme pour résoudre P1 . 2. i.e. dont la réponse est 0 ou 1 19- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Notion de Réduction Pour montrer l’indécidabilité d’un problème de décision 2 P1 , on part d’un problème de décision P2 indécidable et on montre l’existence d’un algorithme, appelé réduction, qui pour toute instance I2 de P2 construit une instance I1 de P1 telle que I1 a une solution si et seulement si I2 a une solution. De cette façon, on montre que P1 est “aussi difficile” que P2 . S’il existait un algorithme pour résoudre P1 , alors cela nous donnerait un algorithme pour résoudre P2 : appliquer la réduction puis l’algorithme pour P1 . Cela contredirait le fait que P2 soit indécidable, donc il n’existe pas d’algorithme pour résoudre P1 . Certains problèmes ont directement été montré indécidables : le problème de terminaison d’un programme par exemple, mais aussi le problème de validité dans la logique du premier ordre (travaux d’Alonzo Church et Alan Turing). ici, nous allons utiliser une réduction à partir du problème de correspondance de Post. 2. i.e. dont la réponse est 0 ou 1 19- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Problème de la Correspondance de Post (PCP) Soit Σ = {0, 1}. Un mot u sur Σ est une séquence finie d’éléments de Σ. Deux mots u et v peuvent être concaténés pour former un nouveau mot noté uv . L’élément neutre pour la concaténation est noté (mot vide). Par exemple : u = 01 est un mot, v = 110 est un mot, uv = 01110, u = u = u = 01. Le problème de la Correspondance de Post (PCP) se formule de la manière suivante : Entrée (u1 , v1 ), . . . , (un , vn ), n ≥ 1, n paires de mots (possiblement vides) sur Σ. Sortie 1 si et seulement si il existe une séquence finie d’indices i1 , . . . , ik ∈ {1, . . . , n} telle que k ≥ 1 et ui1 ui2 . . . uik = vi1 vi2 . . . vik 20- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité PCP : exemples Instance : (u1 , v1 ) = (100, 00), (u2 , v2 ) = (0, 01), Solution (parmi d’autres) : 2,1 u2 x1 = 0100 = v2 v 1 Instance : (u1 , v1 ) = (1, 100), (x2 , v2 ) = (0, ), Solution : 1,2,2 u1 u2 u2 = 100 = v1 v2 v2 Instance : (u1 , v1 ) = (1, 0), (u2 , v2 ) = (0, 1), Pas de solution Instance : (u1 , v1 ) = (0, 100), (u2 , v2 ) = (01, 00), (u3 , v3 ) = (110, 11) ? 21- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité PCP : exemples Instance : (u1 , v1 ) = (100, 00), (u2 , v2 ) = (0, 01), Solution (parmi d’autres) : 2,1 u2 x1 = 0100 = v2 v 1 Instance : (u1 , v1 ) = (1, 100), (x2 , v2 ) = (0, ), Solution : 1,2,2 u1 u2 u2 = 100 = v1 v2 v2 Instance : (u1 , v1 ) = (1, 0), (u2 , v2 ) = (0, 1), Pas de solution Instance : (u1 , v1 ) = (0, 100), (u2 , v2 ) = (01, 00), (u3 , v3 ) = (110, 11) ? u3 u2 u3 u1 =(110)(01)(110)(0)=110011100=(11)(00)(11)(100)=v3 v2 v3 v1 21- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Théorèmes Théorème Le problème de Correspondance de Post est indécidable. Preuve admise. Théorème Le problème de validité en logique du premier ordre est indécidable. Nous allons montrer ce résultat en réduisant PCP. 22- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Preuve Nous considérons le langage du premier ordre contenant un prédicat binaire p, deux symboles de fonction unaires f0 et f1 , et un symbole de constante a. Etant donné un mot u sur Σ et un terme g , on définit le terme tu (g ) sur L par : g si u = fbs (fbs−1 . . . (fb2 (fb1 (g )))) si u = b1 b2 . . . bs . Soit I = {(u1 , v1 ), . . . , (un , vn )} une instance de PCP. Nous allons construire une formule φI de la logique du premier ordre, sur le langage L, et montrer que φI est valide si et seulement si I a une solution. La formule φI se décompose comme suit : φI = ρ ∧ σ → τ Premièrement, ρ ≡ p(tu1 (a), tv1 (a)) ∧ p(tu2 (a), tv2 (a)) ∧ · · · ∧ p(tun (a), tvn (a)) 23- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Preuve Cela signifie qu’on met dans la relation p les termes qui correspondent aux paires de mots. On peut étendre cette relation aux concaténations (paires à paires) de couples de mots de I . En particulier, la formule suivante signifie que si x et y sont en relation, alors on peut concaténer ui à x et vj à y , pourvu que i = j. σ ≡ ∀x∀y .(p(x, y ) → n ^ p(tui (x), tvi (y )) i=1 Enfin, τ signifie l’existence de deux éléments égaux en relation : τ ≡ ∃z.p(z, z) Clairement, cette réduction est effective (on peut écrire un algorithme qui l’implémente). Montrons qu’elle est correcte. 24- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Preuve Supposons que I a une solution i1 , . . . , ik et montrons que φI est valide. Pour cela, soit M une structure sur L. Supposons que M |= ρ ∧ σ. On sait par hypothèse que ui1 . . . uik = vi1 . . . vik Donc tuik (tuik−1 (. . . (tui1 (a))) = tvik (tvik−1 (. . . (tvi1 (a))) = g pour un certain g . Par hypothèse, on sait que M |= p(tui1 , tvi1 ) et comme M |= σ, on obtient aussi que M |= p(tui2 (tui1 ), tvi2 (tvi1 )), et plus généralement, que M |= p(g , g ). Donc M |= ∃z.p(z, z). 25- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité Preuve Réciproquement, supposons que φI est valide et montrons que I a une solution. Soit H la structure de Herbrand sur L avec l’intreprétation v définie pour tous termes clos h et g par v (p(tui (g ), tvj (h)) = 1 si et seulement si i = j et v (p(g , h)) = 1 (définition inductive). Clairement, H |= ρ ∧ σ, donc H |= τ puisque φI est valide. Donc il existe un terme clos t tel que H |= p(t, t). Par définition de H, il est facile de voir que t se décompose nécessairement en t = tuik (tuik−1 (. . . (tui1 (a))) = tvik (tvik−1 (. . . (tvi1 (a))). Donc ui1 . . . uik = vi1 . . . vik et I a une solution. 26- INFO-F-302 - La Logique des Prédicats / Indécidabilité du problème de validité