Logik für Informatiker

Werbung
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
Herunterladen