Satisfiabilité Propositionnelle Frederic Koriche Licence Informatique L3 Algorithmique Logique: partie I Université Montpellier II, France [email protected] Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Outline 1 Logique Propositionnelle (Rappels) Syntaxe Sémantique Satisfiabilité 2 Problème de Satisfiabilité Forme Clausale Complexité 3 Algorithmes de Satisfiabilité Algorithme Davis-Putnam Algorithme GSAT 4 Conclusion Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Vocabulaire Un ensemble fini {x1 , · · · , xn } de variables propositionnelles Langage Le langage propositionnel Ln est le plus petit ensemble vérifiant : 1 1 ∈ Ln 2 xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn } 3 si F ∈ Ln alors ¬F ∈ Ln 4 si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln Abréviations Les autres connecteurs sont dérivés à partir des connecteurs de base abréviation 0 F∨G F→G Algorithmique Logique I formule ¬1 ¬(¬F ∧ ¬G) ¬F ∨ G Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Vocabulaire Un ensemble fini {x1 , · · · , xn } de variables propositionnelles Langage Le langage propositionnel Ln est le plus petit ensemble vérifiant : 1 1 ∈ Ln 2 xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn } 3 si F ∈ Ln alors ¬F ∈ Ln 4 si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln Abréviations Les autres connecteurs sont dérivés à partir des connecteurs de base abréviation 0 F∨G F→G Algorithmique Logique I formule ¬1 ¬(¬F ∧ ¬G) ¬F ∨ G Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Vocabulaire Un ensemble fini {x1 , · · · , xn } de variables propositionnelles Langage Le langage propositionnel Ln est le plus petit ensemble vérifiant : 1 1 ∈ Ln 2 xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn } 3 si F ∈ Ln alors ¬F ∈ Ln 4 si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln Abréviations Les autres connecteurs sont dérivés à partir des connecteurs de base abréviation 0 F∨G F→G Algorithmique Logique I formule ¬1 ¬(¬F ∧ ¬G) ¬F ∨ G Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Interprétation Une interprétation ou état est un tuple x ∈ {0, 1}n Satisfaction Relation |= entre états et formules vérifiant : 1 x |= 1 2 x |= xi ssi xi = 1 3 x |= ¬F ssi x 6|= F 4 x |= (F ∧ G) ssi x |= F et x |= G Modèle Un état x est un modèle de F ssi x |= F Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Interprétation Une interprétation ou état est un tuple x ∈ {0, 1}n Satisfaction Relation |= entre états et formules vérifiant : 1 x |= 1 2 x |= xi ssi xi = 1 3 x |= ¬F ssi x 6|= F 4 x |= (F ∧ G) ssi x |= F et x |= G Modèle Un état x est un modèle de F ssi x |= F Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Interprétation Une interprétation ou état est un tuple x ∈ {0, 1}n Satisfaction Relation |= entre états et formules vérifiant : 1 x |= 1 2 x |= xi ssi xi = 1 3 x |= ¬F ssi x 6|= F 4 x |= (F ∧ G) ssi x |= F et x |= G Modèle Un état x est un modèle de F ssi x |= F Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Satisfiabilité Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est dite insatisfiable Validité Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est dite invalide Conséquence : F |= G ssi F → G est valide Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide Lemme de connexion Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable Conséquence : F |= G ssi F ∧ ¬G est insatisfiable Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Satisfiabilité Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est dite insatisfiable Validité Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est dite invalide Conséquence : F |= G ssi F → G est valide Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide Lemme de connexion Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable Conséquence : F |= G ssi F ∧ ¬G est insatisfiable Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Syntaxe Sémantique Satisfiabilité Satisfiabilité Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est dite insatisfiable Validité Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est dite invalide Conséquence : F |= G ssi F → G est valide Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide Lemme de connexion Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable Conséquence : F |= G ssi F ∧ ¬G est insatisfiable Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Outline 1 Logique Propositionnelle (Rappels) Syntaxe Sémantique Satisfiabilité 2 Problème de Satisfiabilité Forme Clausale Complexité 3 Algorithmes de Satisfiabilité Algorithme Davis-Putnam Algorithme GSAT 4 Conclusion Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Clauses Un littéral est une variable xi ou sa négation xi . Une clause est une disjonction de littéraux Une clause de Horn est une disjonction contenant au plus un littéral positif Example type fait contrainte règle règle disjonctive exemple x1 x1 ∧ x2 → 0 x1 ∧ x2 → x3 x1 ∧ x2 → x3 ∨ x4 clause x1 (x1 ∨ x2 ) (x1 ∨ x2 ∨ x3 ) (x1 ∨ x2 ∨ x3 ∨ x4 ) catégorie Horn Horn Horn Clause Théories Une théorie clausale ou formule en forme normale conjonctive (CNF) est une conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Clauses Un littéral est une variable xi ou sa négation xi . Une clause est une disjonction de littéraux Une clause de Horn est une disjonction contenant au plus un littéral positif Example type fait contrainte règle règle disjonctive exemple x1 x1 ∧ x2 → 0 x1 ∧ x2 → x3 x1 ∧ x2 → x3 ∨ x4 clause x1 (x1 ∨ x2 ) (x1 ∨ x2 ∨ x3 ) (x1 ∨ x2 ∨ x3 ∨ x4 ) catégorie Horn Horn Horn Clause Théories Une théorie clausale ou formule en forme normale conjonctive (CNF) est une conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Clauses Un littéral est une variable xi ou sa négation xi . Une clause est une disjonction de littéraux Une clause de Horn est une disjonction contenant au plus un littéral positif Example type fait contrainte règle règle disjonctive exemple x1 x1 ∧ x2 → 0 x1 ∧ x2 → x3 x1 ∧ x2 → x3 ∨ x4 clause x1 (x1 ∨ x2 ) (x1 ∨ x2 ∨ x3 ) (x1 ∨ x2 ∨ x3 ∨ x4 ) catégorie Horn Horn Horn Clause Théories Une théorie clausale ou formule en forme normale conjonctive (CNF) est une conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Problème S AT Le problème de satisfiabilité des théories clausales est NP-complet Donnée : une théorie clausale F du langage Ln Question : F est-elle satisfiable ? Problème U N S AT Le problème d’insatisfiabilité des théories clausales est coNP-complet Donnée : une théorie clausale F du langage Ln Question : F est-elle insatisfiable ? Problème H ORN -S AT Le problème de satisfiabilité d’une théorie de Horn F du langage Ln est linéaire en la taille (nombre d’occurrences de littéraux) de F Problème H ORN -U N S AT Le problème d’insatisfiabilité d’une théorie de Horn F du langage Ln de variables est linéaire en la taille de F Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Forme Clausale Complexité Problème S AT Le problème de satisfiabilité des théories clausales est NP-complet Donnée : une théorie clausale F du langage Ln Question : F est-elle satisfiable ? Problème U N S AT Le problème d’insatisfiabilité des théories clausales est coNP-complet Donnée : une théorie clausale F du langage Ln Question : F est-elle insatisfiable ? Problème H ORN -S AT Le problème de satisfiabilité d’une théorie de Horn F du langage Ln est linéaire en la taille (nombre d’occurrences de littéraux) de F Problème H ORN -U N S AT Le problème d’insatisfiabilité d’une théorie de Horn F du langage Ln de variables est linéaire en la taille de F Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT Outline 1 Logique Propositionnelle (Rappels) Syntaxe Sémantique Satisfiabilité 2 Problème de Satisfiabilité Forme Clausale Complexité 3 Algorithmes de Satisfiabilité Algorithme Davis-Putnam Algorithme GSAT 4 Conclusion Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT F x1 = 1 x1 = 0 x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 ) x2 = 1 x2 = 0 x4 ∧ x3 ∧ x3 x4 = 0 x3 ∧ x3 x4 ∧ x3 ∧ x4 x2 x2 = 1 1 x3 = 0 Principe Recherche en profondeur d’abord dans l’espace {0, 1}n Chaque noeud interne de l’arbre de recherche est une théorie clausale Chaque branche est étiquetée par une affectation de valeur à une variable. 0 Chaque feuille est étiquetée par 0 ou 1 x3 = 1 0 Méthode théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x 1 ∨ x 2 ∨ x3 x1 ∨ x2 ∨ x4 Chaque itération de l’algorithme contient trois phases : Projeter la formule sur l’affectation courante Propager la contrainte booléenne Choisir une variable de branchement Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT F x1 = 1 x1 = 0 x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 ) x2 = 1 x2 = 0 x4 ∧ x3 ∧ x3 x4 = 0 x3 ∧ x3 x4 ∧ x3 ∧ x4 x2 x2 = 1 1 x3 = 0 Principe Recherche en profondeur d’abord dans l’espace {0, 1}n Chaque noeud interne de l’arbre de recherche est une théorie clausale Chaque branche est étiquetée par une affectation de valeur à une variable. 0 Chaque feuille est étiquetée par 0 ou 1 x3 = 1 0 Méthode théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x 1 ∨ x 2 ∨ x3 x1 ∨ x2 ∨ x4 Chaque itération de l’algorithme contient trois phases : Projeter la formule sur l’affectation courante Propager la contrainte booléenne Choisir une variable de branchement Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT Projection entrée : une théorie clausale F et une affectation xi = v sortie : la projection Fxi =v si xi = 1 alors remplacer chaque occurrence de xi (resp. xi ) dans F par 1 (resp. 0) sinon remplacer chaque occurrence de xi (resp. xi ) dans F par 0 (resp. 1) pour chaque clause C dans F si 0 ∈ C alors éliminer 0 de C si 1 ∈ C alors éliminer C de F Propagation de Contrainte Booléenne (BCP) entrée : une théorie clausale F sortie : une simplification de F par filtrage booléen si F contient une clause unaire {li } alors si li = xi alors retourner BCP(Fxi =1 ) sinon retourner BCP(Fxi =0 ) Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT Projection entrée : une théorie clausale F et une affectation xi = v sortie : la projection Fxi =v si xi = 1 alors remplacer chaque occurrence de xi (resp. xi ) dans F par 1 (resp. 0) sinon remplacer chaque occurrence de xi (resp. xi ) dans F par 0 (resp. 1) pour chaque clause C dans F si 0 ∈ C alors éliminer 0 de C si 1 ∈ C alors éliminer C de F Propagation de Contrainte Booléenne (BCP) entrée : une théorie clausale F sortie : une simplification de F par filtrage booléen si F contient une clause unaire {li } alors si li = xi alors retourner BCP(Fxi =1 ) sinon retourner BCP(Fxi =0 ) Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT F x1 = 1 x1 = 0 x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 ) x2 = 1 x2 = 0 x4 ∧ x3 ∧ x3 x4 = 0 x3 ∧ x3 x4 ∧ x3 ∧ x4 x2 x2 = 1 1 x3 = 0 Davis-Putnam entrée : une théorie clausale F sortie : 1 (sat) ou 0 (unsat) BCP(F) si F est vide retourner 1 si F contient la clause vide retourner 0 choisir une variable xi dans F retourner DP(Fxi =0 ) ∨ DP(Fxi =1 ) 0 x3 = 1 0 théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x 1 ∨ x 2 ∨ x3 x1 ∨ x2 ∨ x4 Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT {0, 1}n F Principe Recherche non systématique (locale) par méthode de voisinage dans {0, 1}n Méthode Chaque itération de l’algorithme contient deux phases Tirage aléatoire d’un état (T RIES) théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x 1 ∨ x 2 ∨ x3 x1 ∨ x2 ∨ x4 Recherche de voisins par permutation (F LIPS) Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT {0, 1}n F Principe Recherche non systématique (locale) par méthode de voisinage dans {0, 1}n Méthode Chaque itération de l’algorithme contient deux phases Tirage aléatoire d’un état (T RIES) théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x 1 ∨ x 2 ∨ x3 x1 ∨ x2 ∨ x4 Recherche de voisins par permutation (F LIPS) Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT GSAT entrée : une théorie clausale F, les bornes M AX T RIES et M AX F ILPS sortie : 1 (sat) ou failout (inconnu) pour i = 1 à M AX T RIES choisir un état X aléatoirement dans {0, 1}n pour j = 1 à M AX F LIPS si w |= F retourner 1 choisir une variable xi et permuter sa valeur dans s Dans GSAT, l’heuristique de choix est la variable qui maximise le nombre de clauses satisfaites i 1 1 1 j 1 2 3 état x1 = 1, x2 = 0, x3 = 0, x4 = 1 x1 = 0, x2 = 0, x3 = 0, x4 = 1 x1 = 0, x2 = 0, x3 = 0, x4 = 1 Algorithmique Logique I théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x1 ∨ x2 ∨ x3 x1 ∨ x2 ∨ x4 Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Algorithme DP Algorithme GSAT GSAT entrée : une théorie clausale F, les bornes M AX T RIES et M AX F ILPS sortie : 1 (sat) ou failout (inconnu) pour i = 1 à M AX T RIES choisir un état X aléatoirement dans {0, 1}n pour j = 1 à M AX F LIPS si w |= F retourner 1 choisir une variable xi et permuter sa valeur dans s Dans GSAT, l’heuristique de choix est la variable qui maximise le nombre de clauses satisfaites i 1 1 1 j 1 2 3 état x1 = 1, x2 = 0, x3 = 0, x4 = 1 x1 = 0, x2 = 0, x3 = 0, x4 = 1 x1 = 0, x2 = 0, x3 = 0, x4 = 1 Algorithmique Logique I théorie clausale F x1 ∨ x2 x1 ∨ x4 x1 ∨ x3 x1 ∨ x2 ∨ x3 x1 ∨ x2 ∨ x4 Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Outline 1 Logique Propositionnelle (Rappels) Syntaxe Sémantique Satisfiabilité 2 Problème de Satisfiabilité Forme Clausale Complexité 3 Algorithmes de Satisfiabilité Algorithme Davis-Putnam Algorithme GSAT 4 Conclusion Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Efficacité Années 1990 : 100 variables et 200 clauses Années 2005 : 1,000,000 variables et 5,000,000 clauses Certaines instances dures de SAT restent non-solvables avec quelques centaines de variables Applications De nombreux problèmes NP-difficiles sont traduits en SAT Software Engineering : vérification de logiciels Hardware Engineering : vérification de circuits Réseaux : routage, ordonnancement, spécification de protocoles IA : diagnostic, planification, raisonnement, apprentissage, etc. Web : e-commerce, e-auctions, electronic trading Algorithmique Logique I Satisfiabilité Propositionnelle Logique Propositionnelle Problème de Satisfiabilité Algorithmes de Satisfiabilité Conclusion Efficacité Années 1990 : 100 variables et 200 clauses Années 2005 : 1,000,000 variables et 5,000,000 clauses Certaines instances dures de SAT restent non-solvables avec quelques centaines de variables Applications De nombreux problèmes NP-difficiles sont traduits en SAT Software Engineering : vérification de logiciels Hardware Engineering : vérification de circuits Réseaux : routage, ordonnancement, spécification de protocoles IA : diagnostic, planification, raisonnement, apprentissage, etc. Web : e-commerce, e-auctions, electronic trading Algorithmique Logique I Satisfiabilité Propositionnelle