Einführung in die Logik

Preview:

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: janis.voigtlaender@uni-due.de

Übungsleitung und Tutorium: M.Sc. Oliver Westphal

Raum LF 232

E-Mail: oliver.westphal@uni-due.de

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

Recommended