École polytechnique Promotion 2012 Majeure informatique Cours Conception et analyse d’algorithmes TD 6 – Solveurs SAT 22 octobre 2014 1. Lazy data structures. L’algorithme DPLL et ses variantes utilisent une méthode propagation, qui effectue la propagation de clauses unitaires, et qui permet de maintenir les deux invariants suivants : (*) si l’affectation courante des variables rend une clause égale à faux, cette clause est détectée (ce qui conduit soit à un backtrack soit à renvoyer unsat si plus de backtrack n’est possible). (**) si l’affectation courante des variables rend une clause égale à vrai, cette clause est détectée et supprimée de la liste des clauses actives. 1. On suppose que l’on dispose d’une routine propagation-lazy qui maintient l’invariant (A) mais pas le (B). Montrer que l’algorithme DPLL reste valide en utilisant cette routine à la place de propagation, à condition de rajouter une condition de terminaison adéquate. 2. On suppose que l’on maintient, pour chaque clause C de la formule, deux pointeurs x1 (C) 6= x2 (C), appelés littéraux surveillés, qui vérifient la propriété suivante : pour i ∈ {1, 2}, xi (C) pointe vers un littéral contenu dans C qui n’est pas faux dans l’affectation courante des variables (ce littéral peut être soit vrai soit non affecté). (***) On suppose de plus que l’on maintient, pour chaque variable x, une liste de pointeurs vers les clauses dont x ou x̄ est un littéral surveillé. Donner une variante de l’algorithme DPLL, utilisant la stratégie de la question 1., et qui utilise ces structures de données. On prendra soin de vérifier que l’algorithme préserve les invariants (*) et (***). 3. Quel est l’intérêt de cette stratégie ? 2. Algorithme DPLL et Unique Implication Points On se propose dans cette exercice d’étudier sur un exemple la notion de graphe d’implication, et la manière dont elle peut être utilisée pour l’apprentissage de clauses. V On considère la formule F définie par F = Ci ou les Ci sont les clauses suivantes : C1 = x̄1 ∨ x̄2 ; C2 = x2 ∨ x3 ∨ x8 ; C3 = x̄3 ∨ x̄4 C6 = x̄4 ∨ x̄8 ; C7 = x̄6 ∨ x7 ∨ x9 ; C8 = x1 ∨ x7 ∨ x10 ; C4 = x6 ∨ x5 ∨ x4 ; ; C5 = x̄1 ∨ x̄5 ∨ x7 C9 = x̄7 ∨ x9 ∨ x̄10 ; ; C10 = x̄9 ∨ x10 Pour une formule donnée sous forme de CNF et un ensemble d’affectations de variables de décisions successives, on définit, pour chaque propagation de contraintes unitaires, ce qu’on appelle le graphe d’implication. Chaque sommet du graphe d’implication correspond à l’affectation d’une variable. Un sommet porte l’étiquette xi : k (ou x̄i : k) si la variable xi a été affectée à vraie (ou à faux) après k affectations de variables de décisions. Il existe une arête (étiquetée par Cm ) entre xi : k et xj : l (avec k ≤ l) si à l’étape l, la propagation des clauses unitaires conduit à déduire l’affectation de xj en utilisant Cm . Enfin il existe un sommet spécial étiqueté κ qui correspond à un conflit dû à une clause Cm . Dans ce cas il existe une arête étiquetée Cm de xi ou x̄i à κ si la variable xi apparaı̂t dans Cm . 1. On considère la formule F définie ci-dessus et les choix successifs suivants : x1 := 1, x7 := 0, x9 := 0. Dessiner un graphe d’implication correspondant à ces choix. Montrer que l’on aboutit à un conflit et en déduire qu’une nouvelle clause peut être ajoutée à la formule initiale. Cela suffit-il à conclure s’il existe ou non des solutions telles que x1 := 1 et x7 := 0, uniquement par propagation des contraintes unitaires et sans utiliser d’autres variables de décision ? 1 2. Pour améliorer l’algorithme DPLL, on introduit les Unique Implication Points. Supposons que l’on ait atteint un conflit et soit x : k, la dernière affectation d’une variable de décision effectuée, un UIP est un sommet du graphe d’implication qui se trouve sur tous les chemins orientés de x : k à κ et qui est à distance minimale de κ pour cette propriété. Identifier un UIP sur le graphe d’implication de la question précédente. En vous appuyant sur ce sommet, en déduire une nouvelle clause que la formule doit satisfaire. Cela suffit-il à conclure s’il existe ou non des solutions telles que x1 := 1 et x7 := 0 uniquement par progagation des contraintes unitaires et sans utiliser d’autres variables de décision ? 3. Modélisation grâce à SAT Pour illustrer la problématique de la modélisation avec SAT, on se propose d’écrire des formules en CNF Pn équivalentes à la condition j=1 xj ≤ 1, où xi ∈ {0, 1}, pour tout i. 1. Formuler cette condition sous la forme d’une CNF comportant O(n2 ) clauses. 2. Trouver (et prouver) une formule en CNF portant sur les xi et sur n variables auxiliaires, dont la satisfiabilité quand les xi sont fixés est équivalente à la formule de départ. On demande que la formule comporte O(n) clauses, de longueur bornée. 3. Même question qu’en 2., mais avec seulement log(n) variables auxiliaires et une formule de longueur O(n log(n)). 4. Bounded model checking On modélise un système qu’on veut vérifier de la façon suivante : l’état du système est représenté par un vecteur s = (s1 , . . . , sd ) de dimension finie d à coordonnées booléennes. La propriété à vérifier est donnée par une formule booléenne P (s), vrai si l’état s est bon. De même on se donne une formule I(s) vraie si l’état s est un état initial possible. Enfin on se donne une formule T (s, s0 ) vraie si le système peut faire une transition de l’état s à l’état s0 . 1. Écrire une formule (à n + 1 variables) qui est satisfiable s’il existe une exécution qui fait passer le système d’un état initial valide à un état mauvais en n étapes. En déduire un algorithme qui vérifie s’il existe une telle exécution fautive constituée d’au plus n étapes. 2. Donner une formule dont la satisifabilité est équivalente au fait qu’une séquence de n étapes visitant de bons états puisse être suivie d’une étape conduisant à un mauvais état. Que conclure s’il existe un n telle que ni cette formule ni celle de la question précédente ne sont satisfiables ? 3. Écrire une formule E(s, s0 ) vraie si et seulement si s 6= s0 . 4. Déduire des questions précédentes un algorithme de validation complet du système vis à vis de la propriété P : il s’agit de vérifier que la propriété P est vraie pour tout état s atteignable à partir d’un état initial par une suite de transitions du système. 2