Logik für Informatiker 2. Aussagenlogik Teil 8 21.05.2012 Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: [email protected] 1 Bis jetzt Unser Ziel Kalküle zur systematischen Überprüfung von Erfüllbarkeit (für Formeln und/oder Formelmengen) 2 Bis jetzt • Das SAT-Problem (Erfüllbarkeitsproblem) • Teilklassen des Erfüllbarkeitsproblems k-KNF: Theorem • Erfüllbarkeit für Formeln in KNF: NP-vollständig (ohne Beweis) • Erfüllbarkeit für Formeln in 3-KNF (3-SAT): NP-vollständig • Erfüllbarkeit für Formeln in 2-KNF (2-SAT): polynomiell entscheidbar Horn Formeln Theorem Die Erfüllbarkeit von Horn-Formeln ist in quadratischer Zeit entscheidbar. 3 Resolutionskalkül Der aussagenlogische Resolutionkalkül (Mengennotation) Definition: Resolutionsregel (einzige Regel des Kalküls) C1 ∪ {P} {¬P} ∪ C2 C1 ∪ C2 wobei • P eine aussagenlogische Variable • C1 , C2 Klauseln (können leer sein) Definition: C1 ∪ C2 heißt Resolvente von C1 ∪ {P}, C2 ∪ {¬P} 4 Ohne Mengenschreibweise Resolutionsregel: C1 ∨ P ¬P ∨ C2 C1 ∨ C2 Faktorisieren: C ∨L∨L C ∨L 5 Resolution Sei F eine Klauselmenge und Res(F ) = F ∪ {R | R ist eine Resolvente zweier Klauseln aus F } Res0 (F ) = F Resn+1 (F ) = Res(Resn (F )) Res⋆ (F ) = n Res (F ) n∈N S (bezeichnet die Vereinigung der Resolventen aus aller möglichen Resolutionsschritte auf F ) Notation: Falls C ∈ Res⋆ (F ), so schreiben wir F ⊢Res C . Definition: Beweis für C (aus F ): C1 , . . . Cn , wobei: Cn = C und für alle 1 ≤ i ≤ n: (Ci ∈ F oder Ci Resolvente für j1 , j2 <i). Cj1 Cj2 Ci mit 6 Resolution Theorem. Falls C ∈ Res⋆ (F ), so F ≡ F ∪ {C }. 7 Resolution Theorem. Falls C ∈ Res⋆ (F ), so F ≡ F ∪ {C }. Bemerkung: Mengennotation Formelnotation F = {C1 , . . . , Cn } F = C1 ∧ · · · ∧ Cn F ∪C F ∧C Zu zeigen: Falls C ∈ Res⋆ (F ), wobei F = {C1 , . . . , Cn } so (in Formelnotation): F ≡ F ∧ C 8 Resolution Theorem. Falls C ∈ Res⋆ (F ), so F ≡ F ∪ {C }. Beweis: Annahme: C ∈ Resn (F ). Zu zeigen: F ≡ F ∧ C , i.e.: Für alle A : Π → {0, 1} gilt: A(F ) = 1 gdw. (A(F ) = 1 und A(C ) = 1). 9 Resolution Theorem. Falls C ∈ Res⋆ (F ), so F ≡ F ∪ {C }. Beweis: Annahme: C ∈ Resn (F ). Zu zeigen: F ≡ F ∧ C , i.e.: Für alle A : Π → {0, 1} gilt: A(F ) = 1 gdw. (A(F ) = 1 und A(C ) = 1). • Sei A : Π → {0, 1} mit A(F ) = 1. Induktion: Für alle m ∈ N gilt: Falls D ∈ Resm (F ), so A(D) = 1. (folgt aus: C1 ∨ P, C2 ∨ ¬P |= C1 ∨ C2 ) (bewiesen 15.05.2012) Dann A(C ) = 1, so (A(F ) = 1 und A(C ) = 1), d.h. A(F ∧ C ) = 1. • Sei A : Π → {0, 1} mit A(F ∧ C ) = 1. Dann A(F ) = 1 und A(C ) = 1, so A(F ) = 1. 10 Resolution: Korrektheit und Vollständigkeit Theorem (Korrektheit) Für eine Menge M von Klauseln gilt: Falls M ⊢Res ⊥, so M unerfüllbar. Theorem (Vollständigkeit) Für jede endliche Menge M von Klauseln gilt: falls M unerfüllbar, so M ⊢Res ⊥. Es gilt auch: Theorem Für jede Menge M von Klauseln gilt: falls M unerfüllbar, so M ⊢Res ⊥. 11 Andere Kalküle • 1-Resolution • Das Davis-Putnam-Verfahren • Semantische Tableaux 12 Andere Kalküle • 1-Resolution • Das Davis-Putnam-Verfahren • Semantische Tableaux 13 1-Resolution Syllogismus (in der ersten Vorlesung erwähnt): P P→C C 1-Resolution (unit resolution) {P} {¬P} ∪ C C {¬P} {P} ∪ C C 14 1-Resolution Die 1-Resolution (unit resolution) benutzt dieselbe Notation wie im Resolutionskalkül. Die 1-Resolutionsregel ist ein Spezialfall der allgemeinen Resolutionsregel: {P} {¬P} ∪ C C {¬P} {P} ∪ C C 15 1-Resolution Die 1-Resolution (unit resolution) benutzt dieselbe Notation wie im Resolutionskalkül. Die 1-Resolutionsregel ist ein Spezialfall der allgemeinen Resolutionsregel: {P} {¬P} ∪ C C {¬P} {P} ∪ C C Der 1-Resolutionskalkül ist nicht vollständig. Die Klauselmenge M = {{P1 , P2 }, {P1 , ¬P2 }, {¬P1 , P2 }, {¬P1 , ¬P2 }} ist nicht erfüllbar, aber mit 1-Resolution ist aus M nichts ableitbar, also auch nicht ⊥. 16 Andere Kalküle • 1-Resolution • Das Davis-Putnam-Verfahren • Semantische Tableaux 17 Das Davis-Putnam-Verfahren Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Martin Davis and Hilary Putnam, 1960 18 Das Davis-Putnam-Verfahren Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Allgemeine Idee: • 1-Resolution + Fallunterscheidung • N Klauselmenge, P Aussagenvariable in N. N[P 7→⊥]: aus N entstanden durch Ersetzung von P durch ⊥ - P wird aus allen Klauseln gelöscht, - Klauseln, die ¬P enthalten werden ebenfalls gelöscht N[P 7→ ⊤]: aus N entstanden durch Ersetzung von P durch ⊤ - ¬P wird aus allen Klauseln gelöscht, - Klauseln, die P enthalten werden ebenfalls gelöscht N unerfüllbar gdw. (N[P 7→⊥] unerfüllbar und N[P 7→ ⊤] unerfüllbar) 19 Das Davis-Putnam-Verfahren Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Allgemenine Idee: • 1-Resolution + Fallunterscheidung • N Klauselmenge, P Aussagenvariable in N. N[P 7→⊥]: aus N entstanden durch Ersetzung von P durch ⊥ - P wird aus allen Klauseln gelöscht, 7→ Resolventen mit {¬P} - Klauseln, die ¬P enthalten werden ebenfalls gelöscht Subsumption N[P 7→ ⊤]: aus N entstanden durch Ersetzung von P durch ⊤ - ¬P wird aus allen Klauseln gelöscht, - Klauseln, die P enthalten werden ebenfalls gelöscht 7→ Resolventen mit {P} Subsumption N unerfüllbar gdw. (N[P 7→⊥] unerfüllbar und N[P 7→ ⊤] unerfüllbar) 20 Das Davis-Putnam-Verfahren N: eine Menge von Klauseln Programm DP(N): IF (N = ⊤) THEN Return “wahr” ELSE IF (N = ⊥) THEN Return “falsch” ELSE IF (N enthält Klausel {P}) THEN return DP(N[P 7→ ⊤]) ELSE IF (N enthält Klausel {¬P}) THEN return DP(N[P 7→⊥]) ELSE IF (N enthält pures Literal P (d.h. ¬P kommt in N nicht vor)) THEN return DP(N[P 7→ ⊤]) ELSE IF (N enthält pures Literal ¬P (d.h. P kommt in N nicht vor)) THEN return DP(N[P 7→ ⊥]) ELSE { Sei P Aussagenvariable in N IF (DP(N ∪ {¬P}) THEN return “wahr” ELSE return DP(N ∪ {P}) } 21 Das Davis-Putnam-Verfahren N: eine Menge von Klauseln Programm DP(N): IF (N = ⊤) THEN Return “wahr” ELSE IF (N = ⊥) THEN Return “falsch” ELSE IF (N enthält Klausel {P}) THEN return DP(N[P 7→ ⊤]) ELSE IF (N enthält Klausel {¬P}) THEN return DP(N[P 7→⊥]) ELSE IF (N enthält pures Literal P (d.h. ¬P kommt in N nicht vor)) THEN return DP(N[P 7→ ⊤]) ELSE IF (N enthält pures Literal ¬P (d.h. P kommt in N nicht vor)) THEN return DP(N[P 7→ ⊥]) ELSE { Sei P Aussagenvariable in N IF (DP(N[P 7→ ⊥]) THEN return “wahr” ELSE return DP(N[P 7→ ⊤]) } 22 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) 23 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) R ∧ ¬R ∧ (P ∨ ¬R) dd d d d d d d d d Q7→⊤ 24 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) R ∧ ¬R ∧ (P ∨ ¬R) R ¬R ⊥ dd d d d d d d d d Q7→⊤ (oder: R7→⊥) ⊥ 25 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) R ∧ ¬R ∧ (P ∨ ¬R) R ¬R ⊥ dd d d d d d d d d Q7→⊤ YYYYYY YYYYY Q7→⊥ ¬P ∨ R (oder: R7→⊥) ⊥ 26 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) R ∧ ¬R ∧ (P ∨ ¬R) dd d d d d d d d d Q7→⊤ YYYYYY YYYYY Q7→⊥ ¬P ∨ R R7→⊤ R ¬R ⊥ (oder: R7→⊥) ¬P ⊥ 27 Das Davis-Putnam Verfahren: Beispiel (¬P ∨ Q ∨ R) ∧ (¬Q ∨ R) ∧ (¬Q ∨ ¬R) ∧ (P ∨ ¬Q ∨ ¬R) R ∧ ¬R ∧ (P ∨ ¬R) dd d d d d d d d d Q7→⊤ YYYYYY YYYYY Q7→⊥ ¬P ∨ R R7→⊤ R ¬R ⊥ (oder: R7→⊥) ¬P P7→⊥ ⊥ ⊤ A = (P 7→ 0, R 7→ 1, Q 7→ 0) 28 Das Davis-Putnam Verfahren Das Davis-Putnam Verfahren: 1-Resolution + Fallunterscheidung Weiterentwicklung: Das Davis-Putnam-Logemann-Loveland Verfahren (DPLL) Martin Davis, Hilary Putnam, George Logemann and Donald W. Loveland 1962 29 DPLL Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Idee: Erfüllende Wertebelegung inkrementell gebildet. 30 DPLL Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Idee: Erfüllende Wertebelegung inkrementell gebildet. “partielle Wertebelegungen” Wir beginnen mit der leeren Belegung und versuchen diese Belegung zu einem Modell für N zu erweitern. 31 DPLL Gegeben: N Klauselmenge Ziel: Entscheide, ob N erfüllbar ist. (Falls ja: Modell) Idee: Erfüllende Wertebelegung inkrementell gebildet. “partielle Wertebelegungen” Wir beginnen mit der leeren Belegung und versuchen diese Belegung zu einem Modell für N zu erweitern. Falls A partielle Wertebelegung, so können Literale und Klauseln in A wahr, falsch oder undefiniert sein. Eine Klausel ist wahr in A, wenn ein Literal in C wahr ist; falsch, wenn alle Literale falsch sind. Sonst ist C undefiniert (unresolved). 32 Einerklauseln (Unit clauses) Definition. Sei A eine Interpretation. Sei C = L1 ∨ · · · ∨ Ln ∨ L ∈ N, so dass L1 , . . . , Ln falsch in A und L nicht definiert. Dann heißt C Einerklausel (Unit clause). Lemma. Seien A eine Interpretation und C = L1 ∨ · · · ∨ Ln ∨ L ∈ N, so dass L1 , . . . , Ln falsch in A und L nicht definiert. Es gibt ein Modell von N, das A erweitert, genau dann, wenn es ein Modell von N gibt, das A erweitert und L wahr macht. 33 Pure Literale Definition: Ein Literal L heißt pur in einer Klauselmenge N (Klauseln seien Mengen von Literalen), wenn • L Element einer Klausel in N ist und • das Komplement von L in keiner Klausel von N enthalten ist. Eine Klausel C in einer Klauselmenge N heißt pur in N, wenn C ein in N pures Literal enthält. Lemma. Für jede pure Klausel C in einer Klauselmenge N: N erfüllbar gdw. N\{C } erfüllbar 34 Pure Literale Definition: Ein Literal L heißt pur in einer Klauselmenge N (Klauseln seien Mengen von Literalen), wenn • L Element einer Klausel in N ist und • das Komplement von L in keiner Klausel von N enthalten ist. Eine Klausel C in einer Klauselmenge N heißt pur in N, wenn C ein in N pures Literal enthält. Lemma. Für jede pure Klausel C in einer Klauselmenge N: N erfüllbar gdw. N\{C } erfüllbar Beweis: “⇒” Falls N erfüllbar, ist N\{C } auch erfüllbar. “⇐” Annahme: N\{C } erfüllbar (sei A Modell), C enthält ein in N pures Literal L. ( A(Q) falls Q 6= P L = P: A′ : Π → {0, 1} mit A′ (Q) = ist Modell für N. 1 falls Q = P 35 Pure Literale Definition: Ein Literal L heißt pur in einer Klauselmenge N (Klauseln seien Mengen von Literalen), wenn • L Element einer Klausel in N ist und • das Komplement von L in keiner Klausel von N enthalten ist. Eine Klausel C in einer Klauselmenge N heißt pur in N, wenn C ein in N pures Literal enthält. Lemma. Für jede pure Klausel C in einer Klauselmenge N: N erfüllbar gdw. N\{C } erfüllbar Beweis: “⇒” Falls N erfüllbar, ist N\{C } auch erfüllbar. “⇐” Annahme: N\{C } erfüllbar (sei A Modell), C enthält ein in N pures Literal L. ( A(Q) falls Q 6= P L = ¬P: A′ : Π → {0, 1} mit A′ (Q) = ist Modell für N. 0 falls Q = P 36 Pure Literale Definition: Ein Literal L heißt pur in einer Klauselmenge N (Klauseln seien Mengen von Literalen), wenn • L Element einer Klausel in N ist und • das Komplement von L in keiner Klausel von N enthalten ist. Eine Klausel C in einer Klauselmenge N heißt pur in N, wenn C ein in N pures Literal enthält. Lemma. Für jede pure Klausel C in einer Klauselmenge N: N erfüllbar gdw. N\C erfüllbar Lemma. Sei A eine partielle Wertebelegung. Für jedes pure Literal L in einer Klauselmenge N gilt: Es gibt ein Modell von N, das A erweitert genau dann, wenn es ein Modell von N gibt, das A erweitert und L wahr macht. 37 DPLL N: eine Menge von Klauseln, A partielle Wertebeleung Programm DPLL(N, A): IF (alle Klauseln in N wahr in A) THEN Return “wahr” ELSE IF (eine Klausel in N falsch in A) Return “falsch” ELSE IF (N enthält Einerklausel {P}) THEN return DPLL(N, A ∪ {P 7→ 1}) ELSE IF (N enthält Einerklausel {¬P}) THEN return DPLL(N, A ∪ {P 7→ 0}) ELSE IF (N enthält pures Literal P) THEN return DPLL(N, A ∪ {P 7→ 1}) ELSE IF (N enthält pures Literal ¬P) THEN return DPLL(N, A ∪ {P 7→ 0}) ELSE { Sei P undefinierte Aussagenvariable in N IF (DPLL(N, A(P 7→ 0))) THEN return “wahr” ELSE return DPLL(N, A ∪ {P 7→ 1}) 38 DPLL N: eine Menge von Klauseln, A partielle Wertebeleung Programm DPLL(N, A): IF (alle Klauseln in N wahr in A) THEN Return “wahr” ELSE IF (eine Klausel in N falsch in A) Return “falsch” ELSE IF (N enthält Einerklausel {P}) THEN return DPLL(N, A ∪ {P 7→ 1}) ELSE IF (N enthält Einerklausel {¬P}) THEN return DPLL(N, A ∪ {P 7→ 0}) ELSE IF (N enthält pures Literal P) THEN return DPLL(N, A ∪ {P 7→ 1}) ELSE IF (N enthält pures Literal ¬P) THEN return DPLL(N, A ∪ {P 7→ 0}) ELSE { Sei P undefinierte Aussagenvariable in N IF (DPLL(N, A(P 7→ 0))) THEN return “wahr” ELSE return DPLL(N, A ∪ {P 7→ 1}) Am Anfang: A = ∅ DPLL(N, ∅) 39