Logik für Informatiker Wintersemester 2012/13 Logik für Informatiker im Wintersemester 2012/13 Prof. Dr. Dietmar Seipel Prof. Dr. Dietmar Seipel Logik für Informatiker Wintersemester 2012/13 Inhaltsverzeichnis Vorwort v 1 Aussagenlogik 1 1.1 Grundbegriffe der Aussagenlogik . . . . . . . . . . . . . . . 1 1.2 Äquivalenz und Normalformen . . . . . . . . . . . . . . . . 34 1.3 Hornformeln . . . . . . . . . . . . . . . . . . . . . . . . . 71 1.4 Minimale Modelle für Klauselmengen . . . . . . . . . . . . 86 1.5 Der Endlichkeitssatz (Kompaktheitssatz) . . . . . . . . . . . 107 1.6 Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Prof. Dr. Dietmar Seipel ii Logik für Informatiker Wintersemester 2012/13 2 Prädikatenlogik 145 2.1 Grundbegriffe der Prädikatenlogik . . . . . . . . . . . . . . 146 2.2 Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . 174 2.3 Unentscheidbarkeit . . . . . . . . . . . . . . . . . . . . . . 204 2.4 Herbrand–Theorie . . . . . . . . . . . . . . . . . . . . . . . 209 2.5 Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 2.6 Hyperresolution für Hornformeln . . . . . . . . . . . . . . . 274 Prof. Dr. Dietmar Seipel iii Logik für Informatiker Wintersemester 2012/13 3 Logikprogrammierung 298 3.1 Grundlagen von P ROLOG . . . . . . . . . . . . . . . . . . . 299 3.2 SLD– und SLDNF–Resolution . . . . . . . . . . . . . . . . 336 3.3 Suche in Graphen . . . . . . . . . . . . . . . . . . . . . . . 379 3.4 Sortieren und Suchbäume . . . . . . . . . . . . . . . . . . . 390 Literatur Prof. Dr. Dietmar Seipel 408 iv Logik für Informatiker Wintersemester 2012/13 Vorwort Anwendungen: • Zermelo und Fraenkel: Axiome der Mengenlehre • Formulierung von Theoremen: Fermat • Theorembeweisen • Boolesche Schaltkreise: Analyse und Optimierung • Datenbanken: S QL • Logikprogrammierung: P ROLOG • Semantic Web: Beschreibungslogiken, OWL, S WRL • ... Prof. Dr. Dietmar Seipel v Logik für Informatiker Wintersemester 2012/13 Mathematische Axiome und Theoreme Die Russellsche Antinomie ist ein von Bertrand Russell und Ernst Zermelo entdecktes Paradoxon der naiven Mengenlehre, das Russell 1903 publizierte. Dies führte zur Entwicklung der axiomatischen Mengenlehre. Die Logik bietet einen exakten Formalismus zur Repräsentation und Verarbeitung von mathematischem Wissen in Form von • Axiomen und • Theoremen. Beim Theorembeweisen können mit Hilfe von Kalkülen automatisch neue Theoreme aus den Axiomen und den bereits bekannten Theoremen hergeleitet werden. Durch die steigende Rechnerleistung ist zu erwarten, daß zukünftig verstärkt Theoreme automatisch oder semi–automatisch bewiesen werden können. Prof. Dr. Dietmar Seipel vi Logik für Informatiker Wintersemester 2012/13 Zermelo und Fraenkel: Axiome der Mengenlehre (vgl. Wikipedia) ZF hat unendlich viele Axiome, da zwei Axiomenschemata (8. und 9.) verwendet werden, die zu jedem Prädikat mit bestimmten Eigenschaften je ein Axiom angeben. Als logische Grundlage dient die Prädikatenlogik der ersten Stufe mit Identität und dem undefinierten Elementprädikat ∈. Die Infix–Notation A ∈ B ist gleichbedeutend mit der Präfix–Notation ∈ (A, B). 1. Extensionalitätsaxiom oder Axiom der Bestimmtheit: Zwei Mengen sind genau dann gleich, wenn sie dieselben Elemente enthalten. ∀A ∀B (A = B ←→ ∀C (C ∈ A ←→ C ∈ B)) Prof. Dr. Dietmar Seipel vii Logik für Informatiker Wintersemester 2012/13 2. Leermengenaxiom oder Nullmengenaxiom: Es gibt eine Menge ohne Elemente. ∃B ∀A ¬(A ∈ B) Aus dem Extensionalitätsaxiom folgt unmittelbar die Eindeutigkeit dieser Menge B, das heißt, daß es auch nicht mehr als eine solche Menge gibt. Diese wird meist als ∅ geschrieben und leere Menge genannt. Das bedeutet: Die leere Menge ist in ZF das einzige Urelement. Andere Urelemente sind nur beim allgemeineren originalen Axiom der Bestimmtheit von Zermelo möglich. Prof. Dr. Dietmar Seipel viii Logik für Informatiker Wintersemester 2012/13 3. Paarmengenaxiom: Für alle A und B gibt es eine Menge C, die genau A und B als Elemente hat. ∀A ∀B ∃C ∀D (D ∈ C ←→ (D = A ∨ D = B)) Auch diese Menge C ist eindeutig bestimmt. Sie wird geschrieben als {A, B}. Die Menge {A, A} wird üblicherweise als {A} geschrieben. 4. Vereinigungsaxiom: Für jede Menge A gibt es eine Menge B, die genau die Elemente der Elemente von A als Elemente enthält. ∀A ∃B ∀C (C ∈ B ←→ ∃D (D ∈ A ∧ C ∈ D)) Auch die Menge B ist eindeutig bestimmt und heißt die Vereinigung S der Elemente von A, geschrieben als A. Zusammen mit dem S Paarmengenaxiom lässt sich die Vereinigung A ∪ B := {A, B} definieren. Prof. Dr. Dietmar Seipel ix Logik für Informatiker Wintersemester 2012/13 5. Unendlichkeitsaxiom: Es gibt eine (induktive) Menge A, die • die leere Menge ∅ und • mit jedem Element x auch die Menge x ∪ {x} enthält. ∃A ( ∃ X ∈ A ∀ Y ∈ A ¬(Y ∈ X) ∧ ∀X (X ∈ A → X ∪ {X} ∈ A) ) Es gibt viele derartige Mengen. Der Schnitt aller dieser Mengen ist die kleinste Menge mit diesen Eigenschaften und bildet die Menge der natürlichen Zahlen; die Bildung der Schnittmenge erfolgt durch Anwendung des Aussonderungsaxioms (s.u.). Die natürlichen Zahlen werden also dargestellt durch IN := {∅, {∅}, {∅, {∅}}, {∅, {∅}, {∅, {∅}}} , . . . }. Prof. Dr. Dietmar Seipel x Logik für Informatiker Wintersemester 2012/13 Die weiteren Axiome (6. bis 10.) führen wir ohne prädikatenlogische Definition der Vollständigkeit halber auf: 6. Potenzmengenaxiom, 7. Fundierungsaxiom oder Regularitätsaxiom, 8. Aussonderungsaxiom, 9. Ersetzungsaxiom (Fraenkel), 10. Auswahlaxiom. Prof. Dr. Dietmar Seipel xi Logik für Informatiker Wintersemester 2012/13 6. Potenzmengenaxiom: Für jede Menge A gibt es eine Menge P , deren Elemente genau die Teilmengen von A sind. 7. Fundierungsaxiom oder Regularitätsaxiom: Jede nichtleere Menge A enthält ein Element B, so dass A und B disjunkt sind. Das Element B, welches zu A disjunkt ist, ist im allgemeinen nicht eindeutig bestimmt. Das Fundierungsaxiom verhindert, dass es unendliche oder zyklische Folgen von Mengen gibt, bei denen jeweils eine in der nächsten enthalten ist, x1 ∋ x2 ∋ x3 ∋ . . . , denn dann könnte man eine Menge A = {x1 , x2 , x3 , . . . } bilden, die dem Axiom widerspricht: Für jedes xi ∈ A ist xi+1 ∈ xi ∩ A, die beiden Mengen sind also nicht disjunkt. Prof. Dr. Dietmar Seipel xii Logik für Informatiker Wintersemester 2012/13 8. Aussonderungsaxiom: Hier handelt es sich um ein Axiomenschema mit je einem Axiom zu jedem einstelligen Prädikat P : Zu jeder Menge A existiert eine Teilmenge B von A, die genau die Elemente C von A enthält, für die P (C) wahr ist. Aus dem Extensionalitätsaxiom ergibt sich sofort, daß es genau eine solche Menge gibt. Diese wird mit { C ∈ A | P (C) } notiert. 9. Ersetzungsaxiom (Fraenkel): Ist A eine Menge und wird jedes Element von A eindeutig durch eine beliebige Menge ersetzt, so geht A in eine Menge B über. Die Ersetzung wird präzisiert durch zweistellige Prädikate mit ähnlichen Eigenschaften wie eine Funktion, und zwar als Axiomenschema für jedes zweistellige Prädikat F : Die Menge B ist eindeutig bestimmt und wird als { Y | D ∈ A ∧ F (D, Y ) } notiert. Prof. Dr. Dietmar Seipel xiii Logik für Informatiker Wintersemester 2012/13 10. Auswahlaxiom: Ist A eine Menge von paarweise disjunkten nichtleeren Mengen, dann gibt es eine Menge, die genau ein Element aus jedem Element von A enthält. Dieses Axiom hat eine komplizierte Formel, die mit dem Eindeutigkeitsquantor ∃! etwas vereinfacht werden kann: Eine andere übliche verbale Formulierung des Auswahlaxioms lautet: Ist A eine Menge nichtleerer Mengen, dann gibt es eine Funktion f (von A in seine Vereinigung), die jedem Element B von A ein Element von B zuordnet (ein Element von B auswählt). In der Mathematik wird häufig auch das Auswahlaxiom benutzt, das ZF zu ZFC erweitert. Prof. Dr. Dietmar Seipel xiv Logik für Informatiker Wintersemester 2012/13 Theorem von Fermat Sei n > 2 eine beliebige ganze Zahl. Dann erfüllen keine 3 positiven ganzen Zahlen a, b und c die Gleichung an + b n = c n . Für n = 2 findet man leicht solche Zahlen (vgl. auch Satz von Pythagoras). ∀ n ∈ IN ( n > 2 −→ ¬ (∃ a ∈ IN+ ∃ b ∈ IN+ ∃ c ∈ IN+ (an + bn = cn )) ). Dieses Theorem wurde schon im Jahre 1637 von Pierre de Fermat postuliert, es konnte aber erst 1995 von Andrew Wiles vollständig bewiesen werden. Komplexitätstheorie Eine bislang immer noch unbeantwortete Frage der theoretischen Informatik ist, ob die beiden Komplexitätsklassen P und N P gleich sind. Prof. Dr. Dietmar Seipel xv Logik für Informatiker Wintersemester 2012/13 Logische Schaltkreise: Analyse und Optimierung Prof. Dr. Dietmar Seipel xvi Logik für Informatiker Wintersemester 2012/13 Datenbanken und Logikprogrammierung Relationen in einer Familien–Datenbank: PARENT NAME PARENT Elizabeth George Charles Elizabeth William Charles G RANDPARENT NAME G RANDPARENT Charles George William Elizabeth Die Menge aller logischen Fakten zu einem n–stelligen Prädikat – hier parent und grandparent – entspricht einer n–stelligen Relation: parent(’Elizabeth’, ’George’), parent(’Charles’, ’Elizabeth’), parent(’William’, ’Charles’). Analog: 3 Fakten für grandparent. Prof. Dr. Dietmar Seipel xvii Logik für Informatiker Wintersemester 2012/13 Familienstammbaum: - Charles Diana George - Elizabeth Philip - - William - Harry Anne - Andrew - Edward Der Familienstammbaum umfaßt hier 4 Generationen; Frauen sind in Rot, Männer in Blau angezeigt. Prof. Dr. Dietmar Seipel xviii Logik für Informatiker Wintersemester 2012/13 Berechnung der Großeltern: • in Datenbanken: Tupelkalkül { p1 .name, p2 .parent | parent(p1 ) ∧ parent(p2 ) ∧ p1 .parent = p2 .name } • in der Logikprogrammierung: Bereichskalkül { X, Z | parent(X, Y ) ∧ parent(Y, Z) } Tupelvariablen p1 und p2 ; Bereichsvariablen X, Y und Z. Im Tupelkalkül werden Verbundbedingungen explizit angegeben, wogegen ein Verbund im Bereichskalkül durch gleichbenannte Variablen gebildet wird. Prof. Dr. Dietmar Seipel xix Logik für Informatiker Wintersemester 2012/13 Logikprogrammierung: P ROLOG Prädikatensymbole: parent, grandparent, ancestor , alle 2–stellig Regeln: Kopf ← Rumpf , man sagt “ Kopf falls Rumpf ” Rumpf ist Konjunktion von Atomen oder deren Negation grandparent(X , Z ) ← parent(X , Y ) ∧ parent(Y , Z ) ancestor (X , Y ) ← parent(X , Y ) ancestor (X , Z ) ← ancestor (X , Y ) ∧ parent(Y , Z ) Bedeutung: ∀X, Y, Z : ((ancestor(X, Y ) ∧ parent(Y, Z)) → ancestor(X, Z)) Fakten: parent(’Elizabeth’, ’George’) parent(’Charles’, ’Elizabeth’) parent(’William’, ’Charles’) Prof. Dr. Dietmar Seipel xx Logik für Informatiker Wintersemester 2012/13 Z Man kann mittels der Regel grandparent(X , Z ) ← parent(X , Y ) ∧ parent(Y , Z ) z.B. folgende neuen Fakten ableiten. I parent 6 Y grandparent parent 6 X Dazu ersetzt man in der Regel die Variablen wie folgt: • Für { X 7→ ’Charles’, Y 7→ ’Elizabeth’, Z 7→ ’George’ } erhalten wir grandparent(’Charles’, ’George’) ← parent(’Charles’, ’Elizabeth’) ∧ parent(’Elizabeth’, ’George’). Mit Hilfe der entsprechenden Fakten aus dem Regelrumpf kann man dann grandparent(’Charles’, ’George’) ableiten. • Für { X 7→ ’William’, Y 7→ ’Charles’, Z 7→ ’Elizabeth’ } kann man grandparent(’William’, ’Elizabeth’) ableiten. Prof. Dr. Dietmar Seipel xxi Logik für Informatiker Wintersemester 2012/13 Datenbanken: S QL Falls parent als zweispaltige Relation PARENT realisiert wäre, so könnte man die Relation G RANDPARENT zu grandparent wie folgt in S QL berechnen: C REATE V IEW G RANDPARENT (NAME , G RANDPARENT ) A S S ELECT P1.NAME , P2.PARENT F ROM PARENT P1, PARENT P2 W HERE P1.PARENT = P2.NAME In der entsprechenden Regel wird die Bedingung P1.PARENT = P2.NAME durch die zweimalige Verwendung der Variablen Y ausgedrückt: grandparent(X , Z ) ← parent(X , Y ) ∧ parent(Y , Z ) Prof. Dr. Dietmar Seipel xxii Logik für Informatiker Wintersemester 2012/13 Vergleich: Transformiert man ein S ELECT–Statement nach P ROLOG, so ergibt sich folgendes: • der S ELECT–Teil entspricht dem Regelkopf, • der F ROM–Teil entspricht den Prädikaten im Regelrumpf, • Gleicheitsbedingungen aus dem W HERE–Teil können direkt durch gleiche P ROLOG–Variablen ausgedrückt oder wie alle weiteren arithmetischen Bedingungen in den Regelrumpf übernommen werden. In P ROLOG erfolgt die Selektion nicht über Attribute, sondern über die Argumentposition. Die Relation A NCESTOR kann man in S QL im allgemeinen nicht berechnen, da man nicht weis wieviele Stufen die zugrunde liegende Relation PARENT hat. Prof. Dr. Dietmar Seipel xxiii