Logik (SS 2017) - AG Softwaretechnik

Werbung
TU Kaiserslautern
Prof. Dr. A. Poetzsch-Heffter
Peter Zeller, M. Sc.
Fachbereich Informatik
AG Softwaretechnik
Lösungshinweise/-vorschläge zum
Übungsblatt 7: Logik (SS 2017)
Bearbeitung in der Übung am 26./29./30. Mai
Beachten Sie die Ersatztermine!
Aufgabe 1 Tableaux: Lemma von Hintikka
Beweisen Sie das Lemma von Hintikka (Folie 76):
Sei Θ ⊆ F vollständig. Dann gilt: Θ ist erfüllbar gdw. Θ ist offen.
Sie können im Beweis annehmen:
• Für eine α-Formel gilt immer: Bψ (α) = min Bψ α1 , Bψ α2
• Für eine β-Formel gilt immer: Bψ β = max Bψ β1 , Bψ β2
Hinweis: Die Vorlesungsfolien enthalten eine Beschreibung des Beweisansatzes:
Abgeschlossene Mengen sind per Definition unerfüllbar.
Für die Rückrichtung sei Θ eine vollständige und offene Menge.
Definiere




0 ¬p ∈ Θ
ψ(p) := 


1 sonst.
Die Variablenbelegung ψ ist wohldefiniert.
Zeige mit Noetherscher Induktion nach der Länge der Formeln, dass Bψ A = 1 für alle A ∈ Θ.
Lösungshinweise:
Beweis für die Richtung von rechts nach links:
(die andere Richtung folgt aus der Definition, siehe Vorlesung)
Sei Θ ⊆ F vollständig und offen.
Sei ψ eine Belegung mit ψ(p) = 0 falls (¬p) ∈ Θ und ψ(p) = 1 sonst.
Wir zeigen: Dann gilt für alle A ∈ Θ: Bψ A = 1
Beweis per Induktion über die Länge |A| der Formeln:
IA: |A| = 1, d.h. A ≡ p für eine Variable p ∈ V
Da Θ offen ist, gilt (¬p) < Θ
Also ist nach Definition ψ(p) = 1 und somit Bψ A = 1
IV: Sei n ∈ N mit n > 1. Dann gilt für alle A ∈ Θ mit |A| < n, dass Bψ A = 1
IS: Sie A ∈ Θ mit |A| = n gegeben. Zeige: Bψ A = 1
Fall 1: A ist ein Literal Wegen n > 1 gilt dann A ≡ ¬p für ein p ∈ V.
Dann ist nach Definition ψ(p) = 0 und somit Bψ A = 1.
Hinweis: Es ist auch möglich den IA hierher zu ziehen oder diesen Fall im IA zu betrachten, wenn die
IV entsprechend formuliert wird.
Fall 2: A ist α-Formel Es gilt |α1 | < n und α1 ∈ Θ, da Θ vollständig ist. Nach IV gilt dann
Bψ α1 = 1. Das gleiche gilt für α2 . Also ist Bψ A = 1.
Fall 3: A ist β-Formel Da Θ vollständig ist, gilt: β1 ∈ Θ oder β2 ∈ Θ.
Außerdem gilt: |β1 | < n und |β1 | < n. Nach IV gilt also Bψ β1 = 1 oder Bψ β2 = 1. Also ist
Bψ A = 1.
Aufgabe 2 Disjunktive Normalform (DNF)
Geben Sie für die folgende Formel eine äquivalente Formel in diskunktiver Normalform (DNF) an:
¬a ∧ ¬b → (a ∨ ¬c)
Erstellen Sie dazu ein Tableaux und lesen Sie daran die Formel in DNF ab (wie in der Vorlesung Folie 69).
Lösungshinweise:
¬a ∧ ¬b → (a ∨ ¬c)
¬a
¬b → (a ∨ ¬c)
a ∨ ¬c
¬¬b
b
a
¬c
Aus den Ästen ohne Widerspruch lässt sich die DNF an den Literalen im Ast ablesen.
(¬a ∧ b) ∨ (¬a ∧ ¬c)
Aufgabe 3 Negationsnormalform (NNF)
a) Geben Sie zur folgenden Formel eine äquivalente Formel in Negationsnormalform (NNF) an:
¬ a ∨ b ∧ (b → c)
Lösungshinweise:
¬ a ∨ b ∧ (b → c)
|=
=| ¬a ∧ ¬ b ∧ (b → c)
|=
=| ¬a ∧ ¬b ∨ ¬(b → c)
|=
=| ¬a ∧ ¬b ∨ (b ∧ ¬c)
b) Zusatzaufgabe: Beweisen Sie:
Zu jeder Formel A ∈ F{¬,∧,∨,→} gibt es A0 ∈ F{¬,∧,∨} in NNF mit A |=
=| A0 und |A0 | ≤ 2 · |A|.
Siehe auch: Lemma 3.13 aus der Vorlesung, Folie 90.
Lösungshinweise:
Beweis per Induktion über die Länge von Formeln:
Wir betrachten alle Fälle im Induktionsschritt.
IV: Sei n ∈ N. Für alle Formeln A ∈ F{¬,∧,∨,→} mit |A| < n gelte: Es gibt A0 ∈ F{¬,∧,∨} in NNF mit
=| A0 und |A0 | ≤ 2 · |A| und falls A die Form A ≡ (¬B) hat, dann gilt |A0 | ≤ 3 + 2 · |B|.
A |=
IS: Zu zeigen: Dann gilt die Behauptung auch für Formeln mit Länge n.
Sei also A mit |A| = n gegeben.
Fall A ≡ pi
Dann ist A schon in NNF. Wähle also A0 ≡ A. Dann gilt |A0 | = 1 ≤ 2 = 2 · |A|.
Fall A ≡ (¬pi )
Dann ist A schon in NNF. Wähle also A0 ≡ A. Dann gilt |A0 | = 4 = 3 + |pi |.
Fall A ≡ ¬(B ∧ C)
=| (¬B) ∨ (¬C)
A ≡ ¬(B ∧ C) |=
Weil |(¬B)| < n gibt es nach IV B0 in NNF mit B0 |=
=| (¬B) und |B0 | ≤ 3 + 2 · |B|.
Das gleiche gilt für (¬C).
Wähle A0 ≡ (B0 ∨ C 0 ).
Dann ist A0 in NNF und es gilt A0 |=
=| A.
Außerdem gilt für die Länge:
|A0 | = (B0 ∨ C 0 ) = 3 + |B0 | + |C 0 | ≤ 3 + 3 + 2 · |B| + 3 + 2 · |C| = 9 + 2 · |B| + 2 · |C|
2 · |(B ∧ C)| = 2 · 3 + |B| + |C| = 6 + 2 · |B| + 2 · |C|
Und somit |A0 | ≤ 3 + 2 · |(B ∧ C)|.
Fall A ≡ ¬(B ∨ C)
=| (¬B ∧ ¬C).
Analog zu oben mit A |=
Fall A ≡ ¬(B → C)
Wieder ähnlich zu oben, aber nur die rechte Teilformel wird negiert.
A ≡ ¬(B → C) |=
=| B ∧ (¬C)
Weil |B| < n gibt es nach IV B0 in NNF mit B0 |=
=| B und |B0 | ≤ 2 · |B|.
Weil |(¬C)| < n gibt es nach IV C 0 in NNF mit C 0 |=
=| (¬C) und |C 0 | ≤ 3 + 2 · |C|.
Wähle A0 ≡ (B0 ∧ C 0 ).
Dann ist A0 in NNF und es gilt A0 |=
=| A.
Außerdem gilt für die Länge:
|A0 | = (B0 ∧ C 0 ) = 3 + |B0 | + |C 0 | ≤ 3 + 2 · |B| + 3 + 2 · |C| = 6 + 2 · |B| + 2 · |C|
2 · |(B → C)| = 2 · 3 + |B| + |C| = 6 + 2 · |B| + 2 · |C|
Und somit |A0 | ≤ 3 + 2 · |(B ∧ C)|.
Fall A ≡ ¬(¬B)
Nach IV gibt es B0 |=
=| B in NNF und |B0 | ≤ 2 · |B|.
Wähle A0 ≡ B0 |=
=| A.
Dann gilt |A0 | = |B0 | ≤≤ 2 · |B| und 3 + 2 · |(¬B) = 3 + 2 · (3 + |B|) = 9 + 2 · |B|.
Also gilt |A0 | ≤ 3 + 2 · |(¬B)|
Fall A ≡ (B ∧ C)
=| B und |B0 | ≤ 2 · |B|.
Weil |B| < n gibt es nach IV B0 in NNF mit B0 |=
Das Gleiche gilt für C.
Wähle dann A0 ≡ (B0 ∧ C 0 ).
Es gilt |A0 | = 3 + |B0 | + |C 0 | ≤ 3 + 2 · |B| + 2 · |C| ≤ 2 · 3 + |B| + |C| = 2 · |A|.
Fall A ≡ (B ∨ C)
Analog zu oben.
Fall A ≡ (B → C)
=| (¬B ∨ C).
Ähnlich wie oben mit A |=
Es gilt |A0 | = 3 + |B0 | + |C 0 | ≤ 3 + 3 + 2 · |B| + 2 · |C| = 2 · 3 + |B| + |C| = 2 · |A|.
Lösungshinweise:
Alternative Lösung, die Ausnutzt, dass sich Variablenzahl und Zahl der binären Operatoren beim Umformen
zu NNF nicht ändern.
Wir geben zunächst eine rekursive Funktion nnf an, welche eine Formel in NNF bringt:
nnf ¬(A ∧ B) ≡ nnf ¬A ∨ nnf ¬B
nnf ¬(A ∨ B) ≡ nnf ¬A ∧ nnf ¬B
nnf ¬(A → B) ≡ nnf A ∧ nnf ¬B
nnf ¬(¬A) ≡ nnf A
nnf (¬pi ) ≡ ¬pi
nnf (A ∧ B) ≡ nnf A ∧ nnf B
nnf (A ∨ B) ≡ nnf A ∨ nnf B
nnf (A → B) ≡ nnf ¬A ∨ nnf B
nnf pi ≡ pi
Per Induktion lässt sich leicht zeigen, dass diese Funktion logisch äquivalente Formeln in NNF liefert.
Zu bleiben zeigt also noch, dass die Länge sich höchstens verdoppelt.
Wir wollen hier ausnutzen, dass sich die Länge einer Formel aus der Anzahl der binären Operatoren
bop, der Anzahl der Negation neg und der Anzahl der Variablen var berechnen lässt und beweisen
dazu zunächst die folgenden Hilfs-Aussagen (jeweils per Induktion):
1. Länge von A berechnen:
|A| = 3 ∗ bop(A) + 3 ∗ neg(A) + var(A)
2. Die Anzahl der binären Operatoren und Variablen ändert sich durch nnf nicht:
bop(nnf A ) = bop(A) und var(nnf A ) = var(A)
3. Für eine Formel in NNF gibt es höchstens so viele Negationen wie Variablen:
neg(A) ≤ var(A) für A in NNF.
Zu zeigen: |nnf A | ≤ 2 · |A|
|nnf A |
1.
= 3 · bop(nnf A ) + 3 · neg(nnf A ) + var(nnf A )
2.
= 3 · bop(A) + 3 · neg(nnf A ) + var(A)
3.
≤ 3 · bop(A) + 3 · var(nnf A ) + var(A)
2.
= 3 · bop(A) + 3 · var(A) + var(A)
= 2 · (3 · bop(A) + 3 · neg(A) + var(A)) + 3 − var(A) − 6 · neg(A)
= 2 · |A| + 3 − var(A) − 6 · neg(A)
Wenn es mehr als 2 Variablen oder mindestens eine Negation gibt, folgt aus obiger Berechnung, dass
|nnf A | ≤ 2 · |A|.
Die restlichen Fälle (keine Negation und höchstens 2 Variablen) lassen sich leicht durch eine Fallunterscheidung prüfen. Dann ist nämlich A ≡ pi , A ≡ (pi ∧ p j ), A ≡ (pi ∨ p j ) oder A ≡ (pi → p j ) für
irgendwelche pi , p j ∈ V.
Für den Fall A ≡ (pi → p j ) gilt |A| = 5 und |nnf A | = 8, weil nnf A = (¬pi ) ∨ p j .
Die anderen Fälle sind analog.
Herunterladen