Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Einführung in die Logik
Prof. Janis Voigtländer � Folienversion: 10.01.2022, 15:11:28 +00:00
Einführung in die Logik
Organisatorisches
Logik Organisatorisches 2
Mit wem haben Sie es hier zu tun?
Dozent: Prof. Dr. Janis Voigtländer
Raum LF 233
E-Mail: [email protected]
Übungsleitung und Tutorium: M.Sc. Oliver Westphal
Raum LF 232
E-Mail: [email protected]
Logik Organisatorisches 3
Und wer sind Sie?
Meines Wissens zum allergrößten Teil:
Bachelor-Studierende „Komedia“ (vorwiegend 1. Semester)
Falls Sie im Studiengang „Angewandte Informatik“ sind, haben Sie sichwahrscheinlich verirrt und suchen eigentlich die Lehrveranstaltung „Logik“von Frau Prof. König.
Logik Organisatorisches 4
Zur Lehrveranstaltung
Form:
2 V + 1 Ü
Vorlesung:donnerstags, 8:30 – 10:00, LB 107, voraussichtlich 15 Termine
Übungen:Abgaben (elektronisch) zu Übungsblättern mit anschließenderKorrektur und Besprechung in Präsenz
zusätzlich Tutorium:
demnächst montags, 16:15 – 17:45, LB 104
Videos:
gibt es teils aus dem Vorjahr, sowohl zum Vorlesungs- als auch zumÜbungsbetrieb
Logik Organisatorisches 5
Lernplattform Moodle
Wir verwenden Moodle, um
Materialien zur Lehrveranstaltung sowie die Aufgabenblätter jeweilsaktuell zur Verfügung zu stellen und
Übungseinreichungen elektronisch abgeben zu lassen.
Außerdem gibt es im Moodle-Kurs ein Ankündigungsforum.
Logik Organisatorisches 6
Hinweise zu den Übungen
Machen Sie die Übungsaufgaben!
Weitere Hilfestellung können Sie bei Bedarf in den Lern- undDiskussionszentren (LuDi Informatik, Komedia + LuDi Mathematik)erhalten: Infos unter https://udue.de/ludi
Wenn Sie die schriftlichen Übungsaufgaben in Gruppen bearbeiten,geben Sie bitte pro Gruppe nur einmal ab.
Das erste Übungsblatt wird zeitnah veröffentlicht.
Schriftliche Einreichungen sind jeweils bis zu einer verkündeten Fristmöglich, immer als einzelne PDF-Datei über Moodle.
Zusätzlich: „Autotool“-Aufgaben, dazu Details demnächst.
Logik Organisatorisches 7
Klausur
Die Lehrveranstaltung wird durch eine 90-minütige schriftliche Klausur amEnde des Semesters geprüft.
Der derzeitige Planungsstand für den Klausurtermin ist Mittwoch,2. März 2022, 08:30 Uhr.
Die Anmeldung erfolgt über das Prüfungsamt.
Logik Organisatorisches 8
Hinweise zu Kommunikationswegen
In den meisten Fällen ist eine Frage in/nach Vorlesung oder Übungsinnvoller als eine E-Mail an mich oder die Übungsleitung bzw.Tutor/innen.
E-Mails von anderen als uni-due.de Adressen werden gänzlichignoriert.
Umgekehrt sollten Sie Ihre uni-due.de E-Mails mindestenswerktäglich abholen.
Logik Organisatorisches 9
Inhaltliche Übersicht I
AussagenlogikSprache der Aussagenlogik (AL)Wahrheitstafeln, Status von FormelnNormalformen und ÄquivalenzenResolutionsverfahren der ALAL-Hornformeln und der Markierungsalgorithmus
Logikprogrammierung in PrologSprachelementeProlog-AusführungProgrammieren mit RelationenRekursion und ListenverarbeitungGenerate-and-Test
Logik Organisatorisches 10
Inhaltliche Übersicht II
PrädikatenlogikSprache der Prädikatenlogik (PL)Variablen und QuantorenStatus von FormelnNormalformen und ÄquivalenzenResolutionsverfahren der PL
Logik Organisatorisches 11
Literatur
Es existieren sehr viele Lehrbücher zur Logik „in unserem Sinne“!
Geeignet sind zum Beispiel:
Kreuzer, Kühling: Logik für Informatiker. Pearson, 2006.
Uwe Schöning: Logik für Informatiker. Spektrum, 2000.
Logik Organisatorisches 12
Warum diese Lehrveranstaltung?
Aus dem Modulhandbuch des Komedia-Studiengangs:
Logik-Kalküle bilden die Grundlage für verschiedene Anwen-dungsbereiche der Informatik, z.B. in den Bereichen Datenbank-systeme oder Wissensrepräsentation. Die Studierenden sollenmit logikbasierten Verfahren vertraut gemacht werden und sollenverschiedene Verfahren und Kalküle zur Lösung von Grundauf-gaben (wie Bestimmung von Modellen, Unerfüllbarkeit) anwen-den können.
Logik Inhaltliche Einführung 13
Warum diese Lehrveranstaltung?
Wenn Sie an Informatik und Logik denken, denken Sie vielleicht als erstesan so etwas:
Uns geht es jedoch vor allem um symbolische Logik.
Viel Motivation, und so manches Beispiel, wird aus dem Bereichsprachlichen Schlussfolgerns kommen.
Logik Inhaltliche Einführung 14
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 15
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 16
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 17
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 18
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 19
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 20
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 21
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 22
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 23
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 24
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 25
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 26
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 27
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 28
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 29
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 30
Ein berühmtes Rätsel
Logik Inhaltliche Einführung 31
Ein berühmtes Rätsel
Einige der angewendeten „Strategien“:
Repräsentation von sprachlichen Aussagen in „atomarer“ bzw.kompakter Form (hier: als Tabelleneinträge)
Exploration von Alternativen (z.B. bezüglich ivory und green)
direkte Schlussfolgerungen (z.B. bezüglich green⇒ coffee)
Aufdecken und Ausnutzen von Widersprüchen
Ausschlussverfahren (z.B. bezüglich yellow)
Logik Inhaltliche Einführung 32
Syllogismen
Solche Art der sprachlichen direkten Schlussfolgerungen/Argumentationnennt man „Syllogismen“:
bei Aristoteles:Wenn alle Menschen sterblich sind und Sokrates ein Mensch ist,dann ist Sokrates sterblich.
im Rätsel:Wenn wer im grünen Haus wohnt Kaffee trinkt, und X im grünenHaus wohnt, dann trinkt X Kaffee.
Logik Inhaltliche Einführung 33
Syllogismen
Weitere Syllogismen:
Alle Philosophen sind Menschen.Alle Menschen sind sterblich.Alle Philosophen sind sterblich.
Keine Blume ist ein Tier.Alle Hunde sind Tiere.Keine Blume ist ein Hund.
Alle Delfine sind Säugetiere.Alle Delfine leben im Meer.Einige Säugetiere leben im Meer.
Logik Inhaltliche Einführung 34
Syllogismen
Angenommen, Delfine sind leider ausgestorben. Was wäre dann, stattdes letzten Syllogismus von eben, mit folgenden Varianten?
Alle Elefanten sind Säugetiere.Alle Elefanten leben im Meer.Einige Säugetiere leben im Meer.
Alle Tomaten sind Säugetiere.Alle Tomaten leben im Meer.Einige Säugetiere leben im Meer.
Alle Aliens sind Säugetiere.Alle Aliens leben im Meer.Einige Säugetiere leben im Meer.
Logik Inhaltliche Einführung 35
Weitere „bizarre“ Aussagen
Was halten Sie denn von folgender Aussage?
Wenn der Mond grün ist, haben wir Donnerstag.
Oder von folgender?
Weil der Mond grün ist, haben wir Donnerstag.
Oder von folgender?
Weil der Mond nicht grün ist, haben wir Donnerstag.
In der Tat eignet sich Logik zur Untersuchung der „wirklichen Bedeutung“von sprachlichen Mitteln/Begriffen wie „wenn“, „weil“, „sofern“, „nur falls“,aber auch „oder“, „entweder-oder“ und sogar auch „aber“, . . .
Logik Inhaltliche Einführung 36
Probleme mit natürlicher Sprache
Andererseits hat natürliche Sprache, etwa auf Grund ihrer Struktur (oftmangelnd), auch grundsätzliche Probleme, wie fehlende Eindeutigkeit.
Beispiel:
Ich sah den Mann auf dem Berg mit dem Fernrohr.
Logik Inhaltliche Einführung 37
Probleme mit natürlicher Sprache
(((Ich sah den Mann) auf dem Berg) mit dem Fernrohr)
Logik Inhaltliche Einführung 38
Probleme mit natürlicher Sprache
((Ich sah (den Mann auf dem Berg)) mit dem Fernrohr)
Logik Inhaltliche Einführung 39
Probleme mit natürlicher Sprache
((Ich sah den Mann) (auf dem Berg mit dem Fernrohr))
Logik Inhaltliche Einführung 40
Probleme mit natürlicher Sprache
(Ich sah ((den Mann auf dem Berg) mit dem Fernrohr))
Logik Inhaltliche Einführung 41
Probleme mit natürlicher Sprache
(Ich sah (den Mann (auf dem Berg mit dem Fernrohr)))
Logik Inhaltliche Einführung 42
Probleme mit natürlicher Sprache
Natürliche Sprache ist einfach nicht immer eindeutig.
(((Ich sah den Mann) auf dem Berg)mit dem Fernrohr)
((Ich sah (den Mann auf dem Berg))mit dem Fernrohr)
((Ich sah den Mann) (auf dem Bergmit dem Fernrohr))
(Ich sah ((den Mann auf dem Berg)mit dem Fernrohr))
(Ich sah (den Mann (auf dem Bergmit dem Fernrohr)))
mindestens fünfmögliche
Interpretationen
Logik Inhaltliche Einführung 43
Aussagenlogik versus Prädikatenlogik
Aussagenlogik:
Aussagen, die prinzipiell entweder wahr oder falsch sein können:„es regnet“ – R, „die Straße ist nass" – N
Verknüpfung solcher Aussagen mit einfachen Operatoren:„Es regnet und die Straße ist nass.“ – R ∧ N„Wenn die Straße nicht nass ist, dann regnet es nicht.“ – ¬N⇒¬R
Prädikatenlogik:
zusätzlich Aussagen über Beziehungen zwischen Objekten sowieexistentielle Aussagen und universelle Aussagen:„Für jede natürliche Zahl x gilt, dass es eine natürliche Zahl y gibt, sodass x kleiner als y ist.“ – ∀x : ∃y : (x < y)
Logik Aussagenlogik 44
Aussagenlogik
Entsprechung einiger der Strategien aus dem Einstein-Rätsel:
Repräsentation von sprachlichen Aussagen in „atomarer“ Form:A, B, R, N etc., später auch A1, A2, . . . , Ai
Exploration von Alternativen:A ∨ ¬A (Prinzip des ausgeschlossenen Dritten)
direkte Schlussfolgerungen:(A ∧(A⇒ B))⇒ B (Modus Ponens)
Aufdecken und Ausnutzen von Widersprüchen:¬(B ∧ ¬B) (Prinzip des ausgeschlossenen Widerspruchs)
Ausschlussverfahren:((C ∨ D) ∧ ¬C)⇒ D
Logik Aussagenlogik 45
Aussagenlogik
Noch eine Logelei, diesmal von „Zweistein“ (siehe Artikel in Moodle):
B Eine Logelei von Zweistein
Unter dem Pseudonym Zweistein veroffentlichte der unlangst verstorbene[43] Thomas von Ran-dow (1921 – 2009) in der Wochenzeitung DIE ZEIT kleine Logik- und Mathematikaufgaben[59, 60]. Hier eine typische Logikaufgabe, die sehr schon zeigt, daß die Bedeutung der Objekte,die man in der Logik behandelt, irrelevant ist. Zweistein benutzte gern bedeutungslose Phantasie-namen, so daß die Aufgabenstellung auf die reine Form reduziert wurde. [60, S. 74]:
1. Wer gedrupt ist, makst nicht.2. Wer knaselt, hat eine Mause.3. Jeder, der nicht deuken kann, makst.4. Alle Drumser nehmen Pfuff.5. Wer kein Pli ist, matupelt nicht.6. Kein betuxter Klep kann deuken.7. Wer Pfuff nimmt, ist gedrupt.8. Nur betuxte Kleps knaseln nicht.9. Jeder Pli ist ein Drumser.
Aus diesen Aussagen laßt sich ein Zusammenhang zwischen �matupeln� und �eine Mause ha-ben� ableiten. Wie lautet diese Aussage?
Losung Einige der Aussagen sind in der Form ¬A → ¬B geschrieben (5, 6). Es empfiehlt sich,diese
”richtigzustellen“ in die Form B → A, also zum Beispiel
¬5. Wer matupelt, ist ein Pli.
Also: ¬5: Wer matupelt, ist ein Pli.Aussagen 9 und 4 liefern: Ein Pli nimmt Pfuff.7 und 1: Wer Pfuff nimmt, makst nicht.3: Wer nicht makst, kann deuken.6: Wer deuken kann, ist kein betuxter Klep.8: Wer kein betuxter Klep ist, knaselt.2: Wer knaselt, hat eine Mause.Schlußfolgerung: Wer matupelt, der hat eine Mause.
C Das Paradoxon des Sancho Pansa
In dem bekannten Buch Don Quixote [9] wird ein klassisches Paradoxon durch Sancho Pansaeiner uberraschenden Losung zugefuhrt:
Zehntes Buch, Achtzehntes Kapitel Fortgesetzte Regierung des SanchoPansa und andre angenehme Begebenheiten.
. . . Wenn jemand uber diese Brucke von einem Ende zum andern geht, so soll er vorherschworen, wohin er geht und was sein Geschaft. Ist sein Schwur wahr, so lasse manihn ziehn, sagt er eine Luge, so soll er an den Galgen gehangt werden, der dort steht,ohne alle Barmherzigkeit. Dieses Gesetz und sein strenger Inhalt waren bekannt, vielegingen uber die Brucke, man sah, daß das, was sie beschworen hatten, die Wahrheitsei, und die Richter ließen sie ungehindert ziehn. Es geschah darauf, daß man einemManne den Eid abnahm, welcher schwur und sagte, daß bei dem Schwure, welchen er
26
Logik Aussagenlogik 46
Aussagenlogik
Unter anderem erwartet uns in diesem Kapitel:
Syntax der Aussagenlogik:Was sind die Operatoren? Was ist eine Formel?Welche Formeln sind „wohl-aufgebaut“?
Semantik der Aussagenlogik:Was ist die Bedeutung einer Formel?Welche Formeln sind allgemeingültig, d.h. immer wahr?Welche Formeln sind unerfüllbar, d.h. immer falsch?Was liegt dazwischen?
Verfahren und Methoden, die den Grad der Gültigkeit oderErfüllbarkeit einer Formel überprüfen.
Logik Aussagenlogik 47
Syntax der Aussagenlogik
Eine atomare Formel hat die Form A oder B . . . oder Ai (mit i = 1,2,3, . . .).
Definition (Formel allgemein)
Formeln werden durch folgenden schrittweisen Prozess definiert:
1. Alle atomaren Formeln sind bereits Formeln.
2. Für alle Formeln F und G sind (F ) ∧(G) und (F ) ∨(G) wiederumauch Formeln.
3. Für jede Formel F ist auch ¬(F ) eine Formel.
Sprechweise:
(F ) ∧(G): „F und G“, „Konjunktion von F und G“
(F ) ∨(G): „F oder G“, „Disjunktion von F und G“
¬(F ): „nicht F “, „Negation von F “Logik Aussagenlogik – Syntax 48
Formeln als Syntaxbäume
Jede Formel kann auch durch einen Syntaxbaum dargestellt werden.
Beispiel: F = ¬((¬A4 ∨ A1) ∧ A3)
¬
¬
A4
∨ A3
∧
A1
Logik Aussagenlogik – Syntax 49
Syntax der Aussagenlogik
Anmerkungen:
Es werden noch weitere Operatoren hinzukommen, insbesondere„⇒ “ und „⇔ “, die aber in gewissem Sinne nur „Abkürzungen“ aufBasis der bisher vorgegebenen sind.
Zu einer gegebenen Formel lässt sich das Konzept der Teilformelbetrachten, nämlich ihrerseits wohl-aufgebaute „Ausschnitte“.
Zum Beispiel sind hier einige Teilformeln in (¬A ∨ B) ∧ C markiert:
(¬A ∨ B) ∧ C
(¬A ∨ B) ∧ C
(¬A ∨ B) ∧ C
Wohingegen etwa diese Markierung keiner Teilformel entspricht:
(¬A ∨ B) ∧ C
Logik Aussagenlogik – Syntax 50
Teilformeln
Die Teilformeln einer Formel F entsprechen den Teilbäumen desursprünglichen Syntaxbaums.
A4
¬
¬
∨ A3
∧
A4
A1A1
¬
¬
A4
∨ A3
∧
A1A3
¬
¬
A4
∨
∧
A3
A1
¬A4
¬
∨ A3
∧
A4
¬ A1¬A4 ∨ A1
¬
A3
∧
A4
∨
¬ A1
(¬A4 ∨ A1) ∧ A3
¬
A4
∨
¬
∧
A3
A1¬((¬A4 ∨ A1) ∧ A3)
¬
A4
∨
¬
∧
A3
A1
Logik Aussagenlogik – Syntax 51
Semantik der Aussagenlogik
Und was ist nun der Wahrheitswert einer Formel (oder ihrer Teilformeln)?
Kommt drauf an!
Diskussion am Beispiel:
Anne sagt: „Bettina lügt.“
Bettina sagt: „Claudia lügt.“
Claudia sagt: „Anne und Bettina lügen beide.“
Wer lügt denn nun?
Logik Aussagenlogik – Semantik 52
Semantik der Aussagenlogik
Wir bezeichnen die Elemente der Menge W = {0,1} als Wahrheitswerte,wobei 0 für falsch und 1 für wahr steht.
Sei M eine Menge von atomaren Formeln.
Eine Belegung von M ist dann eine Zuordnung α : M→W , womitgemeint ist, dass α für jedes Element aus M einen Wert aus W angibt.(zum Beispiel: „α(A) = 0, α(B) = 1, α(C) = 0“)
Sei nun M die Menge aller Formeln, die nur aus den atomaren Formeln inM aufgebaut sind.
Dann erweitern wir α zu einer Zuordnung α : M→W , um für jede Formeleinen Wahrheitswert zu erhalten.
Logik Aussagenlogik – Semantik 53
Semantik der Aussagenlogik
Die Definition dieser erweiterten Zuordnung:
α(A) = α(A) falls A ∈M eine atomare Formel ist
α((F ) ∧(G)) =
{1 falls α(F ) = 1 und α(G) = 10 sonst
α((F ) ∨(G)) =
{1 falls α(F ) = 1 oder α(G) = 10 sonst
α(¬(F )) =
{1 falls α(F ) = 00 sonst
Beobachtung: Der Wert von α für eine Formel hängt nur davon ab,wie α auf den in ihr vorkommenden atomaren Formelndefiniert ist.
Logik Aussagenlogik – Semantik 54
Verknüpfungstafeln
Die bei der Berechnung von α verwendeten Regeln kann man auch alsVerknüpfungstafeln / Wahrheitstafeln festhalten.
Die Tafeln für die Operatoren ∧ , ∨ , ¬ sind:
A B A ∧ B0 0 00 1 01 0 01 1 1
A B A ∨ B0 0 00 1 11 0 11 1 1
A ¬A0 11 0
Logik Aussagenlogik – Semantik 55
„Abkürzende“ Operatoren
Wir schreiben oft:
(F )⇒(G) für ¬(F ) ∨(G) (Implikation, Folgerung)
(F )⇔(G) für ((F )⇒(G)) ∧((G)⇒(F )) (Biimplikation, Äquivalenz)
Die entsprechenden Wahrheitstafeln für die so eingeführten Operatorensind:
A B A⇒ B0 0 10 1 11 0 01 1 1
A B A⇔ B0 0 10 1 01 0 01 1 1
Logik Aussagenlogik – Implikation und Biimplikation 56
„Abkürzende“ Operatoren
Für unser vorheriges Beispiel:
Anne sagt: „Bettina lügt.“
Bettina sagt: „Claudia lügt.“
Claudia sagt: „Anne und Bettina lügen beide.“
. . . haben wir dann: F = ((A⇔¬B) ∧(B⇔¬C) ∧(C⇔(¬A ∧ ¬B)))
A B C ¬A ¬B ¬C A⇔¬B B⇔¬C C⇔(¬A ∧ ¬B) F0 0 0 1 1 1 0 0 0 00 0 1 1 1 0 0 1 1 00 1 0 1 0 1 1 1 1 10 1 1 1 0 0 1 0 0 01 0 0 0 1 1 1 0 1 01 0 1 0 1 0 1 1 0 01 1 0 0 0 1 0 1 1 01 1 1 0 0 0 0 0 0 0
Logik Aussagenlogik – Implikation und Biimplikation 57
Genauere Betrachtung von Implikation
Zur Erinnerung, wir haben als abkürzende Schreibweise eingeführt:(F )⇒(G) für ¬(F ) ∨(G). Ist das überhaupt „logisch richtig“?
Nun, denken wir noch mal an folgenden Satz:Wenn der Mond grün ist, haben wir Donnerstag.
Als Elementaraussagen werden verwendet:
A: Der Mond ist grün. B: Wir haben Donnerstag.
Unter welchen der folgenden vier möglichen Konstellationen würden wirdem obigen Satz, also A⇒ B, zustimmen?
Der Mond ist nicht grün. Wir haben nicht Donnerstag. 3
Der Mond ist nicht grün. Wir haben Donnerstag. 3
Der Mond ist grün. Wir haben nicht Donnerstag. 7
Der Mond ist grün. Wir haben Donnerstag. 3
Logik Aussagenlogik – Implikation und Biimplikation 58
Genauere Betrachtung von Implikation
Noch mal als Wahrheitstafel:
A B A⇒ B0 0 10 1 11 0 01 1 1
Aber eben auch:
A B ¬A ¬A ∨ B0 0 1 10 1 1 11 0 0 01 1 0 1
Logik Aussagenlogik – Implikation und Biimplikation 59
Genauere Betrachtung von Implikation
Auch das Konzept der Kontraposition können wir uns so genaueranschauen:
A B A⇒ B ¬B ¬A ¬B ⇒ ¬A0 0 1 1 1 10 1 1 0 1 11 0 0 1 0 01 1 1 0 0 1
Es lässt sich aber auch gut aus der „Definition“, (F )⇒(G) := ¬(F ) ∨(G),ableiten:
A⇒ B steht für ¬A ∨ B,
¬B⇒¬A steht für ¬¬B ∨ ¬A,
und da ¬¬B gemäß doppelter Verneinung gerade B entspricht,„kommt das aufs selbe raus“.
Logik Aussagenlogik – Implikation und Biimplikation 60
Genauere Betrachtung von Implikation
Und bezüglich Biimplikation, (F )⇔(G) := ((F )⇒(G)) ∧((G)⇒(F )),können wir beobachten:
A B A⇒ B B ⇒ A (A⇒ B) ∧(B⇒ A)
0 0 1 1 10 1 1 0 01 0 0 1 01 1 1 1 1
Von früherer Folie:
A B A⇔ B0 0 10 1 01 0 01 1 1
Logik Aussagenlogik – Implikation und Biimplikation 61
Semantik der Aussagenlogik
Kehren wir noch mal zu diesem Beispiel zurück:
Anne sagt: „Bettina lügt.“
Bettina sagt: „Claudia lügt.“
Claudia sagt: „Anne und Bettina lügen beide.“
formalisiert als: F = ((A⇔¬B) ∧(B⇔¬C) ∧(C⇔(¬A ∧ ¬B)))
A B C ¬A ¬B ¬C A⇔¬B B⇔¬C C⇔(¬A ∧ ¬B) F0 0 0 1 1 1 0 0 0 00 0 1 1 1 0 0 1 1 00 1 0 1 0 1 1 1 1 10 1 1 1 0 0 1 0 0 01 0 0 0 1 1 1 0 1 01 0 1 0 1 0 1 1 0 01 1 0 0 0 1 0 1 1 01 1 1 0 0 0 0 0 0 0
Logik Aussagenlogik – Modelle und Status von Formeln 62
Semantik der Aussagenlogik
Kehren wir noch mal zu diesem Beispiel zurück, bzw. Variationen davon:
Anne sagt: „Bettina lügt.“
Bettina sagt: „Claudia lügt, aber Anne sagt die Wahrheit.“
Claudia sagt: „Anne und Bettina lügen beide.“
formalisiert als: F = ((A⇔¬B) ∧(B⇔(¬C ∧ A)) ∧(C⇔(¬A ∧ ¬B)))
A B C ¬A ¬B ¬C A⇔¬B . . . C⇔(¬A ∧ ¬B) F0 0 0 1 1 1 0 1 0 00 0 1 1 1 0 0 1 1 00 1 0 1 0 1 1 0 1 00 1 1 1 0 0 1 0 0 01 0 0 0 1 1 1 0 1 01 0 1 0 1 0 1 1 0 01 1 0 0 0 1 0 1 1 01 1 1 0 0 0 0 0 0 0
Logik Aussagenlogik – Modelle und Status von Formeln 63
Semantik der Aussagenlogik
Kehren wir noch mal zu diesem Beispiel zurück, bzw. Variationen davon:
Anne sagt: „Bettina lügt.“
Bettina sagt: „Anne und Claudia lügen beide.“
Claudia sagt: „Anne und Bettina lügen beide.“
formalisiert als: F = ((A⇔¬B) ∧(B⇔(¬C ∧ ¬A)) ∧(C⇔(¬A ∧ ¬B)))
A B C ¬A ¬B ¬C A⇔¬B . . . C⇔(¬A ∧ ¬B) F0 0 0 1 1 1 0 0 0 00 0 1 1 1 0 0 1 1 00 1 0 1 0 1 1 1 1 10 1 1 1 0 0 1 0 0 01 0 0 0 1 1 1 1 1 11 0 1 0 1 0 1 1 0 01 1 0 0 0 1 0 0 1 01 1 1 0 0 0 0 0 0 0
Logik Aussagenlogik – Modelle und Status von Formeln 64
Eigenschaften von Belegungen und Formeln
Eine Belegung α : M→{0,1} heißt passend zu einer Formel F fallsin M alle atomaren Teilformeln von F vorkommen.
Ist α zu F passend und gilt α(F ) = 1, so sagen wir F gilt unter α
bzw. α ist ein Modell für F , auch geschrieben als: α |= F .
Eine Formel heißt erfüllbar, wenn sie (mindestens) ein Modell besitzt.Ansonsten heißt sie unerfüllbar.
Eine Formel F heißt gültig (oder Tautologie), wenn α(F ) = 1 für allezu F passenden Belegungen.
Zwei Formeln F und G heißen (semantisch) äquivalent, wennα(F ) = α(G) für alle zu F und G passenden Belegungen.Wir schreiben dann F ≡G.
Logik Aussagenlogik – Modelle und Status von Formeln 65
Eigenschaften von Belegungen und Formeln
Sei F = (¬A1 ∨(A2 ∧ A3)).
Beispiele für „passende Belegung“?passende Belegung α : A1 7→ 1,A2 7→ 1,A3 7→ 0nicht passende Belegung α : A2 7→ 1,A3 7→ 1,A4 7→ 0
Beispiel für ein Modell für F?α : A1 7→ 0,A2 7→ 0,A3 7→ 0, weil damit α(F ) = 1
Status von F?erfüllbar, nicht unerfüllbarkeine Tautologie, nicht (allgemein)gültig
Logik Aussagenlogik – Modelle und Status von Formeln 66
Tautologien
Allgemeine, gültige Strategien wie für die Lösung des Einstein-Rätselssollten besser Tautologien sein. Und in der Tat:
Exploration von Alternativen / Prinzip des ausgeschlossenen Dritten:
A ¬A A ∨ ¬A0 1 11 0 1
direkte Schlussfolgerungen / Modus Ponens:
A B A⇒ B A ∧(A⇒ B) (A ∧(A⇒ B))⇒ B0 0 1 0 10 1 1 0 11 0 0 0 11 1 1 1 1
Logik Aussagenlogik – Modelle und Status von Formeln 67
Tautologien
. . .
Prinzip des ausgeschlossenen Widerspruchs:
B ¬B B ∧ ¬B ¬(B ∧ ¬B)
0 1 0 11 0 0 1
„allgemeines Ausschlussverfahren“:
C D C ∨ D (C ∨ D) ∧ ¬C ((C ∨ D) ∧ ¬C)⇒ D0 0 0 0 10 1 1 1 11 0 1 0 11 1 1 0 1
Logik Aussagenlogik – Modelle und Status von Formeln 68
Tautologien
. . .
transitives Schließen:
F = (((A⇒ B) ∧(B⇒ C))⇒(A⇒ C))
A B C A⇒ B B⇒ C (A⇒ B) ∧(B⇒ C) A⇒ C F0 0 0 1 1 1 1 10 0 1 1 1 1 1 10 1 0 1 0 0 1 10 1 1 1 1 1 1 11 0 0 0 1 0 0 11 0 1 0 1 0 1 11 1 0 1 0 0 0 11 1 1 1 1 1 1 1
Logik Aussagenlogik – Modelle und Status von Formeln 69
Status von Formeln
Formel
unerfüllbar(z.B. A ∧ ¬A)
erfüllbar
nichttautologisch
(z.B. A)
tautologisch(z.B. A ∨ ¬A)
Logik Aussagenlogik – Modelle und Status von Formeln 70
Status von Formeln
zum Durchdenken:
gültig erfüllbar unerfüllbar
AA ∨ BA ∨ ¬AA ∧ ¬AA⇒¬AA⇒ BA⇒(B⇒ A)
A⇒(A⇒ B)
A⇔¬A
Logik Aussagenlogik – Modelle und Status von Formeln 71
Status von Formeln
Gelten die folgenden Zusammenhänge, für beliebige Formeln F?
Ja/Nein Gegenbsp.
Wenn F gültig, dann F erfüllbarWenn F gültig, dann ¬F unerfüllbarWenn F erfüllbar, dann ¬F unerfüllbarWenn F nicht gültig, dann F unerfüllbarWenn F nicht gültig, dann ¬F erfüllbarWenn F unerfüllbar, dann ¬F erfüllbarWenn F unerfüllbar, dann ¬F gültig
Logik Aussagenlogik – Modelle und Status von Formeln 72
Status von Formeln
Spiegelungsprinzip:
¬FFG
gültigeFormeln
¬G
erfüllbare, abernicht gültige
Formeln
unerfüll-bareFormeln
Logik Aussagenlogik – Modelle und Status von Formeln 73
Status von Formeln
Wie kann man überprüfen, ob eine gegebene Formel F gültig bzw.erfüllbar oder unerfüllbar ist?
Eine Möglichkeit ist offenbar, die Wahrheitstafel aufzustellen. Allerdingswächst deren Größe exponentiell in der Anzahl der atomaren Formeln.
Denn, angenommen die Formel F enthält n verschiedene atomareFormeln, wie groß ist dann die Wahrheitstafel?
Die Anzahl der Zeilen ist 2n, und in jeder Zeile müssen dann ja nochdiverse Einträge befüllt werden.
Geht es auch effizienter?
Methoden und Verfahren, die den Grad der Gültigkeit oder Erfüllbarkeiteiner Formel überprüfen, sind weiterer Stoff dieser Lehrveranstaltung.
Logik Aussagenlogik – Modelle und Status von Formeln 74
Normalformen – Motivation
Bisher hatten wir (beliebig gebildete) Formeln und haben deren Semantikausgewertet, also im Wesentlichen die Wahrheitstafeln aufgestellt.
Es stellt sich die Frage, ob es denn umgekehrt zu jeder Wahrheitstafelauch eine Formel gibt. Oder mehrere? Ganz spezielle, die einemgewissen Schema folgen? Mit Verwendung aller eingeführten Operatoren,oder nur ausgewählter?
Auch wenn aus anderen Gründen (also nicht von einer Wahrheitstafelausgehend) eine Formel aufgestellt wird, kann es sein, dass nurbestimmte Operatoren verwendet werden sollen oder ein gewissessyntaktisches Schema unbedingt einzuhalten ist.
Zum Beispiel, . . .
Logik Aussagenlogik – Normalformen 75
Beispiel: Bedingungen in Moodle
In Moodle lassen sich einzelne Objekte (Textblöcke, Umfragen,Materialien, . . . ) mit Voraussetzungen versehen.
Dafür gibt es atomare Bedingungen, etwa folgende Arten:
und Operatoren zur Kombination:
Logik Aussagenlogik – Normalformen 76
Beispiel: Bedingungen in Moodle
Etwas genauer angeschaut, gibt es:
diverse „atomare Formeln“, unter anderem:
Ai : Zeitpunkt ist ab so-und-so¬Ai : Zeitpunkt ist vor so-und-so
Bj : Aktivität so-und-so wurde abgeschlossen¬Bj : Aktivität so-und-so noch nicht abgeschlossen
bestimmte Operatoren, unter anderem:
A1 ∧ . . . ∧ An : . . . muss alle erfüllen . . .¬(A1 ∧ . . . ∧ An) : . . . darf nicht alle erfüllen . . .
A1 ∨ . . . ∨ An : . . . muss mindestens eine erfüllen . . .
aber nicht alle denkbaren Operatoren, etwa keine Implikation,
und keine syntaktische Schachtelung.
Logik Aussagenlogik – Normalformen 77
Beispiel: Bedingungen in Moodle
In einem vergangenen Semester wollte ich ausdrücken, dass einegewisse Umfrage genau dann verfügbar sein soll, wenn:
die Umfrage noch nicht beantwortet wurde,
es vor dem 8. September ist,
und es nicht am 21. April zwischen 8:30 und 10:00 Uhr ist.
Reichen dafür die vorhandenen Ausdrucksmittel?
Erstes Problem:
Atomare Aussagen der Form „Datum ist zwischen . . . und . . . “ werden inMoodle nicht unterstützt, also die letzte Bedingung könnte man allenfallsmittels eines Operators aus einfacheren zusammenbauen.
Logik Aussagenlogik – Normalformen 78
Beispiel: Bedingungen in Moodle
Unter Verwendung folgender atomarer Aussagen:
A : Umfrage noch nicht abgeschlossenB : Zeitpunkt ist vor 8. SeptemberC : Zeitpunkt ist ab 8:30 Uhr am 21. AprilD : Zeitpunkt ist vor 10:00 Uhr am 21. April
würden wir gern ausdrücken: A ∧ B ∧ ¬(C ∧ D).
Jedoch:
Die Operatoren lassen sich in Moodle nicht schachteln, also es ist zumBeispiel nicht möglich, ¬(C ∧ D) in A ∧ B ∧ . . . einfach „einzusetzen“.
Auch diverse andere Ansätze, etwa Umformulierung der Formel zu¬(¬A ∨ ¬B ∨(C ∧ D)), scheiterten in der Umsetzung an mangelnderFlexibilität von Moodle beim „Zusammenklicken“.
Logik Aussagenlogik – Normalformen 79
Beispiel: Bedingungen in Moodle
Meine etwas getrickste Lösung letztlich:
. . . entspricht der Formel A ∧ B ∧(¬C ∨ ¬D).
Anmerkung: Das klappt so (per Sichtbarkeits-Schachtelung vonMoodle-Objekten) nur genau für Konjunktion, nicht für Disjunktion.
Relevantere Beobachtung:Verwendet habe ich somit letztlich eine Formel in KNF.
Logik Aussagenlogik – Normalformen 80
Normalformen
Ein Literal ist eine atomare Formel oder die Negation einer atomarenFormel. Wir sprechen von positiven und negativen Literalen.
Eine Formel F ist in konjunktiver Normalform (KNF), falls sie alsKonjunktion von Disjunktionen von Literalen Li,k aufgebaut ist:
F = (L1,1 ∨ . . . ∨ L1,n1) ∧(L2,1 ∨ . . . ∨ L2,n2) ∧ . . . ∧(Lm,1 ∨ . . . ∨ Lm,nm )
Eine Formel F ist in disjunktiver Normalform (DNF), falls sie alsDisjunktion von Konjunktionen von Literalen Li,k aufgebaut ist:
F = (L1,1 ∧ . . . ∧ L1,n1) ∨(L2,1 ∧ . . . ∧ L2,n2) ∨ . . . ∨(Lm,1 ∧ . . . ∧ Lm,nm )
Theorem: Zu jeder Formel gibt es eine äquivalente Formel in KNFund eine äquivalente Formel in DNF.
Logik Aussagenlogik – Normalformen 81
Beispiele KNF / DNF
(A1 ∧ A2) ∨(¬A1 ∧ A3) DNF
¬A1 ∨ A3 ∨(¬A1 ∧ A3) DNF
(¬A1 ∧ A2) ∨(¬A2 ∧(A3 ∨ ¬A3)) weder KNF, noch DNF
(¬A2 ∨ A3) ∧(A1 ∨ A4) KNF
(A1 ∨ A3 ∨ ¬A2 ∨ A4) ∧(¬A1 ∨ A4) KNF
(A1 ∧ ¬¬A3) ∨(¬A2 ∧ A4) weder KNF, noch DNF
¬A2 ∨ ¬A3 ∨ ¬A4 KNF und DNF
¬(A2 ∨ A3 ∨ A4) weder KNF, noch DNF
A1 KNF und DNF
Logik Aussagenlogik – Normalformen 82
Äquivalenzen
Angenommen, wir stehen vor dem Problem, für eine gegebene Formeleine äquivalente Formel in KNF zu finden. Wie könnten wir vorgehen?
Im Beispiel formte ich A ∧ B ∧ ¬(C ∧ D) zu A ∧ B ∧(¬C ∨ ¬D) um.
Warum durfte ich das, und welche anderen Umformungen sind erlaubt?
Zur Erinnerung:
Zwei Formeln F und G heißen (semantisch) äquivalent, wennα(F ) = α(G) für alle zu F und G passenden Belegungen α .Wir schreiben dann F ≡G.
Korrekte Umformungen sind immer auch „in Kontext“ erlaubt. Also wennwir ¬(C ∧ D)≡ (¬C ∨ ¬D) wissen, dann können wir das wie oben auchinnerhalb von A ∧ B ∧ . . . verwenden.
Logik Aussagenlogik – Äquivalenzen 83
Fundamentale Äquivalenzen der Aussagenlogik
Für aussagenlogische Formeln F ,G,H gelten folgende Äquivalenzen:
Teil I
(F ∧ F ) ≡ F(F ∨ F ) ≡ F (Idempotenz)
(F ∧G) ≡ (G ∧ F )
(F ∨G) ≡ (G ∨ F ) (Kommutativität)
((F ∧G) ∧ H) ≡ (F ∧(G ∧ H))
((F ∨G) ∨ H) ≡ (F ∨(G ∨ H)) (Assoziativität)
(F ∧(F ∨G)) ≡ F(F ∨(F ∧G)) ≡ F (Absorption)
Logik Aussagenlogik – Äquivalenzen 84
Fundamentale Äquivalenzen der Aussagenlogik
Teil II
(F ∧(G ∨ H)) ≡ ((F ∧G) ∨(F ∧ H))(F ∨(G ∧ H)) ≡ ((F ∨G) ∧(F ∨ H)) (Distributivität)
¬¬F ≡ F (Doppelnegation)
¬(F ∧G) ≡ (¬F ∨ ¬G)
¬(F ∨G) ≡ (¬F ∧ ¬G) (de Morgansche Regeln)
(F ∨G) ≡ F , falls F gültig(F ∧G) ≡ G, falls F gültig (Tautologieregeln)
(F ∨G) ≡ G, falls F unerfüllbar(F ∧G) ≡ F , falls F unerfüllbar (Unerfüllbarkeitsregeln)
Logik Aussagenlogik – Äquivalenzen 85
Algorithmus zum Erzeugen einer KNF
Gegeben sei eine Formel F . Führe folgende Schritte durch:
0. Eliminiere ⇒ und ⇔ mittels ihrer jeweiligen „Definition“.
1. Ersetze jede Teilformel der Bauart ¬¬G durch G.
2. Ersetze jede Teilformel der Bauart ¬(G ∧ H) durch (¬G ∨ ¬H).Wende für hierdurch gegebenenfalls entstehende Teilformeln derBauart ¬¬K jeweils Schritt 1 an.
3. Ersetze jede Teilformel der Bauart ¬(G ∨ H) durch (¬G ∧ ¬H).Wende für hierdurch gegebenenfalls entstehende Teilformeln derBauart ¬¬K jeweils Schritt 1 an.
4. Wiederhole die Schritte 2 und 3 so oft wie möglich.
5. . . . siehe nächste FolieLogik Aussagenlogik – Umformen nach KNF / DNF 86
Algorithmus zum Erzeugen einer KNF
5. Ersetze jede Teilformel der Bauart G ∨(H ∧ I) durch((G ∨ H) ∧(G ∨ I)).
6. Ersetze jede Teilformel der Bauart (G ∧ H) ∨ I durch((G ∨ I) ∧(H ∨ I)).
7. Wiederhole die Schritte 5 und 6 so oft wie möglich.
Dabei gilt:
Schritte 1 bis 4 „drücken Negation im Syntaxbaum nach unten“.Danach wird keine Negation mehr „angefasst“ oder „eingeführt“.
Schritte 5 bis 7 „drücken Disjunktion im Syntaxbaum nach unten“(weil KNF angestrebt wird).
Es sind, „unterwegs“ oder am Ende, manchmal Vereinfachungenmöglich . . . siehe Beispiele.
Logik Aussagenlogik – Umformen nach KNF / DNF 87
Algorithmus zum Erzeugen einer DNF
Schritte 0 bis 4 exakt wie beim Algorithmus zum Erzeugen einer KNF!
Und dann:
5. Ersetze jede Teilformel der Bauart G ∧(H ∨ I) durch((G ∧ H) ∨(G ∧ I)).
6. Ersetze jede Teilformel der Bauart (G ∨ H) ∧ I durch((G ∧ I) ∨(H ∧ I)).
7. Wiederhole die Schritte 5 und 6 so oft wie möglich.
Logik Aussagenlogik – Umformen nach KNF / DNF 88
Von Wahrheitstafel zu Formel (in Normalform)
Bisher:
zu Formel die Wahrheitstafel aufstellen
eine Formel in KNF / DNF bringen
Noch offen:
zu einer Wahrheitstafel eine Formel aufstellen
Ansatz:
Konstruktion einer KNF oder DNF zu gegebener Wahrheitstafel
durch Konjunktion von Max-Termen bzw. Disjunktion von Min-Termen
Logik Aussagenlogik – Min/Max-Terme 89
Min/Max-Terme
Gegeben sei eine Menge atomarer Formeln (wie A, B, . . . ), zu der wireine Wahrheitstafel haben oder eine bestimmte 0-1-wertige Funktionbeschreiben wollen.
Dann bezeichnen wir als
Max-Term: eine mehrstellige Disjunktion, die genau zu jeder dergegebenen atomaren Formeln entweder ein positives oderein negatives Literal enthält
Min-Term: eine mehrstellige Konjunktion, die . . . (analog)
Beispiele (gegeben als atomare Formeln seien A1, A2, A3):
A1 ∨ ¬A2 ∨ ¬A3 Max-Term
¬A1 ∧ A2 ∧ ¬A3 Min-Term
Logik Aussagenlogik – Min/Max-Terme 90
Min/Max-Terme
Beispiele (gegeben als atomare Formeln seien A1, A2, A3):
A1 ∨ ¬A2 ∨ ¬A3 Max-Term
¬A1 ∧ A2 ∧ ¬A3 Min-Term
Max-Terme führen nur bei genau einer Konfiguration zu 0,Min-Terme nur bei genauer einer Konfiguration zu 1.
Idee Erzeugung KNF:Max-Terme für Zeilen der Wahrheitstafel mit Ergebnis 0dabei negative Literale genau für mit 1 belegte atomare Aussagen
Idee Erzeugung DNF:Min-Terme für Zeilen der Wahrheitstafel mit Ergebnis 1dabei negative Literale genau für mit 0 belegte atomare Aussagen
Logik Aussagenlogik – Min/Max-Terme 91
KNF und DNF aus Min/Max-Termen
Logik Aussagenlogik – Min/Max-Terme 92
Nicht-Eindeutigkeit der Normalform
Zur Erinnerung:
Als per Max-Termen aufgestellte KNF zu dieser Formel ergibt sich:
(¬A ∨ B ∨ C) ∧(¬A ∨ B ∨ ¬C) ∧(¬A ∨ ¬B ∨ C)
Logik Aussagenlogik – Min/Max-Terme 93
Modelle und Status von Formeln
Zur Erinnerung:
Um zu überprüfen, ob eine gegebene Formel F gültig bzw. erfüllbaroder unerfüllbar ist (und gegebenenfalls ein konkretes Modell zufinden), haben wir bisher Wahrheitstafeln verwendet.
Diese konnten aber sehr groß werden.
Wegen des Spiegelungsprinzips sind die Probleme Tautologietest,Erfüllbarkeitstest, Modellsuche miteinander verwandt.
Durch Umformen/Vereinfachen können wir Formeln in KNF oder DNFbringen.
Wenn wir Verfahren für die obigen „Grundprobleme“ kennen würden, diefür KNF oder DNF gut funktionieren, könnten wir diese nun auch im Fallallgemeiner Formeln zum Einsatz bringen. −→ Resolutionsverfahren
Logik Aussagenlogik – Resolution 94
Mengenschreibweise von Formeln in KNF
Erinnerung: Formel in KNF
F = (L1,1 ∨ . . . ∨ L1,n1) ∧(L2,1 ∨ . . . ∨ L2,n2) ∧ . . . ∧(Lm,1 ∨ . . . ∨ Lm,nm )
Einzelne Disjunktionsterme wie (L1,1 ∨ . . . ∨ L1,n1) werden auchKlauseln genannt.
Wir verwenden für das Resolutionsverfahren folgendeMengenschreibweise:
F = {{L1,1, . . . ,L1,n1},{L2,1, . . . ,L2,n2}, . . . ,{Lm,1, . . . ,Lm,nm}}
Dabei wurden ∧ und ∨ beide zu Kommata. Wie kann das sein, ohnezu Verwirrung zu führen?
Bedeutung ist eindeutig dadurch, dass F in KNF vorliegt.
Logik Aussagenlogik – Resolution 95
Resolutionsverfahren der Aussagenlogik
Sei L ein Literal. Dann bezeichnet L das komplementäre Literal.Das heißt, L = ¬A falls L = A, sowie L = A falls L = ¬A.
Seien K1,K2 Klauseln einer KNF-Formel F mit K1 6= K2. Dann wirdeine Klausel R als Resolvent von K1 und K2 bezeichnet, falls es einLiteral L gibt, so dass: L ∈ K1, L ∈ K2, R = (K1 \{L})∪ (K2 \{L}).
Dann gilt: F ≡ F ∧ R, bzw. in Mengenschreibweise: F ≡ F ∪{R}.
Falls durch fortgesetzte Bildung von Resolventen die leere KlauselR = ∅ abgeleitet werden kann, dann ist F unerfüllbar.
(Und zwar genau in dem Fall.)
Logik Aussagenlogik – Resolution 96
Resolutionsschritt – Beispiel
K1 = {A,¬B,C} K2 = {B,C,¬D}
R = {A,C,¬D }
Grundidee: ((G ∨ L) ∧(H ∨ L)) ⇒ (G ∨ H)
Logik Aussagenlogik – Resolution 97
Resolutionsschritt – Nicht-Beispiel
K1 = {A,¬B,C} K2 = {B,¬C,¬D}
R = {A,¬D }
Falsch!
Logik Aussagenlogik – Resolution 98
Resolutionsschritt – Beispiel
K1 = {A,¬B,C} K2 = {B,¬C,¬D}
R = {A,C,¬C,¬D } R = {A,B,¬B,¬D }
Wichtig: In jedem Resolutionsschritt werden nur genau ein Literal unddessen Komplement eliminiert!
Logik Aussagenlogik – Resolution 99
Resolution – Beispiel
Gegeben sei: F = ((A ∨ B ∨ C) ∧(¬A ∨ B ∨ C) ∧(B ∨ ¬C))
Frage: Gilt F ⇒ B ?
Zur Klärung der Frage können wir Unerfüllbarkeit von F ∧ ¬Büberprüfen, also von:
((A ∨ B ∨ C) ∧(¬A ∨ B ∨ C) ∧(B ∨ ¬C)) ∧ ¬B
{A,B,C} {¬A,B,C} {B,¬C} {¬B}
{B,C}
{B}
∅Logik Aussagenlogik – Resolution 100
Resolution – „Merkregeln“
Es werden jeweils zwei Klauseln resolviert.
Klauseln (die ursprünglichen sowie die unterwegs entstandenen)dürfen beliebig oft benutzt werden, werden also nicht etwa„verbraucht“.
Es müssen nicht unbedingt alle Klauseln überhaupt jemalsverwendet werden, um am Schluss die leere Klausel herzuleiten.
In jedem Resolutionsschritt werden nur genau ein Literal und dessenKomplement eliminiert.
Das Verfahren ist beendet, wenn die leere Klausel hergeleitet wurdeoder Gewissheit besteht, dass dies nicht geht.
Logik Aussagenlogik – Resolution 101
Hornformeln
Eine Formel ist eine Hornformel, falls
sie in KNF vorliegt,
und jede ihrer Klauseln eine Hornklausel ist, was bedeutet, dass jedeKlausel jeweils nur maximal ein positives Literal enthalten darf.
Hornformeln haben die Besonderheit, dass sie sich immer als Konjunktionvon Implikationen zwischen Konjunktionen von nur positiven Literalenschreiben lassen.
Denn es gilt ja folgende Äquivalenz:
(¬A1 ∨ . . . ∨ ¬Ak ∨ B) ≡ ((A1 ∧ . . . ∧ Ak )⇒ B)
Logik Aussagenlogik – Hornformeln 102
Hornformeln
Umgekehrt lassen sich „Wissensbasen“ der häufig auftretenden Form„Konjunktion von Implikationen zwischen Konjunktionen positiver Literale“immer als Hornformel ausdrücken.
Denn zum Beispiel
(A⇒ B) ∧ ((C ∧ D)⇒(E ∧ F )) ∧ ((G ∧ H)⇒ I)
lässt sich ja umformen zu folgender KNF, die in der Tat auch eineHornformel ist:
(¬A ∨ B) ∧(¬C ∨ ¬D ∨ E) ∧(¬C ∨ ¬D ∨ F ) ∧(¬G ∨ ¬H ∨ I)
Logik Aussagenlogik – Hornformeln 103
Hornformeln
Da es bezüglich Hornklauseln hieß, dass sie jeweils maximal ein positivesLiteral enthalten dürfen, stellt sich natürlich noch die Frage, inwieweitdann etwa (¬A1 ∨ . . . ∨ ¬Ak ) als Implikation zwischen Konjunktionenpositiver Literale angesehen werden kann.
Und ebenfalls, wie der Fall zu sehen ist, bei dem keine negativen Literalevorliegen, also k = 0 in (¬A1 ∨ . . . ∨ ¬Ak ∨ B).
Diese Betrachtung führt zur Benennung bestimmter Typen vonHornklauseln.
Logik Aussagenlogik – Hornformeln 104
Typen von Hornklauseln
Sei K eine Hornklausel.
Kommt in K genau ein positives und mindestens ein negatives Literalvor, so heißt K Prozedurklausel oder Regel.
Beispiel: (¬A1 ∨ ¬A2 ∨ B), geschrieben als ((A1 ∧ A2)⇒ B)
Kommt in K genau ein positives und kein negatives Literal vor, soheißt K Tatsachenklausel oder Fakt.
Beispiel: B, fortan geschrieben als (1⇒ B)
Enthält K kein positives Literal, aber mindestens ein negatives Literal(ansonsten wäre K ja ganz leer), so heißt K Zielklausel oder Anfrage.
Beispiel: (¬A1 ∨ ¬A2), fortan geschrieben als ((A1 ∧ A2)⇒ 0)
Logik Aussagenlogik – Hornformeln 105
Ausblick auf Logikprogramme
Regeln und Fakten zusammen werden auch „Programmklauseln“genannt.
Die Bedeutung von „Zielklausel“ bzw. „Anfrage“ wird dann klar, wenn mansie als „negierte Frage“ interpretiert und sich (per Spiegelungsprinzip) dieÄquivalenz zwischen einerseits
„((Fakten ∧ Regeln)⇒ Frage) ist gültig“
und„(Fakten ∧ Regeln ∧ ¬Frage) ist unerfüllbar“
andererseits bewusst macht.
Logik Aussagenlogik – Hornformeln 106
Markierungsalgorithmus
Zur Erinnerung:
Um Unerfüllbarkeit einer KNF zu prüfen, können wir dasResolutionsverfahren nutzen.
Dabei kann die „Suche nach einem Weg zur leeren Klausel“aufwändig werden, weil wir oft viele Möglichkeiten haben, etwa diebeiden als nächstes zu resolvierenden Klauseln auszuwählen, bzw.das als nächstes zu eliminierende Literal/Komplement-Paar.
Und wenn sich herausstellt, dass die ursprüngliche Formel docherfüllbar war, haben wir keine direkte Möglichkeit, eine erfüllendeBelegung abzulesen.
Andererseits existiert die spezielle Klasse Hornformeln von KNFs, etwa:
((A ∧ C)⇒ B) ∧ (C⇒ D) ∧ (B⇒ 0) ∧ (D⇒ A) ∧ (1⇒ C)
Logik Aussagenlogik – Markierungsalgorithmus 107
Markierungsalgorithmus
Idee des Algorithmus am Beispiel:((A ∧ C)⇒ B) ∧ (C⇒ D) ∧ (B⇒ 0) ∧ (D⇒ A) ∧ (1⇒ C)
1. Wegen 1⇒ C muss jede erfüllende Belegung bei C eine 1 haben.Das können wir durch Markierung in der Formel festhalten, und zwaran allen Stellen des Auftretens.
2. Wegen C⇒ D muss jede erfüllende Belegung auch bei D eine 1haben. Auch das können wir wieder durch Markierungen in derFormel festhalten.
3. Wegen nun D⇒ A können wir auch für A so vorgehen.
4. Erst wenn alle Aussagen in der Voraussetzung einer Implikationbereits markiert sind, können wir auch die Aussage aus derFolgerung markieren. Nun also B.
5. Aus B⇒ 0 ergibt sich ein Widerspruch, also kann die ursprünglicheFormel hier nicht erfüllbar gewesen sein.
Logik Aussagenlogik – Markierungsalgorithmus 108
Markierungsalgorithmus
Allgemeine Beschreibung, wobei zum Zwecke der Nachvollziehbarkeitjeweils die „Schrittnummer“ der Markierungen festzuhalten ist:
Für jede Teilformel der Form 1⇒ A markiere alle Vorkommen von Ain der Gesamtformel. Schrittnummer dafür ist 1.Solange es eine Teilformel der Form A1 ∧ . . . ∧ Ak ⇒ . . . gibt, bei deralle Ai bereits markiert sind, entscheide:
Falls statt des . . . eine 0 steht, gib „unerfüllbar“ aus und stoppe.Falls statt des . . . eine noch nicht markierte Aussage B steht,inkrementiere den Schrittzähler und markiere alle Vorkommenvon B in der Gesamtformel entsprechend.
Falls obiger Ablauf nicht zur Ausgabe „unerfüllbar“ geführt hat, gibam Ende „erfüllbar“ aus. Eine erfüllende Belegung ergibt sich, indemalle markierten Aussagen auf 1 gesetzt werden, die anderen auf 0.
Logik Aussagenlogik – Markierungsalgorithmus 109
Markierungsalgorithmus
Entsprechend aufgeschrieben für das vorige Beispiel:
((A3 ∧ C1)⇒ B4) ∧ (C1⇒ D2) ∧ (B4⇒ 0) ∧ (D2⇒ A3) ∧ (1⇒ C1)
Schritt 1: C
Schritt 2: D
Schritt 3: A
Schritt 4: B
„unerfüllbar“
Logik Aussagenlogik – Markierungsalgorithmus 110
Markierungsalgorithmus
Anderes Beispiel:
(¬A ∨ B) ∧ A ∧ C ∧(¬C ∨ D) ∧(¬C ∨ ¬D ∨ E) ∧ ¬F
Markierungsalgorithmus:
(A1⇒ B3) ∧ (1⇒ A1) ∧ (1⇒ C1) ∧ (C1⇒ D2)
∧ ((C1 ∧ D2)⇒ E4) ∧ (F ⇒ 0)
Schritt 1: A, C
Schritt 2: D
Schritt 3: B
Schritt 4: E
„erfüllbar“, mit α(A) = α(B) = α(C) = α(D) = α(E) = 1 und α(F ) = 0
Logik Aussagenlogik – Markierungsalgorithmus 111
Vergleich zu (linearer) Resolution
((A ∧ C)⇒ B) ∧ (C⇒ D) ∧ (B⇒ 0) ∧ (D⇒ A) ∧ (1⇒ C)
{¬B}
{¬A,¬C}
{¬C,¬D}
{¬C}
∅
Seitenklauseln
{¬A,B,¬C}
{A,¬D}
{¬C,D}
{C}
Logik Aussagenlogik – Markierungsalgorithmus 112
Erster Blick auf Prolog
Logik Logikprogrammierung 113
Zur Erinnerung
Logik Logikprogrammierung 114
Zur Erinnerung
Logik Logikprogrammierung 115
Zur Erinnerung
Logik Logikprogrammierung 116
Ein „echtes“ Prolog-Programm
Logik Logikprogrammierung 117
Verwendung von Prädikaten
In Abkehr von reiner Aussagenlogik, wo wir von atomaren Aussagen wie
A = Der Mond ist grün.B = Es regnet.C = Die Straße ist nass.
ausgegangen sind, ohne sie weiter zu „zerlegen“, können ab jetzt dieAussagen, welche durch Konjunktion, Implikation etc. verknüpft werden,selbst noch eine innere Struktur haben.
Zum Beispiel gruen(mond) statt obigem A und dann etwa alsEntsprechung für
Wenn der Mond grün ist, haben wir Donnerstag.
die folgende Prolog-Regel: donnerstag :- gruen(mond).
Logik Logikprogrammierung – Prädikate 118
Verwendung von Prädikaten
„Ich sah den Mann auf dem Berg mit dem Fernrohr.“
sah(ich,mann), auf(ich,berg),mit(ich,fernrohr)
auf(mann,berg), sah(ich,mann),mit(ich,fernrohr)
sah(ich,mann), auf(ich,berg),auf(fernrohr,berg)
auf(mann,berg), mit(mann,fernrohr),sah(ich,mann)
auf(fernrohr,berg), auf(mann,berg),sah(ich,mann)
Logik Logikprogrammierung – Prädikate 119
Verwendung von Prädikaten
Neben der flexibleren Verwendung dieser „neuen Art Literale“, etwa durchWiederverwendbarkeit der Prädikate für verschiedene Subjekte/Objekte,ergeben sich mittels Variablen auch neue Arten interessanter Regeln.
Zum Beispiel:
auf(J,berg) :- auf(fernrohr,berg), mit(J,fernrohr).
Prolog arbeitet mit genau diesen Mitteln.
Logik Logikprogrammierung – Prädikate 120
Einfachstes Prolog: Fakten und Anfragen
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 121
Fakten + einfache Implikationen
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 122
Komplexere Regeln
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 123
Relationen, und komplexere Anfragen
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 124
Variablen in Regeln (nicht nur in Anfragen)
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 125
Variablen in Regeln (nicht nur in Anfragen)
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 126
Einige Beobachtungen zu Variablen
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 127
Syntaxbegriffe in Prolog
Logik Logikprogrammierung – Fakten, Regeln, Anfragen 128
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 129
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 130
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 131
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 132
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 133
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 134
Prolog-Ausführung
Logik Logikprogrammierung – Prolog-Ausführung 135
Prolog-Ausführung nochmal anders dargestellt
Logik Logikprogrammierung – Prolog-Ausführung 136
Zum Vergleich mit Resolution
Entsprechungen zwischen Hornklauseln und Prolog, an Beispielen:
Art Klausel als Disjunktion als Implikation in PrologFakt {a} a 1⇒ a a.Fakt {lustig(otto)} lustig(otto) 1⇒ lustig(otto) lustig (otto ).Regel {b,¬a} b ∨ ¬a a⇒ b b :− a.Regel {¬c,b,¬a} ¬c ∨ b ∨ ¬a (a ∧ c)⇒ b b :− a, c.Anfrage {¬a} ¬a a⇒ 0 ?− a.Anfrage {¬b,¬c} ¬b ∨ ¬c (b ∧ c)⇒ 0 ?− b, c.
Zur Erinnerung, in Prolog:
Fakten und Regeln stehen im Programmcode (d.h. in zu ladenderDatei, separatem Programmfenster o.ä.).
Anfragen ?− ... werden interaktiv (z.B. in laufenden Interpreterhinein) gestellt.
Logik Logikprogrammierung – Prolog-Ausführung 137
Was genau passiert bei einer Prolog-Anfrage?
?− a.
1. Prolog negiert die gestellte Anfrage zur Klausel {¬a}.2. Prolog versucht mit Hilfe der Programmklauseln einen Widerspruch
(also ∅) zu {¬a} herzuleiten.
Zur Herleitung eines Widerspruchs sucht Prolog systematisch eine lineareResolution (siehe Diskussion weiter vorn), die bei {¬a} startet, nur dieProgrammklauseln als Seitenklauseln verwendet, und die Resolventeimmer direkt weiterverwendet (bis dies nicht mehr geht, oder leereKlausel erreicht).
Diese Suche spannt einen sogenannten „SLD-Baum“ auf.
Logik Logikprogrammierung – Prolog-Ausführung 138
Was genau passiert bei einer Prolog-Anfrage?
Betrachten wir beispielhaft das folgende Prolog-Programm:
1 a :− b , c .2 a :− d .3 b .4 b :− d .5 c .6 d .7 d :− e .
und rufen es entsprechend auf mit: ?− a.
Es entsteht folgende „Suchstruktur“: (siehe nächste Folie)
Logik Logikprogrammierung – Prolog-Ausführung 139
Was genau passiert bei einer Prolog-Anfrage?
1 a :− b , c .2 a :− d .3 b .4 b :− d .5 c .6 d .7 d :− e .
{¬a}
{¬b,¬c} {¬d}
{¬c} {¬c,¬d} {¬b} ∅ {¬e}
∅ {¬c} {¬c,¬e} {¬d} ∅
∅ {¬e} {¬e} ∅
(1) (2)
(3) (4) (5) (6) (7)
(5) (6) (7) (5) (3)(4)
(5) (5) (7) (6)
Logik Logikprogrammierung – Prolog-Ausführung 140
Was genau passiert bei einer Prolog-Anfrage?
Alle Pfade, die in ∅ enden, wären erfolgreiche SLD-Resolutionen.
Problem: Wie kann Prolog erfolgreiche SLD-Resolutionenmöglichst schnell finden?
Prinzipiell existieren mindestens zwei Herangehensweisen.Tiefensuche (depth-first search):Expandiere immer zunächst weiter in die Tiefe und springeansonsten zurück (Backtracking).Breitensuche (breadth-first search):Expandiere zunächst alle Nachfolger der aktuellen Ebene, bevorweiter in die Tiefe gegangen wird.
Prolog benutzt Tiefensuche. (Dies kann zu Problemen führen.)
Logik Logikprogrammierung – Prolog-Ausführung 141
Mit „First-Literal-Selection“
1 a :− b , c .2 a :− d .3 b .4 b :− d .5 c .6 d .7 d :− e .
?− a.
?− b, c. ?− d.
?− c. ?− d, c. � ?− e.
� ?− c. ?− e, c.
�
(1) (2)
(3) (4) (6) (7)
(5) (6) (7)
(5)
Logik Logikprogrammierung – Prolog-Ausführung 142
Probleme mit Tiefensuche
Anfrage:?− a.
Programm:
1 a :− b .2 a .3 b :− a .
?− a.
?− b.
?− a.
...
(1)
(3)
(1)
Die Tiefensuche terminiert hier nicht, weil sie immer wieder eine Regelanwenden kann. −→ Speicher wird voll. −→ Stack Overflow!
Logik Logikprogrammierung – Prolog-Ausführung 143
Resolution mit Variablen
Beispiel weiter vorn, Anfrage ?− istGrossvaterVon(kurt,X)., sowie u.a.:
1 i s tGrossvaterVon (G,E) :− i s tVaterVon (G,V) ,i s tVaterVon (V,E ) .
2 i s tVaterVon ( kur t , f r i t z ) .3 i s tVaterVon ( f r i t z , paul ) .
Das erste (und hier einzige) Literal der Anfrage lässt sich per Substitution{G/kurt,X/E} mit dem Kopf von Klausel (1) unifizieren, dann darüberresolvieren zu: ?− istVaterVon(kurt,V), istVaterVon(V,E).
Per {V/fritz} lässt sich dann das erste Literal davon mit dem Fakt (2)unifizieren; neue Resolvente dadurch: ?− istVaterVon( fritz,E).
Per {E/paul} lässt sich schließlich dieses Literal mit dem Fakt (3)unifizieren, dann darüber weiter resolvieren zur leeren Klausel.
Insgesamt haben wir damit als Lösung für X gefunden: paul.Logik Logikprogrammierung – Prolog-Ausführung 144
SLD-/Ableitungsbaum mit Variablen
Anderes Beispielprogramm:
1 g r o s s e l t e r n t e i l (X ,Y) :− e l t e r n t e i l (X , Z ) ,e l t e r n t e i l (Z ,Y ) .
2 e l t e r n t e i l (X ,Y) :− va te r (X,Y ) .3 e l t e r n t e i l (X ,Y) :− mutter (X,Y ) .
4 va te r ( ka r l , mat th ias ) .5 va te r ( ka r l , c h r i s t a ) .6 va te r ( ingo , leon ) .7 mutter ( ch r i s t a , leon ) .
Logik Logikprogrammierung – Prolog-Ausführung 145
SLD-/Ableitungsbaum mit Variablen
?−grosselternteil( karl , leon).
?−elternteil( karl ,Z), elternteil (Z,leon).
?− vater(karl ,Z), elternteil (Z,leon).
?−elternteil(matthias,leon). ?−elternteil( christa ,leon).
?− vater(matthias,leon).?− mutter(matthias,leon).
?− vater(christa ,leon).?− mutter(christa,leon).
�
(1)
(2)
(4) (5)
(2)(3)
(2)(3)
(7)
Freie Variable Z
wird hier jeweils
gebunden
Logik Logikprogrammierung – Prolog-Ausführung 146
Weitere „Sprachverfeinerung“
In Abkehr von reiner Aussagenlogik hatten wir schon atomare Aussagenwie A = „Der Mond ist grün.“ strukturell verfeinert durch Verwendung vonPrädikaten, etwa gruen(mond) oder auch sah(ich,mann).
Eine weitere Verfeinerung ist möglich, indem wir auch den Argumentenvon Prädikaten eine innere Struktur zubilligen.
Zum Beispiel könnten wir dann in child(harry,X) statt von harrypräziser von person(harry,potter) sprechen.
Dabei können solche Datenterme beliebig tief geschachtelt sein, undselbst auch Variablen enthalten, etwa:
address(City,Street,person(harry,potter))
Logik Logikprogrammierung – Datenstrukturen 147
Weitere „Sprachverfeinerung“
Beispielverwendung:
v a l i d ( address ( c i t y (Z ,C) , s t r e e t ( _ ,H) , person (F ,S ) ) ):− zipOkay (Z ,C) , H > 0 , H =< 99 , F \= S.
zipOkay (45141 , essen ) .zipOkay (47048 , duisburg ) .zipOkay (47057 , duisburg ) .
?− v a l i d ( address ( c i t y (47057 , duisburg ) , s t r e e t ( l o t h a r s t r,65 ) , person ( harry , p o t t e r ) ) ) .t r ue .
Achtung: Nicht die Rollen von Prädikaten und „Datenkonstruktoren“verwechseln!
Logik Logikprogrammierung – Datenstrukturen 148
Syntaxbegriffe in Prolog
Statt Konstanten und Variablen sind in
nun also beliebige solche Datenterme (möglicherweise mit Variablen anihren „Blättern“) als Argumente von Prädikaten möglich.
Dabei nennt man das Symbol person in person(harry,potter)einen zweistelligen Funktor, oder Funktionssymbol, oder Konstruktor, undnotiert dies auch als person/2.
Logik Logikprogrammierung – Datenstrukturen 149
Datenstrukturen allgemein
Konstanten können dann einfach als nullstellige Konstruktorenangesehen werden, etwa harry/0.
Schachtelungen können beliebig tief sein, etwa mit s/1 und z/0können wir beliebig große natürliche Zahlen repräsentieren:13 „=“ s(s(s(s(s(s(s(s(s(s(s(s(s(z))))))))))))).
(Diese Kodierung wird auch als „Peano-Zahlen“ bezeichnet.)
Bereits gesehen haben wir, dass „normale“ Zahlen aber auch direktals Konstanten verwendet werden können, etwa incity(47057,duisburg).
Als spezielle Datenstruktur kommen in Prolog auch noch Listenhinzu, notiert als [1,2,3,4,5] oder etwa auch Variablenenthaltend: [duisburg,X,essen], etc.
Logik Logikprogrammierung – Datenstrukturen 150
Beispiel: Symbolisches Rechnen
Logik Logikprogrammierung – Datenstrukturen 151
Beispiel: Symbolisches Rechnen
Logik Logikprogrammierung – Datenstrukturen 152
Rekursion
Wenn eine Regel für ein bestimmtes Prädikat dieses Prädikat auch aufder rechten Seite benutzt, nennt man das „Rekursion“. Zum Beispiel:
Bevor wir uns ein weiteres Beispiel für dieses Prinzip ansehen, ein paarAnmerkungen:
In rein aussagenlogischem Prolog ist Rekursion eher nicht sinnvoll.
Rekursion kann sich auch über mehr als eine Regel erstrecken, alsoindirekt passieren.
Die Reihenfolge von Regeln, und auch die innerhalb der rechtenSeiten von Regeln, kann bei rekursiven Definitionen einen großenUnterschied machen.
Das hat auch mit der Suchstrategie, Tiefen- vs. Breitensuche, zu tun.Logik Logikprogrammierung – Rekursion 153
Zur Erinnerung
Anfrage:?− a.
Programm:
1 a :− b .2 a .3 b :− a .
?− a.
?− b.
?− a.
...
(1)
(3)
(1)
Die Tiefensuche terminiert hier nicht, weil sie immer wieder eine Regelanwenden kann. −→ Speicher wird voll. −→ Stack Overflow!
Logik Logikprogrammierung – Rekursion 154
Rekursion für „transitive Hülle“
Als weiteres nicht rein aussagenlogisches Beispiel, nehmen wir an, wirhaben diverse Fakten für Prädikate vater/2 und mutter/2 gegeben, sowie:
e l t e r n t e i l (X ,Y) :− va te r (X,Y ) .e l t e r n t e i l (X ,Y) :− mutter (X,Y ) .
Wir wissen bereits, dass wir dann eine Großelternbeziehung ausdrückenkönnen über:
g r o s s e l t e r n t e i l (X ,Y) :− e l t e r n t e i l (X , Z ) ,e l t e r n t e i l (Z ,Y ) .
Aber was, wenn wir beliebige Vorfahren ermitteln wollen?
Ein möglicher Versuch:
u r g r o s s e l t e r n t e i l (X ,Y) :− e l t e r n t e i l (X , Z ) ,g r o s s e l t e r n t e i l (Z ,Y ) .
Logik Logikprogrammierung – Rekursion 155
Rekursion für „transitive Hülle“
Versuch fortgesetzt:
u r u r g r o s s e l t e r n t e i l (X ,Y) :− g r o s s e l t e r n t e i l (X , Z ) ,g r o s s e l t e r n t e i l (Z ,Y ) .
oder alternativ:
u r u r g r o s s e l t e r n t e i l (X ,Y) :− e l t e r n t e i l (X , Z ) ,u r g r o s s e l t e r n t e i l (Z ,Y ) .
Aber zu einem wirklich allgemein verwendbaren Prädikat kommen wir soleider nicht.
Stattdessen, Verwendung von Rekursion:
vo r f ah r (X,Y) :− e l t e r n t e i l (X ,Y ) .vo r f ah r (X,Y) :− e l t e r n t e i l (X , Z ) , vo r f ah r (Z ,Y ) .
Logik Logikprogrammierung – Rekursion 156
Rekursion für „transitive Hülle“
Dabei erfasst die vorfahr-Relation alle Instanzen von eltern, grosseltern,urgrosseltern, ururgrosseltern, . . . , ist also in diesem Sinne die „Hülle“ der„transitiven Fortsetzung“ der eltern-Relation.
Als gute Praxis, an diesem Beispiel
vo r f ah r (X,Y) :− e l t e r n t e i l (X ,Y ) .vo r f ah r (X,Y) :− e l t e r n t e i l (X , Z ) , vo r f ah r (Z ,Y ) .
demonstriert:
Es muss mindestens einen Basisfall für die Rekursion geben.
Basisfälle werden am besten zuerst aufgeführt.
In den Regeln für Nicht-Basisfälle kommen die rekursiven Aufrufe ambesten möglichst weit „hinten“.
Logik Logikprogrammierung – Rekursion 157
Spezielle Datenstruktur: Listen
Neben Konstanten und per Schachtelung von Datenkonstruktoren wies/1 und z/0 zu erhaltenden Datenstrukturen, wurden auch Listen mitSyntax wie [1,2,3,4,5] und [duisburg,X,essen] zuvor bereitskurz erwähnt.
Zur Arbeit mit Listen hält Prolog diverse Prädikate bereit, zum Beispiel:
member/2, um auszudrücken, dass ein Element in einer Listevorkommt
append/3, um auszudrücken, dass eine Liste dieAneinanderhängung zweier bestimmter Listen ist
length/2, um auszudrücken, welche Länge eine Liste hat
Logik Logikprogrammierung – Listen 158
Vordefinierte Prädikate auf Listen
Interessant dabei ist, dass (ganz im Sinne „unseres“ add/3-Prädikates)diverse Aufrufmodi der Listenprädikate funktionieren. Zum Beispiel:
?− member ( 3 , [ 1 , 2 , 3 , 4 , 5 ] ) .t r ue .
?− member (X , [ 1 , 2 , 3 ] ) .X = 1 ;X = 2 ;X = 3.
?− member ( 3 , [X ,Y, Z ] ) .X = 3 ;Y = 3 ;Z = 3.
Logik Logikprogrammierung – Listen 159
Vordefinierte Prädikate auf Listen
Auch für die anderen Listenprädikate, zum Beispiel:
?− append ( [ 1 , 2 , 3 ] , [ 4 , 5 ] , L ) .L = [ 1 , 2 , 3 , 4 , 5 ] .
?− append (X,Y , [ a , b ] ) .X = [ ] , Y = [ a , b ] ;X = [ a ] , Y = [ b ] ;X = [ a , b ] , Y = [ ] .
?− append (X,X , [ a , b ] ) .f a l s e .
?− append (X,X , [ a ,Y ] ) .X = [ a ] , Y = a .
Logik Logikprogrammierung – Listen 160
Vordefinierte Prädikate auf Listen
Sowie:
?− l eng th ( [ a , b , c ] ,N ) .N = 3.
?− l eng th ( L , 3 ) .L = [ _1570 , _1576 , _1582 ] .
?− l eng th ( L , 3 ) , append (X,X, L ) .f a l s e .
?− l eng th ( L , 4 ) , append (X,X, L ) .L = [ _1610 , _1616 , _1610 , _1616 ] , X = [ _1610 , _1616 ] .
?− l eng th ( L , 2 ) , member ( a , L ) ,member ( b , L ) ,member ( c , L ) .f a l s e .
Logik Logikprogrammierung – Listen 161
Definition von Prädikaten auf Listen
Definiert werden Prädikate auf Listen typischerweise durch Verwendungbereits vorhandener:
i n s e r t (X, L ,R) :− append (U,V, L ) , append (U , [ X ] ,Y) ,append (Y,V,R ) .
und/oder Rekursion:
permutat ion ( [ ] , [ ] ) .permutat ion ( L ,P) :− append ( [ X ] ,Y, L ) , permutat ion (Y, Z ) ,
i n s e r t (X, Z ,P ) .
Mit obigen Definitionen, zum Beispiel:
?− permutat ion ( [ 1 , 2 , 3 ] , L )L = [ 1 , 2 , 3 ] ;L = [ 2 , 1 , 3 ] ;. . .
Logik Logikprogrammierung – Listen 162
Generate-and-Test – Das „Was“ und das „Wie“
Angenommen, wir möchten Listen sortieren können, also zum BeispielAnfragen wie
?− sor t ingTo ( [ 4 , 2 , 6 , 9 , 1 ] ,R ) .
stellen können, und darauf als Antwort
R = [ 1 , 2 , 4 , 6 , 9 ] .
erhalten.
Also was wollen wir genau?
Logik Logikprogrammierung – Generate-and-Test 163
Generate-and-Test – Das „Was“ und das „Wie“
Die gewünschte Eigenschaft der Ergebnisliste können wir relativ leicht alsProlog-Prädikat ausdrücken:
i sSor ted ( [ ] ) .i sSor ted ( [ _ ] ) .i sSor ted ( Xs ) :− append ( [ X,Y ] , Ys , Xs ) , X =< Y,
append ( [ Y ] , Ys , Zs ) , i sSor ted ( Zs ) .
Dann gilt zum Beispiel:
?− i sSor ted ( [ 4 , 2 , 6 , 9 , 1 ] ) .f a l s e .?− i sSor ted ( [ 1 , 2 , 4 , 6 , 9 ] ) .t r ue .
Und wie können wir eine solche passende Liste herstellen?
Logik Logikprogrammierung – Generate-and-Test 164
Generate-and-Test – Das „Was“ und das „Wie“
Nun, eine recht naive, aber funktionierende Lösung wäre:
sor t ingTo ( Xs , Ys ) :− permutat ion ( Xs , Ys ) , i sSor ted ( Ys ) .
Dann in der Tat:
?− sor t ingTo ( [ 4 , 2 , 6 , 9 , 1 ] ,R ) .R = [ 1 , 2 , 4 , 6 , 9 ] .
Prinzip hier:
Um eine Regel auf Eingaben zu formulieren, die genau dann true liefert,wenn eine gültige Lösung des Problems vorliegt, Zerlegung in zwei Teile:
Generate-Teil definiert einen Suchraum.
Test-Teil definiert die Lösungsbedingung, die erfüllt sein soll.
Logik Logikprogrammierung – Generate-and-Test 165
Generate-and-Test – Weitere Beispiele
Aufgabe: Ermittle alle Möglichkeiten, bei dreimaligem Würfeln insgesamt15 Punkte zu erzielen.
Lösung:
?− W = [1 ,2 ,3 ,4 ,5 ,6 ] , member (A,W) , member (B,W) ,member (C,W) , A + B + C =:= 15.
Logik Logikprogrammierung – Generate-and-Test 166
Generate-and-Test – Weitere Beispiele
Aufgabe: Ermittle alle Möglichkeiten, bei dreimaligem Würfeln mitverschiedenen Augenzahlen insgesamt 15 Punkte zu er-zielen.
Lösung:
?− W = [1 ,2 ,3 ,4 ,5 ,6 ] , member (A,W) , member (B,W) ,member (C,W) , A \= B, A \= C, B \= C,A + B + C =:= 15.
oder:
?− permutat ion ( [ 1 , 2 , 3 , 4 , 5 , 6 ] , [A ,B,C, _ , _ , _ ] ) ,A + B + C =:= 15.
Logik Logikprogrammierung – Generate-and-Test 167
Generate-and-Test – Weitere Beispiele
Aufgabe: Ermittle alle Möglichkeiten, bei dreimaligem Würfeln mit ver-schiedenen Augenzahlen in aufsteigender Reihenfolge insge-samt 15 Punkte zu erzielen.
Lösung:
?− permutat ion ( [ 1 , 2 , 3 , 4 , 5 , 6 ] , [A ,B,C, _ , _ , _ ] ) ,i sSor ted ( [ A,B,C] ) , A + B + C =:= 15.
Generate-and-Test ist sinnvoll einzusetzen bei nicht-trivialenkombinatorischen Problemen, wenn
die Menge der potentiellen Lösungen endlich oder besser sogarrecht klein ist, oder
man keine Vorstellung darüber hat, wie systematisch schneller eineLösung gefunden werden könnte.
Logik Logikprogrammierung – Generate-and-Test 168
Beispiel: Krypto-Arithmetik
ABB – CD = EED
– –
FD + EF =
*
CE
=
EGD
=
FH
=
?*
=
=
Jeder Buchstabe entspreche einer anderen Ziffer.
Wie lautet eine gültige Belegung?
Logik Logikprogrammierung – Generate-and-Test 169
Beispiel: Krypto-Arithmetik
solve (A,B,C,D,E, F ,G,H) :− generate (A,B,C,D,E, F ,G,H) ,t e s t (A,B,C,D,E, F ,G,H) .
generate (A,B,C,D,E, F ,G,H) :−permutat ion ( [0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ] ,
[A ,B,C,D,E, F ,G,H, _ , _ ] ) .
t e s t (A,B,C,D,E, F ,G,H) :− ???
Zum Beispiel die erste Zeile entspricht:
(A * 100 + B * 10 + B) − (C * 10 + D)=:= E * 100 + E * 10 + D
Und die erste Spalte:
(A * 100 + B * 10 + B) − (F * 10 + D)=:= E * 100 + G * 10 + D
Logik Logikprogrammierung – Generate-and-Test 170
Beispiel: Krypto-Arithmetik
Zweite Zeile und zweite Spalte:
(F * 10 + D) + (E * 10 + F) =:= C * 10 + E,(C * 10 + D) − (E * 10 + F) =:= F * 10 + H
Schließlich noch die Bedingung, dass gleiches Ergebnis in letzter Zeileund letzter Spalte:
(E * 100 + E * 10 + D) * (C * 10 + E)=:= (E * 100 + G * 10 + D) * (F * 10 + H)
Logik Logikprogrammierung – Generate-and-Test 171
Beispiel: Krypto-Arithmetik
Insgesamt für den Test-Teil:
t e s t (A,B,C,D,E, F ,G,H) :−(A * 100 + B * 10 + B) − (C * 10 + D)
=:= E * 100 + E * 10 + D,(A * 100 + B * 10 + B) − (F * 10 + D)
=:= E * 100 + G * 10 + D,(F * 10 + D) + (E * 10 + F) =:= C * 10 + E,(C * 10 + D) − (E * 10 + F) =:= F * 10 + H,(E * 100 + E * 10 + D) * (C * 10 + E)
=:= (E * 100 + G * 10 + D) * (F * 10 + H) .
Als eindeutige erfüllende Belegung findet Prolog mit der Anfrage
?− solve (A,B,C,D,E, F ,G,H) .
dies: A = 2, B = 0, C = 8, D = 5, E = 1, F = 6, G = 3, H = 9.Logik Logikprogrammierung – Generate-and-Test 172
Beispiel: Krypto-Arithmetik – Lösung
200 – 85 = 115
– –
65 + 16 =
*
81
=
135
=
69
=
9315*
=
=
Logik Logikprogrammierung – Generate-and-Test 173
Beispiel: Einstein’s Riddle
Zur Erinnerung:
Logik Logikprogrammierung – Generate-and-Test 174
Beispiel: Einstein’s Riddle
Versuchen wir, das Rätsel per Generate-and-Test zu lösen.
Für den Generate-Teil wäre zunächst einfach denkbar:
Houses = [ _ , _ , _ , _ , _ ]
Oder auch bereits:
Houses = [ [ _ , _ , _ , _ , _ ], [ _ , _ , _ , _ , _ ], [ _ , _ , _ , _ , _ ], [ _ , _ , _ , _ , _ ], [ _ , _ , _ , _ , _ ] ]
Logik Logikprogrammierung – Generate-and-Test 175
Beispiel: Einstein’s Riddle
Für den Test-Teil nehmen wir uns die einzelnen Hinweise vor.
Zum Beispiel:
1. The Englishman lives in the red house.
Unter der Festlegung, dass wir die einzelnen Attribute jeweils in derReihenfolge „color“, „nationality“, „drink“, „pet“, „smoke“ angeben werden,können wir diesen ersten Hinweis wie folgt ausdrücken:
member ( [ red , englishman , _ , _ , _ ] , Houses )
Analog:
2. The Spaniard owns the dog.
wird zu:
member ( [ _ , spaniard , _ , dog , _ ] , Houses )Logik Logikprogrammierung – Generate-and-Test 176
Beispiel: Einstein’s Riddle
Die nächsten beiden Hinweise:
3. Coffee is drunk in the green house.
4. The Ukrainian drinks tea.
werden auch analog behandelt:
member ( [ green , _ , cof fee , _ , _ ] , Houses )
bzw.:
member ( [ _ , uk ra in ian , tea , _ , _ ] , Houses )
Logik Logikprogrammierung – Generate-and-Test 177
Beispiel: Einstein’s Riddle
Dann wird es wieder etwas interessanter:
5. The green house is immediately to the right of the ivory house.
Das könnten wir so ausdrücken:
r i g h t O f ( [ green , _ , _ , _ , _ ] ,[ i vo ry , _ , _ , _ , _ ] ,Houses )
wenn wir ein solches Prädikat hätten.
Definieren wir es uns doch einfach:
r i g h t O f (R, L , L i s t ) :− append ( Pre f i x , _ , L i s t ) ,append ( _ , [ L ,R] , P r e f i x ) .
Logik Logikprogrammierung – Generate-and-Test 178
Beispiel: Einstein’s Riddle
Nun kommen nochmal zwei sehr einfach umzusetzende Hinweise:
6. The Winston smoker owns snails.
7. Kools are smoked in the yellow house.
Dann wieder spannender:
8. Milk is drunk in the middle house.
9. The Norwegian lives in the leftmost house.
Diese beiden können wir umsetzen, indem wir
Houses = . . .
verfeinern zu:
Houses = [ [ _ , norwegian , _ , _ , _ ] , _, [ _ , _ , mi lk , _ , _ ] , _ , _ ]
Logik Logikprogrammierung – Generate-and-Test 179
Beispiel: Einstein’s Riddle
Für den nächsten Hinweis:
10. The man who smokes Chesterfield lives in the house next to the manwith the fox.
brauchen wir nochmal ein Hilfsprädikat:
nextTo ( [ _ , _ , _ , _ , c h e s t e r f i e l d ] ,[ _ , _ , _ , fox , _ ] ,Houses )
welches wir wie folgt definieren können:
nextTo (X,Y, L i s t ) :− r i g h t O f (X,Y, L i s t ) .nextTo (X,Y, L i s t ) :− r i g h t O f (Y,X, L i s t ) .
Logik Logikprogrammierung – Generate-and-Test 180
Beispiel: Einstein’s Riddle
Die restlichen Hinweise:
11. Kools are smoked in the house next to the house where the horse iskept.
12. The Lucky Strike smoker drinks orange juice.
13. The Japanese smokes Parliaments.
14. The Norwegian lives next to the blue house.
lassen sich dann alle analog zu schon vertrauten umsetzen.
Es bleibt noch, letztlich den Zebra-Besitzer und den Wasser-Trinker zubestimmen.
Dazu können Variablen und weitere member-Aufrufe verwendet werden.
Logik Logikprogrammierung – Generate-and-Test 181
Beispiel: Einstein’s Riddle – Gesamtlösung
Logik Logikprogrammierung – Generate-and-Test 182
Übergang zur Prädikatenlogik
Was bisher geschah:
1. AussagenlogikSprache der Aussagenlogik (AL)Wahrheitstafeln, Status von FormelnNormalformen und ÄquivalenzenResolutionsverfahren der ALAL-Hornformeln und der Markierungsalgorithmus
2. Logikprogrammierung in PrologSprachelementeProlog-Ausführung (unter Verwendung von Resolution!)Programmieren mit RelationenRekursion und ListenverarbeitungGenerate-and-Test
Logik Prädikatenlogik 183
Übergang zur Prädikatenlogik
Was uns ab jetzt beschäftigen wird:
3. PrädikatenlogikSprache der Prädikatenlogik (PL), mit Variablen und QuantorenStatus von Formeln, Normalformen und ÄquivalenzenResolutionsverfahren der PL
Zur Unterscheidung zwischen Aussagen- und Prädikatenlogik hatte ichzuvor auf solche Beispiele verwiesen:
Aussagenlogik:„Es regnet und die Straße ist nass.“ – R ∧ N„Wenn die Straße nicht nass ist, dann regnet es nicht.“ – ¬N⇒¬R
Prädikatenlogik:„Für jede natürliche Zahl x gilt, dass es eine natürliche Zahl y gibt, sodass x kleiner als y ist.“ – ∀x : ∃y : (x < y)
Logik Prädikatenlogik 184
Übergang zur Prädikatenlogik
Auch die eingangs diskutierten Syllogismen passen in diePrädikatenlogik, etwa:
Wenn alle Menschen sterblich sind und Sokrates ein Mensch ist,dann ist Sokrates sterblich.
Wenn wer im grünen Haus wohnt Kaffee trinkt, und X im grünenHaus wohnt, dann trinkt X Kaffee.
oder:
Keine Blume ist ein Tier.Alle Hunde sind Tiere.Keine Blume ist ein Hund.
Alle Aliens sind Säugetiere.Alle Aliens leben im Meer.Einige Säugetiere leben im Meer.
Logik Prädikatenlogik 185
Übergang zur Prädikatenlogik
Was in der Prädikatenlogik ähnlich zu Prolog sein wird:
Verwendung von Prädikaten (in PL, auch „Relationssymbole“)
Verwendung von Datenkonstruktoren (in PL, „Funktionssymbole“)
Verwendung von Variablen (in PL, in der Regel klein geschrieben)
Was wir aus der Prolog-Programmierung nicht in unsere Beschäftigungmit Prädikatenlogik übernehmen werden:
arithmetische Interpretation von Zahlen, Arbeit mit Listen
rekursive Definition/Ausführung, Generate-and-Test
Davon abgesehen lassen sich Prolog-Programme im Prinzip in diePrädikatenlogik „einbetten“.
Logik Prädikatenlogik 186
Übergang zur Prädikatenlogik
Andererseits ist Prädikatenlogik echt „mehr“ als Prolog.
Denn neben anderer Syntax für die Verknüpfungsoperationen (etwawieder „ ∧ “ und „ ∨ “ statt „ , “ und „ ; “) kommen neu die Quantoren∀ und ∃ hinzu, welche auch semantisch große Auswirkungen haben.
Außerdem beschränken wir uns in der Prädikatenlogik nicht mehr aufHornklauseln.
Wieder relevant werden dann die aus der Aussagenlogik bekanntenNormalformen KNF/DNF.
Logik Prädikatenlogik 187
Übergang zur Prädikatenlogik
Auch aus der Aussagenlogik übernommen (und teils erweitert) werden diefolgenden Konzepte:
(passende) Belegung, und Zuordnung Wahrheitswert zu Formel
Status von Formeln („erfüllbar“ etc.), Spiegelungsprinzip
Äquivalenzen und Umformungen
Resolution für Formeln in Mengenschreibweise
Speziell für Resolution wird gelten:
anders als in Prolog, nicht mehr nur lineare/SLD-Resolution,
aber wie in Prolog, Berücksichtigung von Variablen.
Aus der Aussagenlogik ab jetzt eher nicht relevant:
Min/Max-Terme
MarkierungsalgorithmusLogik Prädikatenlogik 188