Vorlesung Logik für Informatiker/innen Einführung in mathematische Logik und Logik in der Informatik Thomas Wilke 1. November 2008 Rev:16 2008-11-01 Inhaltsverzeichnis 1 Einleitung 3 2 Rev:16 2008-11-01 1 Einleitung Die mathematische Logik ist ein neueres Teilgebiet der Mathematik, in dem auf die Logik – also auf die Lehre vom schlüssigen Argumentieren – mathematische Methoden angewendet werden. Darunter versteht man insbesondere einen formalen Zugang zur Logik, der sich nicht der gewöhnlichen Sprache, sondern formaler Sprache bedient. Zu Beginn des zwanzigsten Jahrhunderts versuchte man unter anderem, die gesamte Mathematik in einen formalen logischen Rahmen zu pressen, ja sogar ein Verfahren zu entwickeln, das alle mathematischen Aussagen auf ihren Wahrheitsgehalt überprüfen könnte. Später musste man jedoch erkennen, dass diesen Ideen Grenzen gesetzt sind, was wiederum zu neuen Fragen führte. Heute geht die mathematische Logik weit über das oben genannte hinaus. Sie hat innerhalb der Mathematik einen festen Platz, weil sie nicht nur die Grundlagen der Mathematik erklärt, sondern weil ihre Methoden in klassischen Teilgebieten der Mathematik erfolgreich eingesetzt werden können. Um die anfängliche Geschichte der mathematischen Logik besser begreifen zu können, sehen wir uns in Folie 1 zunächst zwei Zitate aus demselben Lehrbuch, allerdings aus verschiedenen Ausgaben, an. In der ersten Auflage von 1928 wird noch die Suche nach einer Lösung des Entscheidungsproblems als vorrangigste Aufgabe angesehen und implizit davon ausgegangen, dass es ein solches gibt, während aus der sechsten Auflage von 1972 die Einsicht spricht, dass das Entscheidungsproblem nicht gelöst werden kann. Desweiteren betrachten wir ein Zitat von Kurt Gödel aus dem Jahr 1931, siehe Folie 2, das zum einen deutlich macht, dass zu Beginn des zwanzigsten Jahrhunderts Anstrengungen unternommen wurden, die gesamte Mathematik zu formalisieren. Zum anderen wird aber auch deutlich, dass diese Anstrengungen zum Scheitern verurteilt sind. Der Schritt von der mathematischen Logik zur Informatik ist nicht weit: Bei der Spezifikation von Informatiksystemen möchte man genauso wie in der Logik zu formalen, eindeutigen, nicht fehlinterpretierbaren Aussagen kommen. Wenn es um die Korrektheit von Informatiksystemen geht, wären formale Beweise – ein zentraler Gegenstand der mathematischen Logik – äußerst wünschenswert. 3 Rev:16 2008-10-31 1 Einleitung David Hilbert und Wilhelm Ackermann Grundzüge der theoretischen Logik Erste Auflage, 1928, S. 72: »Das Entscheidungsproblem ist gelöst, wenn man ein Verfahren kennt, das bei einem vorgelegten logischen Ausdruck durch endlich viele Operationen die Entscheidung über die Allgemeingültigkeit bzw. Erfüllbarkeit erlaubt. [. . . ] das Entscheidungsproblem muss als das Hauptproblem der mathematischen Logik bezeichnet werden.« Sechste Auflage, 1972, S. 120: »Es konnte nun zuerst von A. Church [5] gezeigt werden, daß die obengenannte, einem allgemeinen Entscheidungsverfahren entsprechende Funktion nicht zu den berechenbaren Funktionen gehört.« Folie 1 Kurt Gödel Über formal unentscheidbare Sätze der Principia mathematica und verwandter Systeme I, Monatshefte für Mathematik und Physik 38, 173–198 Seite 173: »Die Entwicklung der Mathematik in der Richtung zu größerer Exaktheit hat bekanntlich dazu geführt, daß weite Gebiete von ihr formalisiert wurden, in der Art, daß das Beweisen nach einigen wenigen mechanischen Regeln vollzogen werden kann. [. . . ] Diese beiden Systeme sind so weit, daß alle heute in der Mathematik angewendeten Beweismethoden in ihnen formalisiert, d. h. auf einige wenige Axiome und Schlußregeln zurückgeführt sind. Es liegt daher die Vermutung nahe, daß diese Axiome und Schlußregeln dazu ausreichen, alle mathematischen Fragen, die sich in den betreffenden Systemen überhaupt formal ausdrücken lassen, auch zu entscheiden. Im folgenden wird gezeigt, daß dies nicht der Fall ist [. . . ]« Folie 2 4 Rev:16 2008-10-31 1 Einleitung David Hilbert, 1862–1943 Kurt Gödel, 1906–1978 Folie 3 5 Rev:16 2008-10-31 2 Aussagenlogik 2.1 Einleitung Wir beschäftigen uns zunächst mit Aussagen. Darunter versteht man üblicherweise Behauptungen, die für sich wahr oder falsch sind. Interessant wird es, wenn Aussagen aus anderen Aussagen durch logische Verknüpfungen (Junktoren) wie oder und nicht zusammengesetzt werden. Beispiel 1 (Aussagen). • Eine einfache Aussage: Der Mond ist eine Kugel. • Eine zusammengesetzte Aussage: Der Mond ist eine Kugel oder der Mond ist ein Würfel. • Eine weitere zusammengesetzte Aussage: Wenn der Mond kein Würfel ist, dann ist die Erde eine Kugel. Interessanter wird es, wenn man zwischen Aussagen logische Schlüsse zieht. Beispiel 2. • Erste Aussage: Es ist Sonntag. • Zweite Aussage: Wenn es Samstag oder Sonntag ist, dann ist Wochenende. • Schlussfolgerung: Es ist Wochenende. Bei solchen Überlegungen ist es nicht wichtig, von welcher Art die Basisaussagen sind, sondern lediglich, ob sie wahr oder falsch sind und wie die Zusammensetzung ist. Genau das ist der Ausgangspunkt der Aussagenlogik. 2.2 Syntax und Semantik Eine Aussagenvariable hat die Form X i , wobei i eine natürliche Zahl ist. Die Menge aller Aussagenvariablen bezeichnen wir mit VAL . Wir benutzen zwei aussagenlogischen Konstantensymbole, 0 und 1. Die Menge F AL der aussagenlogischen Formeln ist induktiv (siehe Folie 4) definiert wie folgt. 1. Basiselemente: • Jedes der beiden Konstantensymbole ist eine aussagenlogische Formel. • Jede Aussagenvariable ist eine aussagenlogische Formel. Diese aussagenlogischen Formeln heißen atomar. 2. Induktionsregeln: • Ist ϕ eine aussagenlogische Formel, dann ist auch ¬ϕ eine aussagenlogische Formel. • Sind ϕ und ψ aussagenlogische Formeln, so sind auch (ϕ ∨ ψ), (ϕ ∧ ψ), (ϕ → ψ) und (ϕ ↔ ψ) aussagenlogische Formeln. 6 Rev:16 2008-11-01 2 Aussagenlogik Die so entstehenden aussagenlogischen Formeln heißen zusammengesetzt. Erinnerung: Induktive Mengendefinitionen Definition einer Menge M: 1. Basismenge: Es wird eine Menge M0 von Basiselementen, die alle zu M gehören sollen, vorgegeben. 2. Induktionsregeln: Es werden Regeln der Form »Wenn x0 ∈ M, . . . , xr −1 ∈ M, so h(x0 , . . . , xr −1 ) ∈ M.« angegeben. Dann ist die dadurch definierte Menge die kleinste Menge, die M0 enthält und den Regeln entspricht. Folie 4 Beispiel 3. • Beispiele für aussagenlogische Formeln: 0, (X 0 ∨ X 1 ), ((X 0 → X 312 ) ∧ ¬X 1 ). • Keine aussagenlogischen Formeln: 01, X 1 ∧ X 4 . Wir benutzen im Zusammenhang mit Formeln die Terminologie, die auf Folie 5 zu finden ist. Wir werden häufig Funktionen definieren wollen, die auf der Menge aller aussagenlogischen Formeln definiert sind. Zum Beispiel wollen wir jeder Formel die Menge der in ihr vorkommenden Variablen oder ihre Länge oder ihre Schachtelungstiefe zuordnen. Dazu benutzen wir in der Regel induktive Definitionen, wie sie auf Folie 6 erläutert sind. Dabei ist es wichtig, einzusehen, dass jede aussagenlogische Formel nur auf eine Art zustande kommen kann. Das glauben wir gern, wollen es aber auch beweisen, was nicht schwierig, aber aufwändig ist. Wir stellen dies deshalb zurück. Jeder Formel weisen wir die Menge der in ihr vorkommenden Variablen per Induktion (siehe Folie 6) zu: 1. Basiszuordnung: vars(0) = ;, vars(1) = ;, vars(X i ) = {X i }. 2. Induktionsregeln: vars(¬ϕ) = vars(ϕ), vars(ϕ ∗ ψ) = vars(ϕ) ∪ vars(ψ) für ∗ ∈ {∨, ∧, → , ↔}. Eine (aussagenlogische) Variablenbelegung ist eine partielle Funktion VAL 99K {0, 1}. Eine aussagenlogische Variablenbelegung β passt zu ϕ ∈ F AL , falls vars(ϕ) ⊆ dom(β). 7 Rev:16 2008-11-01 2 Aussagenlogik Terminologie zu aussagenlogischen Formeln Form Lesart Formeltyp (ϕ ∨ ψ ) »oder« Disjunktion (ϕ ∧ ψ ) »und« Konjunktion (ϕ → ψ ) (ϕ ↔ ψ ) »wenn . . . , so . . . « »genau dann, wenn« Konditional Bikonditional ϕ Disjunktionsglied Konjunktionsglied Antezedenz ψ Disjunktionsglied Konjunktionsglied Sukzedenz Eine aussagenlogische Formel der Form ¬ϕ heißt Negation und wird »nicht ϕ« gelesen. 0 und 1 heißen Wahrheitswerte und werden »falsch« und »wahr« genannt. Folie 5 Wir definieren eine Funktion ·· , die jeder Variablenbelegung β und jeder Formel ϕ ∈ F AL , die zu β passt, ihren Wahrheitswert (Interpretation) unter β zuordnet, induktiv wie folgt: 1. Basisvorschriften: 0β = 0, 1β = 1, X i β = β(X i ) für jede X i ∈ dom(β). 2. Induktionsregeln: Für zusammengesetzte Formeln wird der Wahrheitswert gemäß Abbildung 7 zusammengesetzt. Beispiel 4. Sei β gegeben durch β(V0 ) = 1, β(V1 ) = 1 und β(V2 ) = 0. Dann gilt ¬((¬V0 ∧ V1 ) ∨ V2 )β = 1. 2.3 Modellierung Wir wollen nun beispielhaft Sachverhalte formal durch aussagenlogische Formeln beschreiben. Beispiel 5. Altes Beispiel: Wenn es Samstag oder Sonntag ist, dann ist Wochenende. Wir benutzen drei Variablen: X 0 , X 1 und X 2 , wobei X 0 beschreiben soll, ob es Samstag ist, X 1 beschreiben soll, ob es Sonntag ist, und X 2 beschreiben soll, ob es Wochenende ist. Dann schreiben wir: ((X 0 ∨ X 1 ) → X 2 ) . 8 Rev:16 2008-11-01 2 Aussagenlogik Erinnerung: Definitionen über induktiv definierten Mengen Definition einer Funktion f , die auf einer induktiv definierten Menge M, wie oben, definiert ist: 1. Basiszuordnung: Zu jedem Element m ∈ M0 wird f (m) angegeben. 2. Induktionsregeln: Zu jeder Regel wird eine korrespondierende Regel der Form »Wenn x0 ∈ M, . . . , xr −1 ∈ M, so f (h(x0 , . . . , xr −1 )) = h0 (f (x0 ), . . . , f (xr −1 )).« angegeben. 3. Eindeutige Konstruktion: Zu jedem m ∈ M darf es höchstens eine Regel und eine Wahl m0 , . . . , mr −1 geben, so dass m durch Anwendung der Regel auf m0 , . . . , mr −1 entsteht. Und wenn es eine solche gibt, darf m nicht zu M0 gehören. Variante Man greift bei den Induktionsregeln auch auf die xi zurück: »Wenn x0 ∈ M, . . . , xr −1 ∈ M, so f (h(x0 , . . . , xr −1 )) = h0 (x0 , . . . , xr −1 , f (x0 ), . . . , f (xr −1 )).« Folie 6 Manchmal ist es praktischer, wenn Variablen – wie bei der Programmierung – aussagekräftige Bezeichnungen erhalten. Deshalb erlauben wir die Benutzung anderer Variablennamen in Beispielen und stellen uns vor, dass diese bei einer formalen Umsetzung durch die Variablen aus VAL ersetzt werden. Die obige Formel könnten wir zum Beispiel besser in der Form ((X Sams ∨ X Sonn ) → X WE ) schreiben. Die folgenden zwei Beispiele sind von ähnlicher Art. Das Ziel ist es, gewisse »gute« Elemente aus einer vorgegebenen Menge auszusondern: In dem eine Beispiel geht es darum, aus der Menge aller 2-Färbungen eines Graphen die zulässigen auszuwählen, während in dem anderen aus allen Möglichkeiten, eine Sudokuinstanz zu vervollständigen, die korrekte ausgewählt wird. 2.3.1 Beispiel: Bipartite Graphen Wir erinnern uns an ungerichtete Graphen und Graphfärbungen durch Folie 8. Wir können uns eine Färbung des Beispielgraphen vorstellen als eine Variablenbelegung β mit Definitionsbereich {X 0 , . . . , X 6 }. Genauer: Wir identifizieren jede 2-Färbung c mit der Belegung βc definiert durch βc (X i ) = c(v i ). Dass eine solche Färbung gültig ist, können wir 9 Rev:16 2008-11-01 2 Aussagenlogik Semantik der aussagenlogischen Junktoren ϕβ ψβ ¬ϕβ ϕ ∨ ψβ ϕ ∧ ψβ ϕ → ψβ ϕ ↔ ψβ 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 Folie 7 dann beschreiben durch die Formel ϕ, die definiert ist durch: ϕ = ((((((((X 0 ↔ ¬X 1 ) ∧ (X 0 ↔ ¬X 2 )) ∧ (X 1 ↔ ¬X 4 )) ∧ (X 2 ↔ ¬X 4 )) ∧ (X 1 ↔ ¬X 3 )) ∧ (X 1 ↔ ¬X 5 )) ∧ (X 3 ↔ ¬X 6 )) ∧ (X 5 ↔ ¬X 6 )) Sie drückt aus, dass die Eckpunkte jeder Kante unterschiedlich gefärbt sind. β Also: Eine 2-Färbung c von G ist gültig genau dann, wenn ϕc = 1. Die obige Formel ist schwer zu lesen, weshalb wir die folgenden üblichen Konventionen vereinfachen die Lesbarkeit: • Das äußerste Klammerpaar kann weggelassen werden. • Ein Ausdruck der Form ((. . . ((ϕ0 ∗ ϕ1 ) ∗ ϕ2 ) . . . ) ∗ ϕr −1 ) kann für ∗ ∈ {∨, ∧, ↔} durch (ϕ0 ∗ ϕ1 ∗ ϕ2 ∗ · · · ∗ ϕr −1 ) ersetzt werden. • Ein Ausdruck der obigen Form kann auch ganz kurz durch ∗i <r ϕ abgekürzt werden. Wir können nun die obige Formel in der Form (X 0 ↔ ¬X 1 ) ∧ (X 0 ↔ ¬X 2 ) ∧ (X 1 ↔ ¬X 4 ) ∧ (X 2 ↔ ¬X 4 ) ∧ (X 1 ↔ ¬X 3 ) ∧ (X 1 ↔ ¬X 5 ) ∧ (X 3 ↔ ¬X 6 ) ∧ (X 5 ↔ ¬X 6 ) und in der Form ^ i , j : i < j <7 und {i , j }∈E (X i ↔ ¬X j ) . Abschließend wollen wir die obige Beobachtung verallgemeinern: 10 Rev:16 2008-11-01 2 Aussagenlogik Ungerichtete Graphen Ein ungerichteter Graph ist ein Paar (V , E ) bestehend aus Ï einer Menge V von Knoten und Ï einer Menge E ⊆ ¡E ¢ 2 von Kanten. v4 v3 v2 v1 v6 v0 v5 Eine k-Färbung ist eine Funktion c : V → {0, . . . , k − 1}. Sie heißt gültig, wenn c(v ) 6= c(w ) für alle (v , w ) ∈ E gilt. Ein Graph heißt bipartit, wenn es eine zulässige 2-Färbung gibt. Folie 8 Lemma 1 (bipartite Graphen). Sei G = (V, E ) ein ungerichteter endlicher Graph mit Knotenmenge {0, . . . , n − 1} und ϕ die Formel definiert durch ^ i , j : i < j <n und {i , j }∈E (X i ↔ ¬X j ) . (2.1) 1. Für jede 2-Färbung c von G gilt: ϕβc = 1 genau dann, wenn c gültig ist. 2. G ist bipartit genau dann, wenn es eine Belegung β mit {X 0 , . . . , X n−1 } ⊆ dom(β) gibt, die ϕ durch 1 interpretiert. Dem Beweis wenden wir uns später zu. Abschließend treffen wir noch die folgende wichtige Definition, die durch das vorangehende Beispiel gut motiviert ist: Eine Belegung β, die zu einer Formel ϕ passt, wird erfüllend genannt, wenn ϕβ = 1 gilt. Eine Formel ϕ heißt erfüllbar, wenn es eine erfüllende Belegung für sie gibt. 2.3.2 Beispiel: Sudoku Wir betrachten zunächst Folie 9, um uns an Sudoku zu erinnern. Um Sudoku modellieren zu können, setzen wir N = {1, . . . , 9}, M = N ∪{?} und R = {0, 1, 2}. Eine Sudokuinstanz ist dann eine Matrix S ∈ M 9×9 . Ein Lösungskandidat ist eine Matrix L ∈ N 9×9 , die in den von ? verschiedenen Einträgen mit S übereinstimmt. Sie heißt Lösung, wenn die auf der Folie angegebenen Sudokubedingungen erfüllt sind. 11 Rev:16 2008-11-01 2 Aussagenlogik Sudoku 5 6 1 8 4 7 9 2 3 3 7 9 5 2 1 6 8 4 4 2 8 9 6 3 1 7 5 6 1 3 7 8 9 5 4 2 7 9 4 6 5 2 3 1 8 8 5 2 1 3 4 7 9 6 9 3 5 4 7 8 2 6 1 1 4 6 2 9 5 8 3 7 2 8 7 3 1 6 4 5 9 Bedingungen Sei N = {1, . . . , 9}. Ï In jeder Zeile jedes Element aus N genau einmal. Ï In jeder Spalte jedes Element aus N genau einmal. Ï In jeder Region jedes Element aus N genau einmal. Dabei ist eine Region eine durch fette Linien eingegrenzte 3 × 3-Matrix. Folie 9 Ziel ist es, zu einer gegebenen Sudokuinstanz eine Formel ϕS zu entwickeln, deren erfüllende Belegungen genau die Lösungen von S beschreiben. Dazu benutzen wir Aussagenvariablen der Form X ik, j mit i , j , k ∈ N (insgesamt 729 Variablen). Dann lassen sich Sudokulösungskandidaten leicht in Belegungen der Variablen umsetzen: Zu L ∈ N 9×9 definieren wir die Belegung βL durch ( 1 , falls L i , j = k, βL (X ik, j ) = 0 , sonst. Mit anderen Worten, X ik, j bedeutet, dass in Zeile i und Spalte j die Zahl k steht. Offensichtlich kann nicht jeder Belegung der Variablen ein Lösungskandidat zugeordnet werden, denn wir befänden uns zum Beispiel dann in einer widersprüchlichen Situation, 4 5 wenn X 1,3 und X 1,3 der Wert 1 zugeordnet würde. Deshalb verschaffen wir uns zunächst eine Formel, die dieses Problem behebt. Die Formel ϕMatrix soll besagen, dass eine Belegung einer Matrix entspricht: 1. In jedem Matrixeintrag steht mindestens ein Element aus N . 2. In jedem Matrixeintrag steht höchstens ein Element aus N . Das kann wie folgt formuliert werden: ^ ^ _ k 0 ϕMatrix = Xi ,j ∧ ¬(X ik, j ∧ X ik, j ) . (2.2) i , j ∈N k∈N i , j ,k,k 0 ∈N :k6=k 0 Dann können wir festhalten: 12 Rev:16 2008-11-01 2 Aussagenlogik Bemerkung 1. 1. Ist β eine Variablenbelegung, die zu ϕMatrix passt, und für die ϕMatrix β β gilt, so ist die Matrix L β ∈ N 9×9 mit L i , j = k, falls β(X ik, j ) = 1, wohldefiniert. 2. Ist M ∈ N 9×9 , so gilt ϕMatrix βM = 1. Jetzt wollen wir die Lösungskandidaten zu einer gegeben Sudokuinstanz S beschreiben. Das können wir machen, in dem wir zusätzlich zu ϕMatrix fordern, dass in jedem von ? verschiedenen Eintrag von S die entsprechende Zahl steht. Dazu benutzen wir die Formel ψS gegeben durch ^ ψS = X ik, j . (2.3) i , j ,k∈N :S i , j =k Bemerkung 2. 1. Ist L ein Lösungskandidat für S, dann gilt ϕMatrix ∧ ψS βL = 1. 2. Ist β eine Variablenbelegung, die zu ϕMatrix ∧ ψS passt und für die ϕMatrix ∧ ψS β = 1 gilt, dann ist L β ein Lösungskandidat für S. Ganz zum Schluss müssen wir nur noch sagen, wann ein Lösungskandidat eine Lösung ist, was wir ausdrücken können durch: 1. In jeder Zeile steht jedes Element aus N mindestens einmal. 2. In jeder Spalte steht jedes Element aus N mindestens einmal. 3. In jeder Region steht jedes Element aus N mindestens einmal. Diese drei Bedingungen spiegeln sich wieder in: ^ _ k Xi ,j i ,k∈N j ∈N ^ _ k ^ Xi ,j ϕLösung = (2.4) i ∈N j ,k∈N ^ _ k X p3+p 0 +1,q3+q 0 +1 p,q∈D,k∈N p 0 ,q 0 ∈D Für die gesuchte Formel können wir also ϕS = ϕMatrix ∧ ψS ∧ ϕLösung (2.5) nehmen: Lemma 2 (Sudoku). Sei S eine Sudokuinstanz. 1. Ist L eine Lösung von S, so ist βL eine erfüllende Belegung für ϕS . 2. Ist β : {X ik, j | i , j , k ∈ N } → {0, 1} eine erfüllende Belegung für ϕS , dann ist L β eine Lösung von S. Die gesamte Formel ist noch einmal auf Folie 9 zu sehen. Die Weise, nach der wir gerade vorgegangen sind, ist typisch. Man kann sie kurz wie folgt beschreiben. Die Gesamtformel ist eine Konjunktion von drei Formeln, die folgende Zwecke erfüllen: 13 Rev:16 2008-11-01 2 Aussagenlogik Sudokuformel ϕS = ϕMatrix ∧ ψS ∧ ϕLösung mit ϕMatrix = ψS = ^ _ i ,j ∈N k ∈N Xik,j ∧ ^ i ,j ,k ∈N:Si ,j =k ^ i ,j ,k ,k 0 ∈N:k 6=k 0 0 ¬(Xik,j ∧ Xik,j ) , Xik,j , ^ _ k Xi ,j i ,k ∈N j ∈N ^ ^ _ k ϕLösung = Xi ,j j ,k ∈N i ∈N ^ _ k Xp3 +p 0 +1,q3+q 0 +1 p ,q ∈D ,k ∈N p 0 ,q 0 ∈D Folie 10 1. Beschreibung der Menge aller Belegungen, die zu Lösungskandidaten passen. 2. Einschränkung auf die Lösungskandidaten zu einer gegebenen Instanz. 3. Weitere Einschränkung auf die eigentlichen Lösungen. Zum Abschluss werfen wir noch einmal einen Blick auf Folie 11, die das Spiel Superhirn erläutert. Eine Aufgabe, die man sich hier stellen kann, besteht darin, zu einem gegebenen Zeitpunkt eine neue Reihe zu bestimmen, die noch für die verdeckte Wahl in Frage kommt. Eine entsprechende Formel zu konstruieren ist etwas schwieriger (warum?), weshalb wir davon vorerst absehen. 2.4 Eindeutige Konstruktion von Formeln Wir haben bislang bei induktiven Definitionen von Funktionen, deren Definitionsbereich die Menge der aussagenlogischen Formeln ist, angenommen, dass jede Formel auf nur eine Weise zusammengesetzt werden kann. Das wollen wir noch beweisen und zwar per vollständiger Induktion über die Länge aller Formeln. Auf Folie ?? ist dafür das Beweisprinzip der vollständigen Induktion noch einmal dargestellt. Wir beginnen damit, zu zeigen, dass keine Formel ein echtes Anfangsstück einer anderen Formel sein kann. Dabei benutzten wir folgende Notation. Wir schreiben u @ v für zwei Zeichenreihen, wenn u ein echtes Anfangsstück von v ist. 14 Rev:16 2008-11-01 2 Aussagenlogik Superhirn Ï scharzer Stecker: an einer Position stimmt Farbe überein Ï weißer Stecker: Farbe stimmt, Position aber nicht Ziel Finde Formel, die beschreibt, welche Reihen mit der bisherigen Information verträglich sind. Schwieriger . . . Folie 11 Lemma 3. Sind ϕ, ψ ∈ F AL , so gilt ϕ 6@ ψ. Beweis. Wir beweisen dies per vollständiger Induktion über die Länge. Die Eigenschaft ist: Ist ψ ∈ F AL mit l (ψ) = n + 1, so gilt ϕ 6@ ψ für alle ϕ ∈ F AL . Induktionsanfang. Wir müssen zeigen, dass für jedes ψ ∈ F AL mit l (ψ) = 1 und für alle ϕ ∈ F AL ϕ @ 6 ψ gilt. Wegen l (ψ) = 1 gibt es nur eine Zeichenreihe ϕ mit ϕ @ ψ, nämlich die leere Zeichenkette. Diese Zeichenreihe ist aber kein Element von F AL . Induktionsschritt. Sei n ∈ N. Wir nehmen an (Induktionsannahme), dass ϕ @ ψ0 für alle ϕ ∈ F AL und ψ0 ∈ F AL mit l (ψ0 ) ≤ n +1 gilt. Für ein beliebiges ψ ∈ F AL mit l (ψ) = n +2 müssen wir zeigen, dass ϕ @ 6 ψ gilt. Wir führen ein Fallunterscheidung nach der Form von ψ durch. 1. Fall, ψ = ¬ψ0 . Wir nehmen an, dass ψ @ ψ mit ϕ ∈ F AL gilt. Wenn l (ϕ) = 1, dann ist ϕ = ¬, was keine Formel ist – Widerspruch. Wenn l (ϕ) > 1, dann können wir ϕ in der Form ¬ϕ0 schreiben, wobei ϕ0 eine Formel ist. Dann haben wir ϕ0 @ ψ0 – Widerspruch zur Induktionsannahme. 2. Fall, ψ = (ψ0 ∗ ψ1 ) mit ∗ ∈ {∨, ∧, →, ↔}. Wir nehmen an, dass ϕ ∈ F AL ein echtes Anfangsstück von ψ ist (genau wie oben). Es muss l (ϕ) > 1 gelten, denn ( ist keine Formel. Also können wir ϕ als (ϕ0 ◦ ϕ1 ) schreiben mit ϕ0 , ϕ1 ∈ F AL und ◦ ∈ {∨, ∧, →, ↔}. Durch Vergleich der Zeichenreihen erhalten wir: ϕ0 @ ψ0 oder ψ0 @ ϕ0 oder ϕ1 @ ψ1 . Jeder dieser Fälle widerspricht der Induktionsannahme. Nun können wir die eigentliche Behauptung beweisen: Satz 1 (eindeutige Konstruktion). Jede aussagenlogische Formel kann nur in einer Weise im Sinne von Folie 6 konstruiert werden. 15 Rev:16 2008-11-01 2 Aussagenlogik Erinnerung: Das Beweisprinzip der vollständigen Induktion Beweis dafür, dass jede natürliche Zahl eine gewisse Eigenschaft besitzt: 1. Induktionsanfang: Man zeigt, dass die Zahl 0 die Eigenschaft besitzt. 2. Induktionsschritt: 2.1 Induktionsannahme: Man nimmt an, dass eine beliebige Zahl n die Eigenschaft besitzt. 2.2 Man zeigt, dass die Induktionsbehauptung gilt. Induktionsbehauptung: Die Zahl n + 1 besitzt die Eigenschaft. Variante Allgemeinere Induktionsannahme: 2.1 Man nimmt an, dass für eine natürlich Zahl n alle Zahllen m ≤ n die Eigenschaft besitzen. Folie 12 Beweis. Hier reicht es, eine einfache Fallunterscheidung durchzuführen. Sei ψ ∈ F AL beliebig. 1. Fall, ϕ ist eine atomare Formel. Jede atomare Formel hat die Länge 1 und kann nicht durch eine der Induktionsregeln erzeugt werden. 2. Fall, ϕ = ¬ψ0 . Eine solche Formel kann nur eine Negation sein und deshalb nur auf eine Weise konstruiert werden. 3. Fall, ϕ = (ϕ0 ∗ ϕ1 ) mit {∗} ∈ {∨, ∧, →, ↔} und ϕ0 , ϕ1 ∈ F AL . Wir nehmen an, dass außerdem ϕ = (ϕ00 ◦ ϕ01 ) mit {◦} ∈ {∨, ∧, →, ↔}, ϕ00 , ϕ01 ∈ F AL und l (ϕ0 ) 6= l (ϕ1 ) gilt. Dann gilt entweder ϕ0 @ ϕ00 oder ϕ00 @ ϕ0 – ein Widerspruch zum vorigen Lemma. 2.5 Formeln in Scheme Um mit aussagenlogischen Formeln in Scheme umgehen zu können, definieren wir eine Reihe von Strukturen, und zwar für die Modellierung von Variablen und für die Modellierung der Junktoren. Variablenbelegungen modellieren wir durch Listen von Paaren bestehend aus Variablenindex und Wahrheitswert. Das Bestimmen der Belegung einer Variablen kann dann durch einfaches Durchsuchen der Liste bewerkstelligt werden. Will man eine Formel bezüglich einer Variablenbelegung bewerten, kann man dann einfach rekursiv vorgehen. Die Details sind zu finden auf den Folien 13–15. 16 Rev:16 2008-11-01 2 Aussagenlogik Formeln in Scheme ; Structures for constructing formulas. (define-struct variable (index)) (define-struct negation (negated)) (define-struct disjunction (left right)) (define-struct conjunction (left right)) (define-struct conditional (left right)) (define-struct biconditional (left right)) Folie 13 Variablenbelegungen in Scheme ; Structure for a single assignment: variable |-> truth value. (define-struct sass (index value)) ; Structure for an undefined value. (define-struct undefined ()) ; Look-up of a variable value; an assignment is a list of sass. (define (look-up index assignment) (if (null? assignment) (make-undefined) (if (= index (sass-index (first assignment))) (sass-value (first assignment)) (look-up index (rest assignment))))) Folie 14 17 Rev:16 2008-11-01 2 Aussagenlogik Auswertung von Formeln in Scheme ; Evaluate formula w.r.t. a variable assignment. (define (evaluate formula assignment) (cond ((eq? formula #t) #t) ((eq? formula #f) #f) ((variable? formula) (look-up (variable-index formula) assignment)) ((negation? formula) (not (evaluate (negation-negated formula) assignment))) ((disjunction? formula) (or (evaluate (disjunction-left formula) assignment) (evaluate (disjunction-right formula) assignment))) ((conjunction? formula) (and (evaluate (conjunction-left formula) assignment) (evaluate (conjunction-right formula) assignment))) ((conditional? formula) (or (not (evaluate (conditional-left formula) assignment)) (evaluate (conditional-right formula) assignment))) ((biconditional? formula) (eq? (evaluate (biconditional-left formula) assignment) (evaluate (biconditional-right formula) assignment))))) Folie 15 18 Rev:16 2008-11-01