Mathematik-Vorkurs für Informatiker Christian Eisentraut und Julia Krämer Universität des Saarlandes 3. September 2012 Inhaltsverzeichnis Vorwort 5 1 Logik 1.1 Aussagenlogik . . . . . . . . . . . . . . . . . 1.1.1 Aussagen . . . . . . . . . . . . . . . 1.1.2 Syntax . . . . . . . . . . . . . . . . . 1.1.3 Semantik . . . . . . . . . . . . . . . 1.1.4 Gesetze der Aussagenlogik . . . . . . 1.2 Prädikatenlogik . . . . . . . . . . . . . . . . 1.2.1 Syntax . . . . . . . . . . . . . . . . . 1.2.2 Semantik . . . . . . . . . . . . . . . 1.2.3 Logische Äquivalenz von Prädikaten 1.2.4 Notation . . . . . . . . . . . . . . . . 1.2.5 Wichtige Gesetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 10 13 24 35 38 39 42 52 52 53 2 Schließen und Beweisen 2.1 “Definition, Satz, Beweis” – Begrifflichkeiten . . 2.2 Schließen und Beweisen . . . . . . . . . . . . . . 2.3 Schlussregelsammlung . . . . . . . . . . . . . . . 2.3.1 Schlussregeln bei quantifizierten Aussagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 60 73 74 3 Mengen 3.1 Schreibweisen von Mengen . . 3.2 Mengenvergleiche . . . . . . . 3.3 Kardinalität oder Mächtigkeit 3.4 Potenzmenge . . . . . . . . . 3.5 Produktmenge . . . . . . . . 3.6 Mengenoperationen . . . . . . 3.7 Probleme der Mengenlehre . . 83 83 85 88 88 90 91 94 . . . . . . . . . . . . . . . . von Mengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Relationen 4.1 Dartellung von Relationen . . . . . . . . 4.2 Eigenschaften von binären Relationen R 4.3 Relationskomposition . . . . . . . . . . . 4.4 Alternative Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 . 99 . 99 . 105 . 106 3 Inhaltsverzeichnis 5 Induktion 107 5.1 Induktive Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.2 Natürliche Induktion . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.3 Wohlfundierte oder noether’sche Induktion . . . . . . . . . . . . . 113 6 Lösungen 4 119 Vorwort Endlich ist es soweit: Sie studieren Informatik! Endlich werden sie alles erfahren, was sie jemals über Hardware, Webbrowser und World of Warcraft wissen wollten. Aber leider scheint das nicht so ganz zu stimmen: Sie sitzen hier, im Mathematischen Vorkurs. Mathematik. Warum um alles in der Welt brauchen Sie jetzt einen mathematischen Vorkurs, wo sie doch mindestens 12 Jahre lang Mathematik in der Schule hatten, und vielleicht sogar direkt ohne Unterbrechung zu studieren beginnen? Ok, alles Wissen aus Stufe 11 und 12 ist nicht mehr ganz da, aber kann man das nicht im Studium lernen? Warum also dieser mathematische Vorkurs? Zu aller erst deshalb, weil Informatik und Mathematik nicht getrennt werden können. Informatik benutzt nicht nur die Mathematik intensiv, so wie es z.B. auch die Physik und die Chemie tut, sondern die Informatik ist selbst nichts anderes als Mathematik. Ja, tatsächlich, Hardware, Webbrowser, World of Warcraft, das alles ist nichts anderes als Mathematik. Bevor wir anfangen, Mathematik zu betreiben, haben wir jedoch oft eine falsche Vorstellung davon, was man in der Mathematik eigentlich tut. Als Mathematiker beschäftigt man sich mit Objekten, die es in der echten Welt eigentlich nicht gibt, aber irgendwie doch in der Welt vorzukommen scheinen. Nehmen wir zum Beispiel Zahlen. Haben Sie schon jemals eine Zahl getroffen? Haben Sie sie angefasst, geschmeckt, oder gehört? Sagen Sie jetzt nicht, 10 ist eine Zahl, und ich kenne sie sehr gut. Schon Millionen mal gesehen. 10 ist keine Zahl. Es ist ein Symbol, ein Wort, das für eine Zahl steht. Genau wie Liebe ein Wort für etwas ist, das sicherlich komplizierter und anders ist, als fünf Buchstaben in Folge. Sie halten 10 vielleicht für eine Zahl, weil wir in der Umgangssprache das gerne so machen. Aber 10 ist nur ein Symbol, nicht die Sache selbst. Schauen Sie jetzt einmal auf ihre beide Hände. Dort sehen Sie Finger. Und zwar zehn! Machen Sie unter der Dusche das Selbe mit Ihren Zehen. Wieder zehn. Zehn gibt es in unserer Welt ganz oft. Zehn Menschen, die sie zufällig treffen, zehn Stifte, die auf ihrem Schreibtisch liegen, und so weiter. Aber weder die Stifte, die Menschen, noch ihre Zehen und Finger sind die Zahl 10. Vielmehr ist 10 ein Konzept, das wir uns von der Welt machen, und es besagt, 10 ist das, was ist, wenn zehn Dinge in irgendeinem Sinne zusammen sind. Wenn das jetzt seltsam diffus klingt, dann liegt das daran, dass wir hier gerade versuchen, ein Konzept unseres Geistes abstrakt zu beschreiben. Und wie wir noch sehen werden, ist dies im Allgemeinen sehr schwer. Es ist auch der selbe Grund, weshalb Philosophen oft so scheinbar seltsame Gespräche führen, und man als Laie oft das Gefühlt hat, alles was dort gesagt wird, ist sehr wolkig und unklar. In der Philosophie geht es um Konzepte des Geistes und Objekte, die 5 Inhaltsverzeichnis in unserem Geist entstehen, und die keine offensichtliche Widerspiegelung in der Realität finden, eben solche Konzepte wie 10 und Liebe. Wenn wir das Konzept in unserem Geist haben, dann scheint uns ganz klar zu sein, was es bedeutet. Wenn wir jedoch genauer darüber nachdenken, und versuchen diese Konzepte anderen Menschen zu erklären, und sie damit exakt zu erfassen, wird es sehr schwierig. Was ich Ihnen zuvor darüber erzählt habe, was die Zahl 10 (nicht das Symbol!) eigentlich ist, ist auch wiederum nicht die ganze Wahrheit. Es ist nur der sogenannte kardinale Aspekt von Zahlen. Das meint nichts anderes, als dass Zahlen Vielfachheiten (sowas wie zehn gegenüber drei Zehen) beschreiben. Zahlen können aber auch noch mehr sein. Zahlen haben auch einen ordinalen Aspekt. Dabei geht es darum, das bei Zahlen die 1 vor der 2 kommt, und die 2 vor der 3 und so weiter. Es kommt uns dann nur auf die Ordnung der Zahlen an, und nicht auf ihre Eigenschaft Anzahl anzugeben. Aber das werden Sie im Studium noch genauer erfahren. Im Folgenden noch zwei weitere, weniger mathematische Beispiele, die verdeutlichen, wie häufig wir glauben, geistige Konzepte seien real, und für niemanden könnte es anders sein. Wissen Sie, was ein Baum ist? Ja, ich meine diese grünen Dinge im Wald und im Park. Vermutlich wissen Sie es. Irgendwo im Dschungel, wo es verdammt viele Bäume gibt, lebt ein Eingeborenenstamm, der nicht weiss, was Bäume sind. Das Konzept Baum existiert dort nicht. Jede Pflanze wird unterschieden, und hat auch einen Namen, aber diese Menschen kamen nie auf die Idee, all diese unterschiedlichen Lebewesen zur abstrakten Klasse Baum zusammenzufassen. Ähnlich interessant ist es, das manche Stämme nicht die Konzepte Links und Rechts kennen. Wenn Sie mit Ihrem Freund, oder Ihrer Freundin, bei einem romantischen Candle Light Dinner sich gegenübersitzen, dann wird die Kerze von Ihnen aus gesehen vielleicht links stehen, von Ihrem Partner aus gesehen rechts. Würden Sie beide aus dem eingangs erwähnten Stämmen stammen, würden dann beide einfach sagen, die Kerze steht im Norden. Dabei wird Lage immer nur nach Himmelsrichtungen bestimmt. Aufgabe 0.1 Versuchen Sie den Menschen unserer Eingeborenenstämme die Konzepte Baum und Links und Rechts möglichst präzise und allumfassend zu erklären. Überlegen Sie sich, ob Ihr Erklärungsversuch sich für die Eingeborenen eventuell ähnlich diffus und seltsam anfühlen mag, wie unser Erklärungsversuch der Zahl 10 zuvor. Wie fühlt sich Ihr Erklärungsversuch für Ihren Kommilitonen an, der ja eigentlich genau weiß, was Baum und Links und Rechts bedeutet? 6 Inhaltsverzeichnis Und los geht’s. . . (Wie bearbeite ich die Aufgaben im Skript sinnvoll?) Die Aufgaben innerhalb des Textes dienen dazu, neue Aspekte des bisher Gelernten zu betrachten. Es empfiehlt sich, diese Aufgaben direkt (an Ort und Stelle) zu bearbeiten und nicht weiterzulesen, bevor Sie sie bearbeitet haben. (Aber das haben Sie natürlich sowieso eben schon so gemacht, nicht wahr?) Sie erleichtern und vertiefen das Verständis für die Inhalte des Abschnittes. Mathematik ist also eine Lehre von Dingen, die nur im Geiste existieren, und die meist auch keinen, oder nur sehr undurchsichtige direkte Entsprechungen mit Dingen aus der realen Welt haben. Genau das ist auch das Geheimnis ihrer Mächtigkeit. Als Mathematiker beschäftigen wir uns mit phantastischen Gebilden, die nicht den Gesetzen der realen Welt gehorchen müssen, ja in dieser noch nicht einmal existieren müssen. Mathematik ist Freiheit. Gleichzeitig ist die Mathematik aber weit davon entfernt, abstrus zu sein, unklar und beliebig. Mathematik zu betreiben bedeutet ja gerade, diszipliniertes, klares und deutliches Denken zu lernen. Diese Art zu denken, nennt sich logisches Denken. Es ist ein Denken, dass klaren Gesetzmäßigkeiten folgt, und uns dadurch erlaubt, auf die Wahrheit und Richtigkeit dessen zu vertrauen, was wir mit logischem Denken erschlossen haben. Zugleich können alle anderen Menschen, die die Gesetzmäßigkeiten des logischen Denkens kennen, unseren Gedanken folgen und erkennen, dass sie richtig sind (sofern wir selbst keinen Fehler dabei gemacht haben). Als guter Mathematiker müssen wir also zwei Dinge erlernen: Einerseits ein sehr kreatives Denken, bei dem wir Spaß daran haben, neue Dinge in unserem Geist zu konstruieren, und mit diesen Dingen offen herumzujonglieren. Andererseits aber auch die Fähigkeit, diese tollen Wunderdinge, die wir uns erdacht haben, so präzise auszudrücken, und zugleich mit logischem Denken zu erkunden, dass ein jeder (mathematisch gebildete) Mensch diese Gedanken nachvollziehen kann. In diesem Vorkurs wollen wir genau diese beiden Dinge, die ein Mathematiker braucht, erlernen. Dies kann nicht in vier Wochen gelingen, jedoch können wir in dieser Zeit eine solide und stabile Basis schaffen, die uns hilft, diese Fähigkeiten während des Studiums immer weiter auszubilden. Beides sind übrigens Dinge, die Ihnen letzten Endes niemand beibringen kann. Nur Sie selbst können dies trainieren, durch beständiges Arbeiten mit mathematischen Ideen, und dem Versuch, diese korrekt aufzuschreiben. Genau das wollen wir gemeinsam beginnen. Aufgabe 0.2 Ist es prinzipiell möglich, mit anderen Menschen über ein beliebiges mathematisches “Ding an sich”, z.B. Zahlen, zu sprechen, ohne sich auf Symbole zurückzuziehen? 7 Inhaltsverzeichnis Sie fragen sich immer noch, weshalb Informatik eigentlich Mathematik sein soll? Hardware, Webbrowser und World of Warcraft sind Erfindungen unseres Geistes. Anders als elektrischer Strom und Atome in der Physik, waren CPUs und Softwareprogramme nicht da, bevor wir Menschen anfingen, sie zu erdenken. Innerhalb der Vorlesung Programmierung 1 an der Universität des Saarlandes, werden sie sehr schnell begreifen, dass sowohl Programmieren, als auch die Hardware, die diese Programme ausführt, nichts anderes ist als eine in mehr oder weniger materielle Form gegossene Mathematik. Intuitiv. . . Mathematik mochten Sie noch nie? Das ist (fast) überhaupt kein Problem. Die Mathematik, die wir im Folgenden betrachten, unterscheidet sich sehr stark von der, die Sie vielleicht bereits aus der Schule kennen. Außerdem wollen wir versuchen, Ihnen eine Intuition zu den Themen zu vermitteln. Dazu dienen diese Umgebungen. Scheinen also die Definitionen unklar, die Sätze verwirrend, halten Sie Ausschau nach diesen Boxen. 8 1 Logik Logik ist die Lehre des vernünftigen Schließens, Argumentierens und Beweisens. Es ist eben dieses vernünftige klare Denken, das für die Mathematik so wichtig ist. Alle Erkenntnis der Mathematik baut auf zwei Bausteinen auf: Exakte Definition von grundlegenden Objekten und Erschließen neuer Zusammenhänge oder Eigenschaften durch die Anwendung von logischem Denken. Logisches Denken ist an sich nichts ungewöhnliches. Es ist die Art, wie Menschen darüber nachdenken, wie Dinge zusammenhängen und auseinander hervorgehen. Alle von uns machen das jeden Tag. Die Sonne scheint, daher ist es warm. Wir schaffen eine logische Verbindung zwischen der Tatsache, dass die Sonne scheint, und es warm ist. Im Grunde macht mathematische Logik nun nichts anderes, als diese logischen Gedankengänge zu präzisieren. Dabei stellt man schnell fest, dass nicht alles, was wir im Alltag als gültigen logischen Schluss ansehen, auch wirklich zwingend richtig ist. Alle Kriminellen in meiner Stadt sind Ausländer. Mein Nachbar ist Türke. Deshalb schließe ich nachts die Türen lieber zweimal zu. Sogar unser harmloser logischer Schluss mit der Sonne war nicht korrekt. Der Satz erweckt den Eindruck, dass wenn die Sonne scheint, es auch warm ist. Wenn dies jedoch korrekt wäre, dann dürfte es niemals passieren können, dass es draußen hell ist, und trotzdem kalt. Genau diese Denkfehler eliminiert die mathematisch Logik, indem sie uns nur solche Schlüsse zu ziehen erlaubt 1 , wenn sie wirklich richtig sind 2 . Um dies zu erreichen, müssen wir die Sprache, in der wir mathematische Tatsachen beschreiben können, sehr einfach halten, und ihren Bestandteilen eine möglichst genaue Bedeutung geben. 1 Dies hindert uns natürlich weder daran, die Regeln der Logik unabsichtlich zu umgehen oder zu missbrauchen. Computerprogramme, sogenannte Beweissysteme, die diese Regeln beherrschen, und uns aufhalten, wenn wir nicht nach den Regeln denken, sind dabei eine große Hilfe. 2 Was dabei richtig und falsch ist, ist letzten Ende Auslegungssache, und es gibt da keine endgültige Wahrheit. Jedoch gibt es Regeln, auf die sich fast alle der schlausten Menschen dieser Erde seit vielen Jahrtausenden geeinigt haben. 9 1 Logik Und los geht’s. . . Sie haben schon zwei Fehlschlüsse gesehen. In diesem Kapitel ist es wichtig, den Unterschied zwischen den Schlüssen, die wir im Alltag ziehen und für logisch und nachvollziehbar halten, von denen zu trennen, die wir in der Mathematik ziehen dürfen. Überlegen Sie sich für die folgende Aufgabe, wo Sie solche Schlüsse im Alltag ziehen, wo Ihnen schon einmal gesagt wurde, Ihr Verhalten war logisch. Aufgabe 1.1 Überlegen Sie sich fünf typische Fehlschlüsse, die Menschen gerne ziehen und erklären Sie, warum sie diese eigentlich nicht ziehen dürfen. Beispiel 1.1 Wenn die Straße nass ist, dann hat es geregnet. Die Straße ist nicht nur dann nass, wenn es geregnet hat. Ein anderer Grund könnte zum Beispiel ein Wasserrohrbruch sein. Die erste solche Sprache, die wir kennenlernen werden, ist die Aussagenlogik. Wir können mit ihr schon viele Dinge beschreiben, und auch wichtige gültige logische Denkregeln beschreiben. 1.1 Aussagenlogik Die Aussagenlogik ist eine Sprache, zusammen mit einer Sammlung von Regeln des gültigen Schließens (erst dadurch wird sie zur Logik!), bei der sich alles um Aussagen dreht. 1.1.1 Aussagen Definition 1.1 Eine Aussage ist ein Satz, der zweifelsfrei entweder wahr oder falsch ist. Es ist dabei nicht wichtig, ob wir, oder jemand anderes diesen Satz jetzt oder irgendwann später beantworten kann. Es muss nur sichergestellt sein, dass es nicht möglich ist, dass dieser Satz irgendetwas zwischen wahr und falsch ist, oder gar beides zugleich. Es geht auch nicht darum, ob dieser Satz phantastisch oder realistisch ist. Beispiel 1.2 • Blau ist eine Farbe.“ Dies ist eine Aussage, und sie ist wahr. ” 10 1.1 Aussagenlogik • Alle Drachen können fliegen.“ Dies ist eine Aussage, obwohl sie nicht sehr ” realitätsnah ist. Aber entweder alle Drachen können fliegen, oder es gibt einen Drachen, der dies nicht kann. • 1 > 0 ist eine wahre Aussage, und zugleich eine ganz klassische mathematische Aussage! • Wenn ich dich nur umarmen dürfte!“ ist keine Aussage, sondern ein ” Wunsch. • Ich darf Markus immer umarmen.“ ist wiederum eine Aussage. Entweder ” ich darf Markus immer umarmen, oder nicht. • Stimmt es, dass Blau eine Farbe ist?“ Dieser Satz ist keine Aussage, es ist ” eine Frage. Fragen können niemals Aussagen sein. 11 1 Logik Intuitiv. . . Nicht alles, was bisher jedoch wie eine Aussage aussah, ist auch wirklich eine Aussage. Erinnern wir uns daran, dass Aussagen immer prinzipiell eindeutig wahr oder falsch sein müssen. Schauen wir uns nochmals den Satz Ich darf Markus immer umarmen genauer an. Wer ist eigentlich Markus, und wer ist ich? Solange wir nicht wissen, auf welche Personen sich dieser Satz bezieht, können wir auch nicht sagen, ob er stimmt, oder nicht. Also ist dies eigentlich keine Aussage, außer wir wissen genau, wer gemeint ist. Auch unter den mathematischen Ausdrücken haben wir so ein ähnliches Phänomen. Betrachten wir den Satz x + 3 > 5. Er sieht ja fast so aus wie die Aussage 1 > 0 aus unseren Beispielen vorher. 1 > 0 ist eine Aussage, daran ist nichts zu rütteln. Aber obiger Satz ist keine Aussage, denn wir wissen ja nicht, was genau x sein soll. Erst wenn wir eine Zahl für x festhalten, kann man überhaupt über Wahrheit oder Falschheit dieses Satzes reden. Ebenso wie vorher Markus für uns nur ein unbestimmter Platzhalter für eine Person war, so ist x ein Platzhalter für eine unbestimmte Zahl. Manchmal treffen wir auch Sätze, bei denen scheint alles eindeutig bestimmt zu sein, und sie sehen aus wie Aussagen, dennoch sind sie keine Aussagen. Beispiel 1.3 Erde > 0. Die Erde ist eindeutig ein bestimmter Planet, also kein Platzhalter. Ebenso ist die 0 eine ganz konkrete Zahl. Und dieser Satz sieht ansonsten fast so aus wie der Satz 1 > 0. Dennoch ist es keine Aussage. Er macht schlicht und ergreifend keinen Sinn. Man kann deswegen weder sagen, er ist wahr, noch kann man sagen, er ist falsch. Alle Aussagen, die wir bisher betrachtet haben, hatten eine sehr einfache Struktur, und bestanden aus einer einzigen Aussage. Man kann jedoch auch Aussagen bilden, die selbst aus mehreren Aussagen zusammengesetzt sind. Ein solches Beispiel ist Die Sonne scheint und es ist warm. Diese Aussage hat zwei Teilaussagen, Die Sonne scheint.“, und Es ist warm.“. ” ” Diese beiden Aussagen verknüpfen wir durch das Wort und, und bilden somit eine neue Aussage. Diese neue Aussage ist wahr, wenn beide Teilaussagen wahr sind, und falsch, sobald eine von beiden falsch ist. Es gibt noch eine weitere Wörter, die Aussagen sinnvoll verknüpfen, so dass durch die Verknüpfung erneut eine Aussage entsteht, das heißt, ein Satz, den man 12 1.1 Aussagenlogik eindeutig entweder mit wahr oder mit falsch beantworten kann. Aufgabe 1.2 Betrachten Sie die Konjunktionen der deutschen Sprache. Erhält man für jede Anwendung auf Teilaussagen tatsächlich wieder Aussagen (im mathematischen Sinne)? Wann genau sind die so gebildeten Aussagen jeweils wahr, und wann falsch? Durch die Einführung solcher Bindewörter, die wir in der Logik Operatoren 3 nennen, können wir aus Aussagen neue Aussagen bilden, so dass diese beliebig komplex werden können. Im folgenden Abschnitt werden wir mathematisch genau versuchen zu erfassen, was wir alles als eine Aussage verstehen wollen, und wie genau komplexe Aussagen aus einfacheren Aussagen entstehen. Gleichzeitig werden wir jeder Aussage eine eindeutige Bedeutung zuweisen, sodass jeder Logiker dieser Welt genau das selbe versteht wie wir, wenn wir eine Aussage aufschreiben. Im Folgenden wollen wir die Logik, die eine mathematische Sprache ist, exakt definieren. Tatsächlich lieben Informatiker mathematische Sprachen viel mehr als “richtige” Mathematiker. Fast immer, wenn der Informatiker eine neue Struktur in seinem Kopf entstehen lässt, kommt dabei eine Sprache heraus. Sollten Sie jetzt so langsam Bedenken überkommen, weil Sie in Ihrer Schulzeit am liebsten Französisch, Englisch, Latein, Griechisch und Spanisch gleichzeitig und für immer abgewählt hätten, dann kann ich Sie beruhigen. Mathematische, oder fast besser informatische Sprachen sind anders als diese natürliche Sprachen. Ihre Grammatik ist sehr einfach und klar, und ihre Bedeutung ist so exakt festgelegt, wie es nur irgendwie geht. Seltsamerweise scheint dies ein Grund zu sein, weshalb Sprachenliebhaber mathematisch Sprachen nicht lieben, Informatiker aber um so mehr. Jede Programmiersprache ist übrigens eine mathematische Sprache. Ich hoffe, es geht Ihnen jetzt wieder besser! Eine Sprache besteht immer aus den zwei grundlegenden Aspekten Syntax und Semantik. Die Syntax einer Sprache beschriebt, wie die Sätze einer Sprache geformt sein dürfen, also wie sich komplexe Sätze aus einfacheren Sätzen bilden lassen4 . Die Semantik einer Sprache ist ihre Bedeutung. Jeder Satz einer Sprache muss eine eindeutig festgelegte Bedeutung haben. Im Falle der Aussagenlogik bedeutet das, jede Aussage muss eindeutig entweder wahr bedeuten, oder falsch. 1.1.2 Syntax Die grundlegenden Bestandteile der Syntax einer Sprache sind Wörter. Ein typisches Wort in einer Programmiersprache ist das Wort if. Wenn wir mehrere Worte sinnvoll, das heißt nach den Regeln einer Grammatik aneinander Reihen, 3 historisch bedingt findet man in Schriften über die Aussagenlogik auch den Begriff Junktor anstelle von Operator. 4 In Programmierung 1 werden wir den Begriff Syntax genauer definieren 13 1 Logik dann erhalten wir einen Ausdruck. So ist z.B. in der Programmiersprache Pascal folgende Folge von Wörtern ein Ausdruck if x > 0 then x := 5 else x := 3;. Er setzt sich aus vielen verschiedenen Wörtern zusammen, nämlich if, x, >, 0, then, x, :=, 5, else, x, :=, 3, ;. Genau genommen sind manche dieser Wörter nochmals aus kleineren Objekten, den Zeichen, zusammengesetzt. So besteht das if aus dem Zeichen i, und dem Zeichen f. Wenn wir über formale Sprachen reden, dann reden wir jedoch häufig nicht über die Zeichen, sondern nur über die Worte, und betrachten diese als die kleinste Einheit der Syntax einer Sprache. Nur wenn wir in Programmierung 1 über die Syntax von Programmiersprachen reden, dann werden wir uns auch intensiv mit Zeichen beschäftigen müssen. Kommen wir nun zu der Syntax der Aussagenlogik. Die Syntax setzt sich zusammen aus atomaren Aussagen, die nicht mehr weiter in kleinere Bestandteile zerlegt werden können. Eine solche Aussage wäre z.B. “Es ist warm.”, oder “Die Sonne scheint.”, aber eben nicht “Es ist warm und die Sonne scheint”. Die wichtigsten atomaren Aussagen sind übrigens “Wahr.” und “Falsch.” selbst5 . Die Menge der atomaren Aussagen wäre damit so etwas wie {Wahr, Falsch, Die Sonne scheint, Blau ist eine Farbe, . . . }. In dieser Menge finden dann alle erdenklichen Aussagen, die nicht aus anderen Aussagen zusammengesetzt sind. Da wir als Mathematiker und Informatiker immer bestrebt sind, unnötigen Balast beim Denken abzuwerfen, und uns auf die Essenz der Dinge zu konzentrieren, wollen wir diese etwas unhandliche Menge der atomaren Aussagen so vereinfachen, dass wir sie erstens leichter aufschreiben können, und zweitens wir uns keine Gedanken über die genaue natürlichsprachliche Bedeutung der einzelnen atomaren Aussagen machen müssen. Definition 1.2 (Atomare Aussagen) Die Menge der atomaren Aussagen Atom besteht aus den elementare Aussagen >(steht für wahr) und ⊥(steht für falsch), sowie aus Aussagevariablen p, q, r, p1 ,2 . . . , q1 . . . , r1 . . . ∈ V Beachten Sie, dass jede atomare Aussage ein Wort der Sprache Aussagenlogik ist. Aussagevariablen betrachten wir im Folgenden als Platzhalter für beliebige Aussagen. Sie können also stehen für > und ⊥, aber auch für zusammengesetzte Aussagen, die wir im folgenden kennenlernen werden. In unserer Vorstellung (die wir Mathematiker und Informatiker gerne Intuition nennen), dürfen wir für die Variablen auch beliebige Aussagen der Art “Die Sonne scheint” einsetzen, und wir können damit herumspielen. Einzig in unserem formalen System, der mathematischen Sprache Aussagenlogik, gibt es solche Sätze wie “Die Sonne scheint” nicht, 5 Dies sind natürlich keine korrekten deutschen Sätze. Aber sowas ist uns Informatikern natürlich egal, solange jeder weiß, was gemeint ist. 14 1.1 Aussagenlogik denn wir brauchen sie nicht, um zu verstehen, wie logisches Denken funktioniert, und kümmern uns nicht um sie. Jetzt wollen wir die Operatoren der Aussagenlogik näher kennenlernen. Auch diese werden wir als einfache mathematische Symbole aufschreiben, und uns nicht mit natürlichsprachlichen Wörtern herumschlagen, auch wenn es für alle diese Operatoren eine (zumindest ungefähre) Entsprechung in der natürlichen Sprache gibt. Zugleich mit der Einführung der Operatoren wollen wir auch beschreiben, wie genau wir sie verwenden dürfen, um kompliziertere Sätze in unserer Sprache Aussagenlogik zu bilden. Die Regeln, die uns sagen, wie wir aus einfachen Aussagen und Operatoren neue komplexere Aussagen bilden dürfen, nennt man die Grammatik der Sprache. Wir schreiben die Grammatik in der sogenannten Backus-Naur-Form (BNF) auf, die in der Informatik zum Beschreiben sehr vieler Grammatiken verwendet wird. Definition 1.3 Die Menge aller Aussagen A ist gegeben durch folgende Grammatik, wobei x ∈ Atom, A 3 ϕ, ψ ::= x | ¬ϕ | ϕ ∧ ψ | ϕ ∨ ψ | ϕ ⊕ ψ | ϕ → ψ | ψ ↔ ϕ Wir wollen jetzt erklären, was diese ominöse Zeile uns alles erzählt. Wir definieren mit dieser einen Zeile eine Menge A von Objekten, die wir Aussagen nennen wollen. Wir setzen dabei die gesamte Menge aller Aussagen fest. Also alles, was wir eine Aussage nennen wollen ist in A enthalten, und auch nur das! Der letzte Halbsatz ist dabei sehr wichtig. Wenn wir in der Mathematik nicht explizit sagen, dass etwas nicht in einer Menge enthalten ist, dann dürfen wir nicht annehmen, dass es dort nicht vielleicht doch drinnen ist. Auch, oder gerade dann, wenn wir eigentlich denken zu wissen, was in einer bestimmten Menge sein soll. Halten wir also zuerst fest, dass die Backus-Naur Form einer Sprache die Menge aller Sätze (die unserem Fall Aussagen heißen) in einer Sprache exakt definiert. Mit dem Ausdruck A 3 ϕ, ψ sagen wir, dass ϕ und ψ jeweils ein Element aus der Menge A bezeichnen soll. Das heisst nicht, dass nur ϕ und ψ in dieser Menge vorkommen, sondern ϕ und ψ sind jeweils nur ein Symbol, was für ein beliebiges Element aus dieser Menge steht. Man nennt hierbei ϕ und ψ auch Metavariablen. Sie sind variable Bezeichner für einen Ausdruck aus A, sie sind jedoch selbst kein Ausdruck! Intuitiv. . . Eine Grammatik gibt an, welche Objekte wir betrachten dürfen. Im Falle der Aussagenlogik heißt das, welche Objekte wir eigentlich als gültig ansehen dürfen. Es gibt zum Beispiel keinen Sinn x∧ als vollständige Aussage zu betrachten. Es fehlt einfach der zweite Operand des logischen Unds. 15 1 Logik Übung 1 Erklären Sie den Unterschied zwischen Metavariablen und Aussagenvariablen. Beantworten Sie dabei auch folgende Fragen: Weshalb brauchen wir Aussagenvariablen in unserer Aussagenlogik? Benötigen wir eigentlich auch Metavariablen unbedingt um Aussagenlogik zu betreiben? Und los geht’s. . . Schauen Sie sich zunächst noch einmal alle wichtigen Definitionen im Zusammenhang der Frage an! Sie geben Aufschluss darüber, was zur Beantwortung der Frage wichtig ist. Normalerweise schreiben wir ϕ ∈ A um zu sagen, dass ϕ ein Element der Menge A ist, aber da es sich an dieser Stelle andersherum besser schreiben lässt, drehen wir die Sache einfach um. Solange jeder weiss, was eine Notation bedeuten soll, sind wir da gerne flexibel. Die Zeichen ::= besagen einfach, dass dies jetzt eine Syntaxdefinition in BackusNaur-Form ist. Was danach kommt, ist eine Sammlung aller Ableitungsregeln für Wörter aus unserer Sprache. Jede Ableitungsregel wird von den anderen durch einen vertikalen Strich | getrennt. Die Zeichen, die in einer Ableitungsregel dann auftauchen, sind entweder • Konstanten-Symbole, bei uns hier > und ⊥, • Operator-Symbole, bei uns ¬, ∧, ∨, ⊕, →, und ↔, • Symbole, die für die Wörter stehen, die wir gerade eben definieren wollen, bei uns das ϕ und das ψ, oder • Objekte, die wir bereits anderswo definiert haben, wie bei uns die Aussagevariable p. Hierbei steht p stellvertretend für alle Objekte aus Atom. Die Operatoren, die wir oben eingeführt haben, heißen Negation (¬), Konjunktion (∧), Disjunktion (∨), Ausschließendes Oder (⊕), Implikation (→) und Äquivalenz (↔). Negation, Konjunktion und Disjunktion nennt man auch einfach Nicht, Und und Oder. Die Art mit dir wir hier Worte bilden, nennt sich induktiv. Die BNF ist eine induktive Definition einer unendlichen Menge von Wörtern (hier: Aussagen). Induktiv bedeutet, dass wir komplizierte Ausdrücke aus einfacheren zusammensetzen. Dabei ist es wichtig, dass wir definieren, was die einfachsten Ausdrücke sind, 16 1.1 Aussagenlogik die selbst nicht zusammengesetzt sind. In unserem Fall sind dies die Aussagenvariablen und die Konstanten > und ⊥. Was die BNF knapp aussagt, lässt sich mit relativ vielen Worten so ausdrücken: a: Jede Aussagenvariable und die Konstanten > und ⊥ sind Aussagen (atomare Aussagen). b: Sind ϕ und ψ Aussagen, dann sind auch ¬ϕ, ϕ ∧ ψ, ϕ ∨ ψ, ϕ → ψ, ϕ ↔ ψ, ϕ ⊕ ψ Aussagen. c: Die Sprache der logischen Ausrücke, also die Menge A, ist genau (also nicht mehr und nicht weniger als) die Menge mit den Eigenschaften (a) und (b). Induktive Definitionen sind in der Informatik allgegenwärtig. Jede Programmiersprache ist (syntaktisch betrachtet) induktiv definiert. Übrigens üblicherweise sogar mit Hilfe der Backus-Naur-Form. Sehr viele Datenstrukturen, die wir in Programmierung 1 kennenlernen werden, sind induktiv definiert, z.B. Listen und Bäume. Man sagt dann für Listen einfach 1. o ist eine Liste (atomarer Ausdruck). 2. Wenn l eine Liste ist, dann ist auch ∗l eine Liste (induktive Definition). Listen sind dann alle Objekte, die folgende Form haben: o, ∗o, ∗ ∗ o, ∗ ∗ ∗o, . . . . Aufgabe 1.3 Geben Sie die Backus-Naur-Form zur induktiv definierten Sprache Listen über den Wörtern o und ∗ an. Die natürlichen Zahlen sind übrigens genauso aufgebaut. 0 entspricht dann o, 1 entspricht ∗o und so weiter. Aber mehr dazu in Programmierung 1. Beispiel 1.4 Ausdrücke, die in A enthalten sind, und damit Aussagen, sind z.B. • >∧p • (¬⊥) ∨ >. • (p ∨ q) ∧ (> → (⊥ ⊕ q)) Die Klammern dienen dazu, um die Struktur des Ausdrucks zu verdeutlichen. Beispiel 1.5 Keine Aussagen sind z.B. 17 1 Logik • >⊥. Es gibt keine Ableitungsregel, bei der zwei atomare Aussagen direkt nebeneinander stehen dürften. Jede Regel bei der mehr als eine atomare Aussage entstehen kann, enthält auch einen Operator. • > ∧ ϕ. Dies ist keine Aussage, weil ϕ weder eine Konstante (>,⊥), noch eine atomare Aussage ist. ϕ ist nur eine Metavariable, die jeden beliebigen Ausdruck repräsentieren kann. Syntaktisch ist das Symbol ϕ jedoch niemals Teil einer Aussage. Andersherum, wenn wir sagen: “Sei ϕ ∈ A”, dann ist auch > ∧ ϕ ∈ A. Allerdings ist dann > ∧ ϕ immer noch keine Aussage, sondern es steht nur für eine Aussage, die einer bestimmten Form genügt. Eine solche Aussage wäre z.B. > ∧ ⊥, oder > ∧ (p ∧ q), aber nicht ⊥ ∧ ⊥ oder > ∨ ⊥. Bemerkung 1.1 (Klammersparregeln) Die äußersten Klammern eines Ausdrucks können stets weggelassen werden. Ansonsten können Klammern weggelassen werden, wann man sie anhand folgender Prioritätsregeln über Operatorenbindungen wieder rekonstruieren kann. In folgender Liste bindet ¬ am stärksten, ↔ am schwächsten. 1. Negation ¬ 2. Und ∧ 3. Oder ∨ 4. eXklusives Oder ⊕ 5. Implikation → 6. Äquivalenz ↔ Konjunktion und Disjunktion klammert linksassoziativ. Das bedeutet, dass wenn wir schreiben p ∧ q ∧ r wir (p ∧ q) ∧ r meinen. Entsprechend für Disjunktion. Die Implikation klammert rechtsassoziativ. Hier gilt, dass p → q → r für die Aussage p → (q → r) steht. Bemerkung 1.2 Achtung: p ∧ q ∧ r = (p ∧ q) ∧ r ist nicht das selbe wie p ∧ (q ∧ r)! Wie wir noch sehen werden, sind beide Ausdrücke zwar semantisch gleich, syntaktisch sind sie jedoch verschieden, da ihre syntaktische Struktur anders aufgebaut ist. 18 1.1 Aussagenlogik Strukturbäume Wir können die zuweilen recht komplizierten Strukturen von Aussagen graphisch darstellen, und uns damit klarer machen, wie sie induktiv aufgebaut sind. In der Programmierung (nicht nur in Programmierung 1) benutzen wir diese Darstellung als Baum dazu, um Algorithmen zu implementieren, die mit Aussagen, oder Ausdrücken anderer Sprachen arbeiten. Diese Algorithmen nennt man dann rekursiv. Sie beginnen ihre Arbeit ganz oben in der Struktur (der Wurzel des Strukturbaums), und rufen sich immer wieder selbst für die Teilstrukturen auf. Diesen Vorgang nennt man rekursiv (von lateinisch recurrere, zurücklaufen). Intuitiv. . . Rekursion hat man erst dann verstanden, wenn man Rekursion verstanden hat. Was hat dieser Satz mit Rekursion zu tun? Wenn wir etwas rekursiv abarbeiten, sollte es immer Fälle geben, die wir direkt behandeln können, ansonsten kommen wir nie zu einem Ende, genau wie in unserem Satz oben – nach ihm kommen wir nie zum Verständnis von Rekursion. Den zweiten, wichtigen Teil der Rekursion zeigt er aber sehr schön auf: Wir nehmen einfach an, für die Dinge, die wir rekursiv betrachten, haben wir alles schon abgearbeitet und nun müssen wir nur noch den Rest bearbeiten. Beispiel 1.6 Wie sortieren wir zum Beispiel unsere Lieblingsbücher alphabetisch – die meisten werden nun sagen gar nicht, aber nehmen wir einmal an, dass ist unser Ziel. Dann teilen wir am effektivsten unseren Stapel wieder in zwei und sortieren die beiden kleineren Stapel wieder. Dazu teilen wir diese wieder und wieder und wieder · · · bis wir schließ nur noch einelementige Stapel haben, die wir alphabetisch wieder zusammenfügen. Nun haben wir rekursiv unsere Bücher sortiert. Beispiel 1.7 a: Der Strukturbaum der Formel ¬p ∨ ((q ↔ ¬(r ↔ p)) ∧ s) ist 19 1 Logik ∨ ¬ ∧ p ↔ s ¬ q ↔ r p b: Der Strukturbaum der Formel ¬(p ∨ q) ↔ (¬(r ↔ (p ∧ s))) ist ↔ ¬ ¬ ∨ ↔ p q ∧ r p s Aufgabe 1.4 Geben Sie Strukturbäume zu folgenden Aussagen an: • >∧⊥∨>∨p→q ↔r∧> • p→q →r∧s∨q • r ↔s∧q Aufgabe 1.5 Nun die umgekehrte Richtung: Geben Sie Ausdrücke zu folgenden Strukturbäumen an: ∧ ↔ ↔ → ∨ → > ⊥ ∧ r ∨ p q r s p > > ⊥ 20 1.1 Aussagenlogik Intuitiv. . . Eine Frage, die man sich stellen kann, ist, warum man eigentlich Strukturbäume braucht. Hierauf gibt es zwei Antworten: Zum einen folgt der Strukturbaum der Grammatik. Alle Operatoren mit zwei Operanden haben auch zwei Folgeknoten im Strukturbaum. Man kann ihn sogar anhand der Grammatik aufbauen. Dabei darf man erst dann mit dem Zeichnen weiterer, tiefer liegender Knoten aufhören, sobald man bei >, ⊥ oder einer Aussagenvariable angelangt ist. Muss man vorher aufhören oder hat ein Operator nicht genügend Folgeknoten, so genügt der Ausdruck nicht der Grammatik. Strukturbäume geben uns also eine Möglichkeit zu zeigen, dass Ausdrücke gemäß einer Grammatik gebildet wurden. Zum anderen ist die Darstellung als Strukturbaum klammerfrei. Da sie auch etwas über die Hierarchie innerhalb eines Ausdrucks aussagt, eignet sie sich als Repräsentation von Ausdrücken im Computer. Viele Übersetzer für Programmiersprachen übersetzen die Zeichenfolge, die sie als Eingabe erhalten, erst einmal in einen solchen Baum, um darauf zu arbeiten. 21 1 Logik In der Praxis... (Ausdruck → Strukturbaum) Wie erstelle ich einen Syntaxbaum auf einem Ausdruck? 1. Setze alle Klammern im Ausdruck, die durch die Klammersparregeln überflüssig geworden sind. 2. Betrachte die äußerste Klammer: Der Operator, der in ihr enthalten ist, wird zur Wurzel des Strukturbaums. 3. Betrache nun alle Operanden des letzten Operators rekursiv und beende das Aufbauen des Strukturbaumes sobald die innerste Klammer erreicht wurde. Beispiel 1.8 Wir betrachten den Ausdruck p ∧ q ∨ r ↔ s Schritt 1 (((p ∧ q) ∨ r) ↔ s) Schritt 2 ↔ ist die Wurzel unseres Baumes. Schritt 3 Der bisherige Strukturbaum sieht so aus. ↔ An die Stelle der beiden Fragezeichen tritt nun, indem wir die ? ? Schritte 2 und 3 rekursiv auf ((p ∧ q) ∨ r) und s anwenden, der Rest des Strukturbaums: ↔ ∨ ∧ p 22 s r q 1.1 Aussagenlogik In der Praxis... (Strukturbaum → Ausdruck) Nun die umgekehrte Richtung: Wie erstelle ich aus einem Strukturbaum einen Ausdruck? Jeder Operator im Baum sagt prinzipiell, dass die Operanden, die darunter stehen, geklammert werden müssen. Es ist sehr hilfreich, diese Klammern zunächst zu setzen und später nach den Klammersparregeln wieder zu entfernen. Um nun einen Ausdruck zu erstellen, fangen wir an der Wurzel an und schreiben den Operator auf. Ist der Knoten im Baum, den wir gerade betrachten, eine Aussagenvariable oder > oder ⊥, so notieren wir ihn ebenfalls, sind aber mit unserer Betrachtung fertig. Schauen wir uns gerade einen Operator an, so notieren wir diesen und setzen die Betrachtung rekursiv auf den Operanden fort. Beispiel 1.9 Betrachten wir einmal den folgenden Strukturbaum: ∧ ∨ → p q r s Unser Ausdruck besteht zunächst aus (?) ∧ (?). Nun setzen wir unsere Betrachtung rekursiv auf den Bäumen mit Wurzel ∨ bzw. → fort. Wir erhalten damit den Ausdruck ((?) ∨ (?)) ∧ ((?) → (?)). Im nächsten und letzten Schritt müssen wir nur noch die Fragezeichen durch die vorkommenden Aussagenvariablen ersetzen: ((p) ∨ (q)) ∧ ((r) → (s)). Mit unseren Klammersparregeln folgt dann, dass wir den Ausdruck äquivalent schreiben können als (p ∨ q) ∧ (r → s). Beispiel 1.10 • ¬p ∨ > ∧ ⊥ = (¬p) ∨ (> ∧ ⊥) • p ∨ q → ¬r ∧ p → q = (p ∨ q) → ((¬r) ∧ p) → q) Beispiel 1.11 a: Die Formel ((p → ¬q ∧ (r ↔ (p ∨ r)))) → (r ↔ p) Lässt sich schreiben als: (p → ¬q ∧ (r ↔ ¬(p ∨ r)) → (r ↔ p) b: Die Formel (¬p → q) ↔ (p ∨ (¬p ∧ ¬q)) lässt sich darstellen als ¬p → q ↔ p ∨ ¬p ∧ q. Da diese kurze Form recht unübersichtlich ist, würde man manche Klammern eventuell stehen lassen: (¬p → q) ↔ p ∨ (¬p ∧ ¬q) 23 1 Logik c: Die Formel ((¬(¬p)) ↔ q)∨(p∧(¬q)) lässt sich schreiben als (¬¬p ↔ q)∨p∧¬q bzw. besser lesbar als (¬¬p ↔ q) ∨ (p ∧ ¬q). Manchmal ist es besser Klammern zu setzen, auch wenn sie nicht unbedingt notwendig sind, um Aussagen besser lesbar zu machen. Aufgabe 1.6 Sind die folgende Ausdrücke bezüglich der angegebenen Grammatik gültig? • >∨ • ϕ∨ψ • x • xy • p ∧ ∨q • p∨q 1.1.3 Semantik Die Semantik einer Sprache ist ihre Bedeutung. Dabei weisen wir syntaktischen Ausdrücken ein mathematisches Objekt zu. Wir schreiben diese Zuweisung als eine mathematische Abbildung, die wir mit zwei eckigen Klammern J·K bezeichnen. Tatsächlich sagt man zu diese Klammern gerne Semantikklammern. Wenn ϕ ∈ A, also ϕ eine syntaktische Aussage ist, dann bezeichnet fortan JϕK die Semantik von ϕ. Die mathematischen Objekte, die wir als Semantik für unsere Ausdrücke festlegen werden, sind einzig die beiden Wahrheitswerte w und f , die wir ab sofort als die “Mathematik gewordenen” Formen von wahr und falsch betrachten. Damit ist J·K eine Abbildung von A, der Menge aller syntaktischen Aussagen, nach {w, f }, der Menge der Wahrheitswerte. Wir notieren dies prägnant mathematisch als J·K : A → {w, f }6 . Wir definieren J·K induktiv, dem syntaktischen Aufbau von Aussagen folgend. Auf diese Weise können wir sehr einfach jedem Element aus A einen Wert aus {w, f } zuweisen, obwohl A eine unendliche Menge ist. Bevor wir jetzt jedoch zu jedem beliebigen Ausdruck entscheiden können, ob er wahr oder falsch ist, müssen wir zuerst klären, wie wir dabei mit Aussagenvariablen umgehen wollen. Denn diese haben ja gerade die Eigenschaft, dass sie für beliebige Aussagen stehen können, und damit alles andere als eindeutig wahr oder falsch 6 Wir 24 werden im Laufe des Vorkurs noch genaueres über Mengen und Abbildungen erfahren 1.1 Aussagenlogik sind. Streng genommen sind sie damit eigentlich gar keine Aussagen, so wie wir sie in Definition 1.1 eingeführt haben. Um zu klären, welche Bedeutung eine Aussage nun hat, müssen wir zuerst für jede Variable festlegen, ob diese wahr oder falsch ist, bevor wir entscheiden können, ob eine Aussage wahr oder falsch ist. Eine solche Festlegung nennen wir Belegung. Definition 1.4 (Belegung) Eine Belegung von Aussagenvariablen ist eine Abbildung b : V → {w, f }. Wir nennen die Menge aller Belegungen B. Beispiel 1.12 Für folgende Ausdrücke haben wir bereits festgestellt, dass sie in A enthalten, und damit Aussagen sind. Nun geben wir Belegungen für ihre Variablen an: • > ∧ p mit b1 : {p} → {w, f }, p 7→ w • (p ∨ q) ∧ (> → (⊥ ⊕ q)) mit b2 : {p, q} → {w, f }, p 7→ f , q 7→ w Für jede Variable gibt es genau zwei Möglichkeiten, sie zu belegen, nämlich mit wahr oder falsch, sprich w oder f . Für einen Ausdruck, der n Variablen enthält, gibt es damit 2n verschiedene Belegungen. Während es also nicht möglich ist, für einen Ausdruck mit Variablen eine Semanitk anzugeben, weil wir dazu wissen müssen, ob die Variablen wahr oder falsch sind, so können wir dies jedoch dann tun, wenn wir eine Belegung gegeben haben. Wir können damit also für jede Belegung eine eigenen Semantik angeben. Natürlich heißt das nicht, dass sich alle diese Semantiken komplett unterscheiden, wenn wir die Belegung ändern! Die Unterschiede liegen eben genau nur an der Stelle, wo die Belegung zum Tragen kommt. Da, wo Variablen auftauchen. Definition 1.5 (Semantik von Aussagen) Seien im Folgenden ϕ und ψ ∈ A Aussagen, und b ∈ B eine Belegung. Dann ist die semantische Abbildung J·Kb : A → {w, f } wie folgt induktiv definiert: 1. J>Kb = w 2. J⊥Kb = f 3. JpKb = b(p) ( w 4. J¬ϕKb = f wenn JϕKb = fb wenn JϕKb = wb ( w 5. Jϕ ∧ ψKb = f wenn JϕKb = w und JψKb = w ansonsten 25 1 Logik ( 6. Jϕ ∨ ψKb = f w wenn JϕKb = f und JψKb = f ansonsten w 7. Jϕ ⊕ ψKb = w f wenn JϕKb = w und JψKb = f wenn JϕKb = f und JψKb = w ansonsten ( f 8. Jϕ → ψKb = w wenn JϕKb = w und JψKb = f ansonsten f 9. Jϕ ↔ ψKb = f w wenn JϕKb = w und JψKb = f wenn JϕKb = f und JψKb = w ansonsten Intuitiv. . . Wir haben hier wieder ein Beispiel für Rekursion. Die Bedeutung von > und ⊥ können wir direkt, d.h. ohne Betrachtung weiterer Ausdrücke angeben. Die Auswertung der Operatoren bezüglich unserer Semantik hängt wieder von den Teilausdrücken ab. Wir betrachten Sie rekursiv wieder mit unserer Abbildung. Beispiel 1.13 Betrachten wir folgende Ausdrücke aus der Aussagenmenge. So können wir nun ihre Semantik angeben: • J> ∧ ⊥K = f • J(¬⊥) ∨ >K = w. • J(K> ∨ ⊥) ∧ (> → (⊥ ⊕ ⊥)) = f 26 1.1 Aussagenlogik In der Praxis... Wie sind wir auf die Ergebnisse im Beispiel gekommen? Betrachten wir zunächst einen einfachen Ausdruck: J> ∧ ⊥K. Um ∧ auszuwerten, sagt uns die Definition der Semantik, dass wir beide Teilausdrücke, also > und ⊥, auswerten müssen. Es gilt: • J>K = w • J⊥K = f Da nicht beide Teilausdrücke von ∧ wahr werden, wissen wir schließlich J> ∧ ⊥K = f . Betrachten wir nun einen etwas komplizierten Ausdruck, z.B. p ⊕ (q → r), wobei p, q und r Aussagenvariablen sind und die Belegung b p und q wahr und r falsch zuorndet. In der obersten Ebene des Ausdrucks, d.h. in der, die nicht mehr geklammert ist, müssen wir als Operator ⊕ auswerten. Dazu betrachten wir die Teilausdrücke ϕ := p und ψ := q → r. Wir können direkt sehen, dass ϕ nach unserer Belegung zu wahr auswertet. Nun betrachten wir ψ und sehen, dass wir die Semantik eines Ausdrucks mit → bestimmen müssen. Dazu müssen wir erneut zwei Teilausdrücke auswerten, nämlich q und r. Nach unserer Belegung b wertet q zu w und r zu f aus, damit wertet auch die Implikation zu f aus. Schließlich erhalten wir also für JϕK = w und JψK = f und wissen damit nach der Definition der Semantik von ⊕, dass p ⊕ (q → r) zu w auswertet. Aufgabe 1.7 Reisen Sie eine Woche in die Vergangenheit zurück, bevor Sie dieses Skript gelesen haben und erklären Sie sich dort selbst den Unterschied zwischen ⊥ und f bzw. > und w. Es folgen einige interessante Bemerkungen zu einigen Operatoren, zusammen mit ein paar Beispielen. Zur Erinnerung an die Semantik der Operatoren präsentieren wir sie hier nochmals in ein wenig informellerer Schreibweise als sogenannte Wahrheitstafel. Die Negation (Symbol ¬ ) ϕ ¬ψ w f f w 27 1 Logik Der Negationsoperator ist ein mächtiger Operator. Tatsächlich ist er, zusammen mit nur einem der Operatoren ∧ oder ∨ ausreichend, um alle anderen Operatoren nachzubilden. So können wir z.B. ∨ aus ¬ und ∧ wie folgt bauen: ϕ ∨ ψ kann man darstellen als ¬(¬ϕ ∧ ¬ψ). Das heisst, egal welche Belegung ich für ϕ und ψ wähle, die beiden Ausdrücke haben immer den selben Wahrheitswert. Aufgabe 1.8 Überlegen Sie sich, ob Sie alle anderen Operatoren auch mit nur einem, möglicherweise neuen Operator darstellen können. Bemerkung 1.3 Eine minimal kleine Menge von Operatoren, mit denen man alle andere Darstellen kann heißt Basis. Jede Menge, mit denen man alle anderen Darstellen kann, heißt Erzeugendensystem. Die Implikation (Wenn-Dann-Verknüpfung; Symbol: →) ϕ w w f f ψ w f w f ϕ→ψ w f w w Dieser Operator repräsentiert die Grundidee jeglichens logischen Schließens: Eine Aussage folgt aus einer anderen!, oder mit Aussagenvariablen: ψ folgt aus ϕ. Hierbei bezeichnen wir ϕ als Prämisse oder Voraussetzung bzw. Hypothese und ψ als Folgerung bzw. Konklusion. Beachten Sie, dass also die Aussage, die gefolgert wird, rechts vom Operator steht. Für den mathematisch Ungeübten gibt es hier jedoch die verwirrende Tatsache, dass obwohl dieser Operator intuitiv so etwas bedeutet wie, wenn ϕ wahr ist, dann ist auch ψ wahr, muss zwischen den Aussagen, für die ϕ und ψ jeweils stehen, keinerlei sinnvoller Zusammenhang bestehen. Beispiel 1.14 Wenn rot eine Farbe ist, dann ist ein Kreis rund. Diese Aussage ist wahr. Und zwar nicht deshalb, weil rote Farbe und runde Kreise irgendeinen sinnvollen Zusammenhang hätten, sondern nur deshalb, weil beide Aussagen für sich genommen wahr sind, und deshalb nach unserer Semantik beide Aussagen, verknüpft mit → wiederum eine wahre Aussage ergeben. Weshalb um alles in der Welt haben dann die vielen schlauen Logiker der letzten Jahrhunderte die Bedeutung von → so gewählt? Wir können uns versuchen, dies wie folgt zu erklären. Normalerweise verwendet man Implikationen als Teil eines 28 1.1 Aussagenlogik Beweises, und sie repräsentieren sinnvolles Wissen, dass wir über die Welt haben. Betrachten wir die Tatsache, dass alle Männer kurze Haare haben.7 . Diese Tatsache können wir als eine Implikation verstehen: Wenn ein Mensch ein Mann ist, dann hat dieser Mensch kurze Haare. Dies ist eine Implikation über zwei Aussageformen (wir können hier für x verschiedene Werte einsetzen und dann erst bestimmen, ob der Satz wahr oder falsch wird): (Mensch x ist Mann) → (Mensch x hat lange Haare). Erinnern Sie sich daran: wir glauben fest an diese Aussage8 . Nun nehmen wir einen Mann, nennen wir ihn Christian, und wir wollen beweisen, dass Christian kurze Haare hat. Wenn wir Christian in die Aussageform einsetzen, erhalten wir die Implikation hat Christian ist {z ein Mann} → Christian | {zkurze Haare} . | p q Zur leichteren Verständigung nennen wir die beiden Teilaussagen der Implikation nun p bzw. q. Da wir wissen, dass Christian ein Mann ist, ist p wahr. Da wir auch an die Implikation glauben, muss also folgen, dass q auch gilt, also hat Christian kurze Haare. Aber halt! Wir waren hier wieder nur intuitiv, und wir haben über Implikation gesprochen, als wüssten wir, was sie genau bedeutet. Wir wollen daher nun versuchen zu verstehen, inwiefern dieser logische Schluss, den wir gerade gezogen haben, in der Semantik von → versteckt ist. Zuerst wollen wir uns fragen, was es nun eigentlich semantisch bedeutet, dass wir fest daran glauben, dass die Implikation wahr ist. Nichts anderes als dass gilt Jp → qK = w! Wir wissen nun also, dass p wahr ist. Und wir wissen, dass p → q wahr ist. Damit muss nach unserer Semantik von p → q also auch folgen, dass q wahr ist, dann andernfalls, wenn JqK = f gelten würde, dann wäre auch Jp → qK = f , was ja ein Widerspruch wäre zu unserem festen Glauben in diese Implikation! Wunderbar! Wir haben soeben erklärt, weshalb die erste Zeile in der Wahrheitstafel, die zum Operator → gehört, Sinn ergibt. Wir versuchen nun, die dritte und vierte Zeile der Wahrheitstafel für uns zu erklären. Dort ist jeweils die Prämisse falsch. In unserem Beispiel bedeutet das, dass wir nun keinen Mann betrachten, sondern eine Frau. Nennen wir Sie Julia. Wir glauben immer noch an unsere anfängliche Implikation über männliche Menschen, die kurze Haare haben. Können wir nun irgendetwas über Julias Haare aussagen? Können wir also ebenfalls schließen, dass sie kurze Haare hat? Oder können wir vielleicht schließen, dass sie lange Haare hat? 7 Falls Sie daran zweifeln, ist das kein Problem. Tun Sie die nächsten Minuten einfach so als ob. haben Recht, eigentlich ist das keine Aussage, da x ein Platzhalter ist, und wir daher nicht wissen, ob der Satz wahr oder falsch ist. Ignorieren Sie das bitte einmal kurzzeitig. Ohne Platzhalter werden die Beispiele fast immer sinnlos klingen. Zur Beruhigung: in Kapitel 1.2 werden wir sehen, wie wir sowas dann doch zu einer korrekten Aussage hinbiegen. 8 Sie 29 1 Logik Tatsächlich sagt unsere Implikation nichts über Julia aus, da sie kein Mann ist. Also sollte unsere Semantik der Implikation ebenfalls keine Aussage über Julias Haare zulassen. Und tatsächlich ist das so! Nehmen wir an, Julia hat tatsächlich kurze Haare. Dann wird die Konklusion unserer Implikation wahr. Wir befinden uns damit in Zeile drei der Wahrheitstafel, und wie wir sehen, ist die Semantik der Implikation dann w. Das bedeutet für uns, dass dies absolut konform ist mit unserem Glauben in unsere Implikation. Genau das selbe passiert in Zeile vier, im Falle, das Julia lange Haare hat. Dann ist die Semantik ebenfalls w, und ist damit konform zu unserem Glauben an unsere Implikation. Dies bedeutet also insbesondere, dass wir keinerlei Informationen aus einer Implikation ziehen können, wenn ihre Prämisse falsch ist (Julia ist kein Mann!). Bemerkung 1.4 Ein wichtiger Merksatz der Logik ist: Aus Falschem kann man alles Beliebige folgern! Beispiel 1.15 Nehmen wir eine Implikation, deren Prämisse offensichtlich falsch ist, ebenso wie ihre Konklusion: Wenn 1 = 5, dann ist 2 = 10. Wenn wir jedoch mit der falschen Prämisse anfangen zu arbeiten, dann können wir sogar zeigen, dass 2 = 10 gilt, und zwar wie folgt: 2 = 1·2 dies ist nach der Prämisse 5·2 und dies ist bekanntlich 10. Auch auf diese Art können wir uns erklären, weshalb es sinnvoll ist, Zeile vier der Wahrheitstafel von → so zu definieren, wie sie definiert ist. Natürlichsprachlich hat eine Wenn - Dann“ Konstruktion oftmals einen kausa” len Zusammenhang. Beim mathematischen Wenn - Dann“ ist das nicht zwingend ” der Fall. Beispiel 1.16 Wenn es regnet, werde ich nass. Natürlichsprachlich verstehen wir den Regen als Ursache dafür, das wir nass werden. In der Aussagenlogik bedeutet das nicht weiter als eine der drei Dinge: • es regnet gerade und ich werde gerade nass (vielleicht weil ich keinen Schirm habe, vielleicht aber auch, weil mich gerade ein Hund anpinkelt) • es regnet gerade nicht, und ich werde trotzdem nass (vermutlich weil mich ein Hund anpinkelt) • es regnet gerade nicht, und ich werde auch nicht nass (der Hund hat rechtzeitig eine Laterne gefunden). Wichtige alternative Sprechweisen für ϕ → ψ sind • ϕ impliziert ψ 30 1.1 Aussagenlogik • ϕ ist hinreichend für ψ • ϕ ist hinreichende Bedingung für ψ. • ψ ist notwendig für ϕ. • ψ ist notwendige Bedingung für ϕ. • ϕ nur dann wenn ψ. • ϕ dann wenn ψ. Wir sollten sie uns unbedingt merken, und auch genau verstehen, in welche Richtung die Implikation jeweils dabei geht. Verwechselungsgefahr besteht dabei oft bei den Ausdrücken notwendige und hinreichende Bedingung. Eine Bedingung ϕ ist hinreichend für ψ, wenn das Erfülltsein von ϕ stets garantiert, dass auch ψ erfüllt ist. Dabei ist ϕ alleine dafür vollständig ausreichend, und nichts anderes ist mehr nötig. Beispiel 1.17 Ein Streichholz in eine Kerzenflamme zu halten ist hinreichend dafür, dass das Streichholz sich entflammt. Für ein und die selbe Bedingung ψ kann es jedoch mehrere hinreichende Bedingungen ϕ geben. Beispiel 1.18 Ein Streichholz in einen brennenden Hochofen zu werfen ist ebenfalls hinreichend dafür, dass das Streichholz sich entzündet. Beispiel 1.19 Ein Streichholz an der Reibefläche der Streichholzschachtel zu reiben, ist nicht hinreichend dafür, dass das Streichholz sich entzündet, denn oft genug brechen dabei Streichölzer einfach ab, ohne anzugehen. Daher kann dies nicht hinreichend sein. Notwendige Bedingungen sind solche Bedingungen, die vorhanden sein müssen, damit eine andere Bedingung überhaupt eintreten kann. Mit Variablen gesprochen: wenn q für p notwendig ist, dann muss q gelten, damit p gilt, aber alleine genügt q nicht. Im Allgemeinen genügen notwendige Bedingungen alleine nicht9 . Beispiel 1.20 Um am Herd Wasser zum kochen zu bringen, ist es notwendig, den Topf mit Wasser auf den Herd zu stellen, da das Wasser neben dem Herd garantiert nicht 9 Eine Bedingung kann auch gleichzeitig notwendig und hinreichend sein. Dann genügt sie natürlich. Diesen Sachverhalt schreibt man logisch als Äquivalenz p ↔ q. 31 1 Logik kochen wird. Allerdings genügt es nicht, den Topf auf den Herd zu stellen, man muss ihn auch einschalten. Den Herd einzuschalten ist ebenfalls notwendig, aber nicht genug. Also ist sowohl Herd einschalten (ein) als auch den Topf auf den Herd zu stellen (topf ) eine notwendige Bedingung um das Wasser zum kochen zu bringen (kochen). Formal können wir das schreiben als kochen → ein und kochen → topf Beachten Sie, dass die notwendigen Bedingungen auf der rechten Seite von → stehen! Wenn wir den Topf mit dem Wasser sowohl auf den Herd stellen, als auch den Herd einschalten, dann wird das Wasser sicher zu kochen beginnen (in einer einfachen Welt). Beide Bedingungen zusammen sind dann auch hinreichend. Wir können dann schreiben kochen ↔ topf ∧ ein Das heisst, topf und ein zusammen sind hinreichend und notwendig für kochen. Ebenso ist kochen hinreichend und notwendig dafür, dass der Topf auf dem Herd steht und gleichzeitig der Herd ein ist. Beispiel 1.21 Das Streichholz an der Reibefläche der Schachtel zu reiben ist übrigens weder hinreichend noch notwendig. Das Streichholz muss nicht immer angehen, wenn man es dort reibt, daher ist diese Tätigkeit nicht hinreichend. Sie ist auch nicht notwendig, da man Streichhölzer auch anzünden kann, ohne sie jemals an der Reibefläche gerieben zu haben, nämlich z.B. an Kerzenflammen oder Hochöfen. Bemerkung 1.5 Wir bezeichnen die Aussage ψ → ϕ als die Umkehrung der Aussage ϕ → ψ, ¬ϕ → ¬ψ als ihr Inverses und ¬ψ → ¬ϕ als ihre Kontraposition. Die Äquivalenz ( Genau - Dann - Wenn“ - Verknüpfung; Symbol: ↔) ” ϕ f w f w ψ f f w w ϕ↔ψ w f f w Bemerkung 1.6 Andere Bezeichnungen für ϕ ↔ ψ: • ϕ gilt dann und nur dann wenn ψ gilt • ϕ ist hinreichend und notwendig für ψ 32 1.1 Aussagenlogik • ϕ ist hinreichend und notwendig für ψ • ϕ gdw ψ (genau dann wenn) • ϕ iff ψ (if and only if ) Beispiel 1.22 Sei p: 1 < 0 “ und q: Das Saarland liegt am Meer.“ Die Aussage p ↔ q , sprich ” ” 1 < 0 gilt genau dann, wenn das Saarland am Meer liegt. Sie ist also logisch ” richtig, da das Saarland nicht am Meer liegt, und auch 1 < 0 nicht gilt. Bemerkung 1.7 Wir sehen hier sehr schön, dass es nicht immer hilfreich ist, nach dem Sinn solcher Aussagen zu fragen. Schon gleich nicht, wenn wir diese Aussage aussprechen und etwas sagen wie, “Dass das Saarland am Meer liegt ist notwendig und hinreichend dafür, dass 1 < 0”. Dass 1 < 0 gilt oder nicht gilt, hat in der echten Welt rein gar nichts damit zu tun, wo das Saarland liegt. Umgekehrt genauso wenig. Dennoch sind beide Aussagen logisch äquivalent, da beide den selben Wahrheitswert haben. Das Problem, das man als Nicht-Mathematiker mit solchen logischen Verknüpfungen hat, ist der, dass man meißt annimmt, dass Aussagen, die logisch äquivalent sind, irgendeinen inhaltlichen, oder kausalen Zusammenhang haben müssten. Dass aus 1 < 0 logisch folgt, dass das Saarland am Meer liegt, scheint keinen Sinn zu ergeben. Einfach deshalb, weil wir dann versuchen in 1 < 0 einen Grund dafür zu sehen, das vielleicht halb Europa überflutet wurde, und daher Frankreich plötzlich zu Meer wurde. Aber offensichtlich gibt es keinen Zusammenhang zwischen 1 < 0 und dem Anstieg des Meeresspiegels10 Bemerkung 1.8 Wenn Aussagenlogik so sinnlos ist, warum betreiben wir sie dann? Zum einen, weil die Aussagen ja durchaus Sinn ergeben können. Wir müssen die Aussagen nur passend wählen. Zum anderen liegt in der Tatsache, dass die Aussagenlogik auch dann funktioniert, wenn die Aussagen, mit denen wir hantieren, scheinbar keinen Sinn ergeben, ihre große Stärke. Oft wissen wir gar nicht von vorne herein, ob irgendwelche Aussagen in einem aussagenlogischen Ausdruck zusammen Sinn ergeben. Und doch können wir mit Ihnen arbeiten, sie umformen. Solange bis wir sie auf eine Form gebracht haben, so dass wir plötzlich wieder einen neuen Zusammenhang, einen neuen Sinn, in ihnen entdecken. Genau das ist es, was wir in der Mathematik immer wieder tun! 10 Zumindest schien bisher die globale Erwärmung die plausibelste Ursache. Vielleicht werden wir aber irgendwann entdecken, dass dies alles tatsächlich nur an 1 < 0 liegt. 33 1 Logik Wir haben nun die Semantik aller aussagenlogischen Ausdrücke formal definiert. Jeder Ausdruck, sprich jede Aussage, steht semantisch gesehen dabei entweder für wahr w oder für falsch f . Da wir nun wissen, was Aussagen bedeuten, ist es relativ einfach sich zu überlegen, dass zwei Aussagen semantisch, also von ihrer Bedeutung her, gleich sind, wenn sie beide wahr oder falsch sind. Wenn wir Aussageformen haben, also Ausdrücke, die noch Aussagevariablen enthalten, dann sind sie in ihrer Bedeutung gleich, genau dann wenn sie für jede Belegung von Aussagevariablen den selben Wahrheitswert repräsentieren. Definition 1.6 (logische Gleichheit ≡) Zwei Aussagen ϕ und ψ aus A sind genau dann logisch gleich, geschrieben, ϕ ≡ ψ, wenn für alle Belegungen b ∈ B gilt, dass JϕKb = JψKb . Erfüllbarkeit Eine Aussage heißt erfüllbar, wenn es eine Belegung b ∈ B gibt, so dass JϕKb = w. Allgemeingültig - Tautologie Eine Aussage ϕ heißt allgemeingültig, tautologisch bzw. Tautologie, ϕ ≡ >, dass heisst, ϕ für alle Belegungen wahr ist. Unerfüllbar - Kontradiktion Ein Aussage heißt unerfüllbar, kontradiktorisch bzw. Kontradiktion, wenn ϕ ≡ ⊥. Beispiel 1.23 Für die folgenden Ausdrücke gilt: 1. ¬¬p ist erfüllbar. 2. p ∧ (q ∧ r) ist erfüllbar, und zwar nur für p ≡ q ≡ r ≡ >. 3. ⊥ ist die einfachste Kontradiktion, und > die einfachste Tautologie. 4. p ∧ ¬p ist eine Kontradiktion. 5. p ∨ ¬p ist eine Tautologie. 6. p ∧ q → p ist eine Tautologie. 34 1.1 Aussagenlogik In der Praxis... Wie bestimmt man, ob ein Ausdruck eine Tautologie, erfüllbar oder eine Kontradiktion ist? Bei noch wenigen Aussagenvariablen kann man alle möglichen Belegungen ausprobieren. Bei einer Aussagenvariable muss man zwei, bei zwei schon vier, im Allgemeinen bei n schon 2n Belegungen betrachten. Wie kann man nun bei größeren Ausdrücken vorgehen? Man betrachtet zum Beispiel, ob es Aussagen gibt, die immer falsch werden, man geht also wieder rekursiv in die Teilausdrücke. Dabei kann das folgende Kapitel helfen. Bemerkung 1.9 Bisher haben Sie schon sehr oft von Rekursion gehört. Tatsächlich ist Rekursion ein sehr beliebtes Mittel zur Problemlösung in der Informatik. 1.1.4 Gesetze der Aussagenlogik Satz 1.1 Seien ϕ, ψ und χ Ausdrücke im Aussagenkalkül. Dann gelten folgende Regeln bzw. Gesetze: Tertium non datur • ϕ ∨ ¬ϕ ≡ > • ϕ ∧ ¬ϕ ≡ ⊥ Identität: • ϕ∧>≡ϕ • ϕ∨⊥≡ϕ Dominanz: • ϕ∨>≡> • ϕ∧⊥≡⊥ Idempotenz: • ϕ∧ϕ≡ϕ • ϕ∨ϕ≡ϕ Assoziativität: • ϕ ∧ (ψ ∧ χ) ≡ (ϕ ∧ ψ) ∧ χ 35 1 Logik • ϕ ∨ (ψ ∨ χ) ≡ (ϕ ∨ ψ) ∨ χ Damit auch:(ϕ ∧ ψ) ∧ χ ≡ ϕ ∧ ψ ∧ χ bzw. (ϕ ∨ ψ) ∨ χ ≡ ϕ ∨ ψ ∨ χ Kommutativität: • ϕ∨ψ ≡ψ∨ϕ • ϕ∧ψ ≡ψ∧ϕ • ϕ↔ψ≡ψ↔ϕ Distributivität: • ϕ ∧ (ψ ∨ χ) ≡ (ϕ ∧ ψ) ∨ (ϕ ∧ χ) • ϕ ∨ (ψ ∧ χ) ≡ (ϕ ∨ ψ) ∧ (ϕ ∨ χ) • ϕ → (ψ ∧ χ) ≡ (ϕ → ψ) ∧ (ϕ → χ) • ϕ → (ψ ∨ χ) ≡ (ϕ → ψ) ∨ (ϕ → χ) Negation: • ¬(ϕ ∧ ψ) ≡ ¬ϕ ∨ ¬ψ (Gesetz von de Morgan) • ¬(ϕ ∨ ψ) ≡ ¬ϕ ∧ ¬ψ (Gesetz von de Morgan) • ¬(¬ϕ) ≡ ϕ (Doppelte Negation) Definierbarkeit: • ¬ϕ ≡ ϕ → ⊥ • ϕ ∧ ψ ≡ ¬(¬ϕ ∨ ¬ψ) • ϕ ∨ ψ ≡ ¬(¬ϕ ∧ ¬ψ) • ϕ ⊕ ψ ≡ (ϕ ∨ ψ) ∧ ¬(ϕ ∧ ψ) • ϕ → ψ ≡ ¬ϕ ∨ ψ ≡ ¬ψ → ¬ϕ • ϕ ↔ ψ ≡ (ϕ → ψ) ∧ (ψ → ϕ) Alle diese Regeln lassen sich Beweisen, zum einen durch Wahrheitstabellen oder, teils schneller und kürzer, durch Herleiten aus bereits bekannten (d.h. bewiesenen Regeln). Wir können nun leicht neue Regeln herleiten. Beispiel 1.24 a: Es gilt: ¬(ϕ → ψ) ≡ ϕ ∧ ¬ψ 36 1.1 Aussagenlogik Beweis 1.1 ¬(ϕ → ψ) ≡ ¬(¬ϕ ∨ ψ) ≡ ¬(¬ϕ) ∧ ¬ψ) ≡ ϕ ∧ ¬ψ q.e.d b: Es gilt auch: ¬(ϕ ↔ ψ) ≡ (ϕ ∧ ¬ψ) ∨ (¬ϕ ∧ ψ) Beweis 1.2 ¬(ϕ ↔ ψ) ≡ ¬((ϕ → ψ) ∧ (ψ → ϕ)) ≡ ¬(ϕ → ψ) ∨ ¬(ψ → ϕ) ≡ ¬(¬ϕ ∨ ψ) ∨ (¬ψ ∨ ϕ) ≡ (ϕ ∧ ¬ψ) ∨ (ψ ∧ ¬ϕ) ≡ (ϕ ∧ ¬ψ) ∨ (¬ϕ ∧ ψ) q.e.d Und los geht’s. . . Machen Sie sich zu jeder Umformung oben klar, welches Gesetz angwandt wurde. Schreiben Sie am dazu am besten an jedes ≡ den Namen der entsprechenden Regel. Wenn wir Beweise schreiben (vor allem, wenn sie von anderen Menschen gelesen werden sollen, wie z.B. in Klausuren), dann müssen wir jeden Umformungsschritt durch Angabe des verwendeten Gesetz begründen. Gleichzeitig hilft es uns, die Korrektheit der Beweise zu überprüfen. Definition 1.7 (geschlossene und offene Ausdrücke) Wir nennen einen aussagenlogischen Ausdruck (sprich: eine Aussage) offen, wenn er (mindestens) eine Aussagenvariable enthält. Andernfalls (also wenn er keine einzige Variable enthält), nennen wir ihn geschlossen. 37 1 Logik 1.2 Prädikatenlogik Im letzten Abschnitt haben wir Aussagen als Sätze kennengelernt, bei denen wir eindeutig entscheiden konnten, ob sie wahr oder falsch sind. Diese konnten wir durch Operatoren zu neuen komplexeren Aussagen verknüpfen. Obwohl wir damit bereits interessante Zusammenhänge zwischen Aussagen kennengelernt haben, wie z.B. was es bedeutet, wenn eine Aussage logisch aus einer anderen folgt, waren die Aussagen selbst immer komplett unabhängig voneinander. Wir konnten z.B. sagen “Um die Uni herum stehen viele Bäume und Christian ist ein Mann.”, oder auch “Dass um die Uni herum viele Bäume stehen impliziert, dass Christian ein Mann ist.” Diese Aussagen sind beide wahr, jedoch kommt ihre Sinnhaftigkeit sehr nahe an manche Schlagzeilen einer großen Zeitung mit vielen bunten Bildern heran. Das Problem, dass die Aussagen sinnlos erscheinen, liegt darin begründet, dass die beiden Teilaussagen inhaltlich keinerlei Zusammenhang besitzen, und jede der beiden durch eine beliebige andere wahre Aussage ersetzt werden kann, ohne am Wahrheitsgehalt der Aussagen etwas zu ändern. Mit der Prädikatenlogik lernen wir eine Erweiterung der Aussagenlogik kennen, bei der wir Aussagen über ein und das selbe Objekt so zusammensetzen können, dass klar wird, dass es sich in jeder Teilaussage auch jeweils um das selbe Objekt handelt. Wir schaffen damit erstmals eine sinnvolle Verknüpfung zwischen Teilaussagen, so dass diese erst zusammen tatsächlich mehr aussagen als einzeln, und ihre Verknüpfung nicht mehr so willkürlich erscheint. Tatsächlich ist die Prädikatenlogik eine sehr mächtige Logik. Alles, was wir jemals innerhalb der Mathematik aussagen wollen, können wir in ihr aufschreiben. Diese Mächtigkeit hat aber auch ernsthafte Konsequenzen. Konnten wir z.B. bei der Aussagenlogik noch ein automatisches Verfahren suchen, dass uns erlaubt, festzustellen, ob eine Formel prinzipiell erfüllbar ist, oder nicht11 , ist dies jetzt im Allgemeinen nicht mehr möglich. Dies liegt unter anderem daran, dass ihre elementaren Bestandteile nun keine Aussagen mehr sind, sondern etwas viel Allgemeineres, so genannte Aussageformen. Beispiel 1.25 Betrachten wir zunächst einmal den Satz x > 0“. Solange wir über x nichts ” Genaueres wissen bzw. x näher spezifiziert haben, können wir nicht entscheiden, ob der Satz wahr oder falsch ist. Somit ist der Satz nach unserer Definition auch keine Aussage. Ersetzen wir x jedoch durch eine Zahl, wird der Satz zu einer Aussage und wir können ihm einen Wahrheitswert zuweisen. Setzen wir für x zum Beispiel den Wert 1 ein, so erhalten wir eine wahre Aussage 1 > 0 “, die wir bereits im ” letzten Abschnitt kennengelernt haben. Für x = −3 2 erhalten wir aber die falsche −3 Aussage 2 > 0“. Wir nennen solche Sätze mit “Loch” eine Aussageform. ” 11 durch 38 Ausprobieren aller möglichen Belegungen 1.2 Prädikatenlogik Sätze, wie wir sie im letzten Beispiel gesehen haben, werden in der Mathematik sehr häufig verwendet: Definition 1.8 Ein Satz, der eine oder mehrere Variablen enthält und nach Einsetzen von konkreten Werten aus einer festgelegten Grundmenge, die Universum genannt wird, zu einer Aussage wird, nennt man eine Aussageform. In unserem Beispiel kann man als Universum alle Menge von Zahlen wählen, auf denen die Ordnung mit < bzw. > sinnvoll definiert ist, also z.B. die Menge der natürlichen, ganzen, rationalen oder rellen Zahlen. Man beachte dabei, dass wir keine Aussage erhalten, wenn wir statt dessen die Menge aller Menschen als Universum wählen, da dann der Satz Christian > 0 überhaupt keinen Sinn ergibt, und wir ihm damit nicht eindeutig einen Wahrheitswert zuordnen können. 1.2.1 Syntax Definition 1.9 Die Menge aller prädikatenlogischen Aussagen P ist gegeben durch folgende Grammatik: P 3 ϕ, ψ ::=> | ⊥ | P (x1 , . . . , xk ) | ∀x : ϕ | ∃x : ϕ | ¬ϕ | ϕ ∧ ψ | ϕ ∨ ψ | ϕ ⊕ ψ | ϕ → ψ | ψ ↔ ϕ Dabei gilt: x1 , . . . , xk ∈ IVar. IVar ist die Menge der Individuenvariablen, sie dienen uns als Platzhalter für Werte in Prädikaten. Die Aussagenvariablen p der Aussagenlogik sind nun verschwunden. Stattdessen finden wir unter anderem die neue Phrase P (x1 , . . . , xn ) vor. Dies ist die sogenannte Aussagenform. Sie besteht aus zwei Teilen, dem Prädikat P , und den Individuenvariablen x1 bis xn . Ein Prädikat kann beliebig viele Indiviudenvariablen besitzen, was wir durch die Punktschreibweise verdeutlichen. Wir wollen uns bald anschauen, was ein Prädikat formal genau ist. Merken wir uns aber soweit nur, dass ein Prädikat im Prinzip nichts anderes ist als ein Satz mit Löchern x1 bis xn , den man durch Auffüllen der Löcher (Individuenvariablen) mit Werten aus dem Universum zu einer Aussage machen kann. Dafür verwendet man auch die folgende Notation: P : x > 0 bzw. P (x) := x > 0. Dabei ist x im Universum enthalten. Beispiel 1.26 Möchten wir von einer beliebigen Menge an Städten fragen, ob sie im Saarland liegen oder nicht, so können wir diese mit Hilfe einer Aussageform tun. Sei so zum Beispiel unser Universum U = {Saarbücken, Hanoi} und das dazugehörige Prädikat L(s) := Die Stadt s liegt im Saarland. Dann ist L(Saarbrücken) eine wahre Aussage und L(Hanoi) eine falsche Aussage. 39 1 Logik Die anderen beiden neuen Phrasen sind ∀x : ϕ und ∃x : ϕ. Diese erlauben uns, Aussageformen zu Aussagen zu machen. Dabei unterscheiden wir die folgenden beiden Arten: 1. Eine bestimmte Eigenschaft wird von allen Objekten des Universums erfüllt. (∀) 2. Eine bestimmte Eigenschaft wird von mindestens einem Objekten des Universums erfüllt. (∃) Sagen wir zum Beispiel, alle Hunde sind vierbeinig, so muss jeder Hund auf der ganzen Welt vier Beine haben, damit unsere Aussage wahr wird, behaupten wir jedoch lediglich, dass es Hunde gibt, die vierbeinig sind, so müssen wir nur einen einzigen finden, damit unsere Aussage wahr wird. In der Prädiktenlogik stellt sich dieser Sachverhalt nun wie folgt dar: Sei P (x) ein Prädikat über dem Universum U, dann bezeichnet ∀x ∈ U : P (x) die Aussage, dass für alle Objekte v ∈ U die Aussage P (v) wahr wird. Weiter bezeichnet ∃x ∈ U : P (x) die Aussage, dass mindestens ein Objekt v ∈ U existiert, so dass P (v) eine wahre Aussage ist. Das Symbol ∀ nennt man Allquantor und ∃ nennt man Existenzquantor 12 . Betrachten wir doch nun doch einmal als Universum die Menge aller Vorkursteilnehmer. Sei unser Prädikat P (x) := x studiert an der Universität des Saarlandes. Dann sind die Aussagen ∀x : P (x) und ∃x : P (x) wahr, wohingegen die Aussagen ∀x : ¬P (x) und ∃x : ¬P (x) falsch sind. Das heißt alle Teilnehmer des Vorkurses studieren an der Universität des Saarlandes, insbesondere gibt es also auch mindestens einen, der hier studiert. Gleichzeitig studieren aber nicht nur nicht alle Teilnehmer nicht hier, sondern kein Teilnehmer wird nicht an der Universität des Saarlandes studieren. Oft wollen wir aber eine Aussageform nicht nur in Abhängigkeit einer einzigen Variable betrachten, da die Wahrheit einer Aussage, wie das nächste Beispiel zeigt, von mehr als einem Faktor abhängt. In diesem Fall definieren wir mehrstellige Prädikate. Beispiel 1.27 Betrachten wir das Prädikat Q(x, y) := x liebt y, wobei x und y aus der Menge der Menschen stammt. Dann haben wir als Universum eine Menge von geordneten Paaren (x, y) mit den eben genannten Mengen zur Belegung. Wenn wir mehrstellige Prädikate haben, dann ist es sehr wichtig genau darauf zu achten, in welcher Reihenfolge über die Parameter des Prädikats quantifiziert 12 Zudem bezeichnet ∃!x ∈ U : P (x) die Aussage, dass genau ein x im Universum U gibt, so dass P (x) wahr ist. Diese Aussage ist falsch, wenn kein oder mehr als ein Element in U gibt, so dass P (x) wahr wird. 40 1.2 Prädikatenlogik wird. Vertauscht man nämlich die Reihenfolge von Existenz- und Allquantoren, ergibt sich meist eine komplett andere Aussage! Beispiel 1.28 Sei erneut Q(x, y) := x liebt y. 1. ∀x∀y : Q(x, y). Diese Aussage ist noch sehr einfach zu verstehen. Alle Menschen lieben alle anderen Menschen (übrigens einschließlich sich selbst). Daran ändert sich auch nicht, wenn wir die Quantoren, oder die Variablen vertauschen. Die Aussage bleibt genau die gleiche, wenn wir schreiben ∀y∀x : Q(x, y). 2. ∃x∃y : Q(x, y). Auch hier ändert die Vertauschung von Variablen oder Quantoren nichts. Diese Aussage bedeutet, dass es auf der Welt einen Menschen gibt, der jemanden liebt. Damit diese Aussage wahr wird, genügt es auch jemanden zu finden, der sich selbst liebt. 3. ∀x∃y : Q(x, y). Diese Aussage bedeutet, dass jeder Mensch (mindestens) einen Menschen kennt, den er liebt. Es kann also sein, dass ich mich selbst liebe, mein Nachbar seine Frau, die Frau meines Nachbarn wiederum mich. Dann wäre diese Aussage auf dem Universum der Menschen {ich, Nachbar, Frau des Nachbarn} wahr, wenn auch nicht unbedingt zwischenmenschlich ganz problemlos. 4. ∃x∀y : Q(x, y). Sobald wir die Quantoren tauschen, ändert sich die Aussage komplett. Sie besagt nun, dass wir einen Menschen auf der Welt finden können, der alle Menschen auf der Welt liebt! Wir sehen, wie drastisch sich so ein Quantorentausch auswirkt: Von trivialen Erkenntnissen klassischer Liebeslieder à la “Everybody loves somebody” (∀x∃y), die durch das liebevolle Zusammenleben aller Menschen ebenso zur wahren Aussage wird, wie durch komplizierte Dreieckbeziehungen und jeden Menschen befallenden Narzissmus, gelangen wir zu Aussagen, die die Existenz ganz besonderer Menschen fordert, die alle Menschen lieben, so wie wir sie vielleicht in Persönlichkeiten wie Jesus kennen (∃x∀y). 5. ∀y∃x : Q(x, y). Im Verhältnis zu Beispiel 3 haben wir nun nicht die Quantoren getauscht, sondern die Variablen. Diese Aussage sagt nun, dass jeder Mensch von einem (anderen) Menschen geliebt wird. Das ist eine komplett neue Aussage, die wir bisher noch nicht hatten. 6. ∃y∀x : Q(x, y). Nun haben wir die Variablen aus Beispiel 4 getauscht, und erhalten wiederum eine Aussage, die zu allen anderen Aussagen verschieden ist. Sie sagt, dass es einen Menschen gibt, den alle anderen Menschen klasse 41 1 Logik finden. Wenn wir das Universum für x aus der Menge der kleinen TeenieMädchen wählen, und y weiterhin beliebig lassen, dann könnte diese Person vielleicht Justin Biber sein. Wir sehen also, dass wir ganz genau hinschauen müssen, was solche Aussagen bedeuten. Jede Vertauschung von Quantoren oder Variablen führt zu neuen Bedeutungen der Aussage. Die Situation wird natürlich nicht leichter, wenn wir Aussageformen mit drei, vier oder noch mehr Individuenvariablen betrachten. 1.2.2 Semantik Die Semantik der Prädikatenlogik bleibt bei den uns bereits aus der Aussagenlogik bekannten Operatoren (∧, ∨, . . . ) und Konstanten (>, ⊥) gleich. Wir werden im Folgenden sehen, dass eine vollständig formale Definition der Semantik prädikatenlogischer Formeln nicht so einfach ist, wie bei der Aussagenlogik. Dennoch ist es möglich, eine formale Semantik zu definieren. Ohne ein Mehrwissen über mathematische Strukturen ist dies jedoch kaum möglich, und würde uns hier nur unnötig verwirren. In Programmierung 1 werden wir das Konzept kaskadierter Funktionen kennenlernen. Diese bieten uns eine gute Grundlage, die Semantik der Prädikatenlogik aufzuschreiben. Bis dahin werden wir aber mit einer guten Portion Intuition Vorlieb nehmen müssen, was genau prädiktenlogische Formel bedeuten. Einige grundlegende, und sehr wichtige Bestandteile der Semantik wollen wir jedoch dennoch erklären. Definition 1.10 Ein Prädikat P ist eine Funktion der Form U × · · · × U → {w, f } von der Grundmenge U in die Menge der Wahrheitswerte {w, f }. Wie wir im vorhergehenden Beispiel gesehen haben, kann es in unserer Grundmenge Elemente geben, mit denen eine Aussageform in eine wahre bzw. in eine falsche Aussage verwandelt wird. Daher zerlegt ein Prädikat P unser Universum U in zwei disjunkte Teilmengen Uw und Uf , nämlich Uw die Menge der Elemente von U, die eine wahre Aussage liefern, wenn wir sie in das Prädikat P einsetzen, und Uf , für die eine falsche Aussage entsteht. Für das zuvor in Beispiel 1.26 definierte Prädikat L ist Uf = {Hanoi} und Uw = {Saarbrücken}. Beispiel 1.29 Betrachten wir als Universum U die Menge an Teilnehmern des Vorkurses. Dann können wir als Prädikat P zum Beispiel definieren P (x) : Teilnehmer x stammt aus dem Saarland. Nun ist x unsere Aussagenvariable, die wir mit Teilnehmern des Vorkurses belegen können. Mit Hilfe des Prädikats lässt sich die Gruppe der Vorkursteilnehmer, also 42 1.2 Prädikatenlogik unser Universum, in zwei Mengen einteilen: die Menge aller Teilnehmer, die laut Saarländern nicht das Glück haben, aus dem Saarland zu stammen, und die Menge aller Saarländer. Die erste Menge ist dabei Uf , da das Prädikat durch Einsetzen eines Teilnehmers aus dieser Menge falsch wird. Somit ist die andere Menge Uw , da die Aussageform durch Belegen von x mit einem Teilnehmer aus dem Saarland wahr wird. Unsere Semantik muss also jedem Symbol P , das Teil einer Aussageform P (x1 , . . . , xn ) ist, eine Funktion zuordnen. So wie unsere Semantik der Aussagenform mit den Belegungen der Aussagenvariablen parametrisiert wurde, so kann man sagen, dass die Semantik der Prädikatenlogik damit parametrisiert ist, welche Funktion von U × · · · U → {w, f } wir einem Prädikatsymbol zuweisen sollen. Anders als Aussagenvariablen bei der Aussagenlogik sind Prädikate in prädikatenlogischen Formeln nicht als Variablen gedacht, sondern als Konstanten, die für eine ganz bestimmte Funktion stehen sollen. Daher schreiben wir Aussageformen meistens nicht als P (x), sondern viel konkreter, z.B. direkt als x > 0, wenn wir mit P die Funktion ( w für x > 0 P (x) = f sonst meinen. Aussageformen selbst sind noch keine Aussagen. Erst wenn wir alle in einer Aussageform vorkommenden Individuenvariablen durch einen Quantor bedacht haben, wird daraus eine Aussage. Bemerkung 1.10 Betrachten wir den Ausdruck ∀y : P (x). Da die im Prädikat vorkommende Variable x eine ganz andere ist, als die Variable y, die im Quantor vorkommt, wird über x selbst gar nicht quantifiziert. Es handelt sich hierbei also um keine Aussage, sondern wiederum nur um eine Aussageform. Semantisch wäre diese Aussageform übrigens äquivalent zu P (x) selbst. Sowohl ∀x : P (x) als auch ∃x : P (x) sind wiederum Aussagen. Wir wollen nun definieren, wann genau ein Ausdruck eine Aussage ist. Zuerst müssen wir noch einige Begrifflichkeiten klären. Wir unterscheiden zwischen • einer Variablen • ihrem Namen • ihrem definierenden Auftreten (es gibt maximal eines davon!) und • ihren benutzenden Auftreten (davon kann es mehrere geben). 43 1 Logik Was eine Variable genau ist, das ist nicht so einfach zu definieren, und wie so oft, muss dieses Objekt des Geistes unbeschrieben bleiben. Jedoch haben wir bisher alle unsere eigene Vorstellung davon entwickelt, was eine Variable ist. Wir wollen diese Vorstellung einfach weiterhin benutzen, und dabei vorsichtig sein, dass unsere Vorstellung sich nicht zu sehr von den Vorstellungen anderer Mathematiker entfernt. Was wir jedoch genauer beschreiben können, ist der Name einer Variablen. So ist z.B. x der Name einer Variablen. Wenn wir z.B. schreiben ∃x : P (x), dann sehen wir den Namen x zwei Mal. Dieser Name steht jedes Mal für ein und die selbe Variable. Wir nennen das Auftreten eines Variablennamens direkt hinter einem Quantor das definierende Auftreten der Variable. Die Teilausdrücke ∀x : bzw. ∃x : führen also Variablen ein. Innerhalb eines Prädikates nennen wir die Auftreten einer Variablen (genauer: ihres Namens) dann benutzend. Eine Variable kann nur einmal definiert werden, jedoch häufiger benutzt, z.B. im Ausdruck ∀x : Q(x, x), gibt es ein definierendes Auftreten, jedoch zwei benutzende. Weshalb wir zwischen Variablen und ihren Namen unterscheiden wird klarer, wenn wir uns vergegenwärtigen, dass die Aussage ∀x : P (x) und die Aussage ∀y : P (y) genau die selbe Aussage ist. Wir haben dabei nur den Namen der Variable vertauscht, jedoch nicht die Variable selbst. Beispiel 1.30 Die Aussagen ∀x∃y : Q(x, y) und ∀y∃x : Q(y, x) sind äquivalent. Nur die Variablennamen wurden getauscht, jedoch nicht die Variablen selbst. Die Aussagen ∀x∃y : Q(x, y) und ∀x∃y : Q(y, x) sind jedoch nicht äquivalent. Hier haben wir die Variablen (mit Hilfe ihrer Namen) innerhalb des Prädikats vertauscht! Beispiel 1.31 Betrachten wir den Ausdruck (∀x : P (x)) ∧ (∀x : Q(x)). In diesem Ausdruck treten zwei verschiedene Variablen auf, die jedoch den selben Namen besitzen. Da dies manchmal verwirrend ist, taufen wir Variablen dann auch gerne konsistent um, ohne die Bedeutung der Aussage zu verändern. Eine Möglichkeit dies hier zu tun wäre der Ausdruck (∀x : P (x))∧(∀y : Q(y)). Man nennt dies auch den bereinigten Ausdruck zu unserem ursprünglichen Ausdruck. Benutzende Variablenauftreten, zu denen es ein definierendes Auftreten gibt, nennt man gebundene Auftreten. Ein benutzendes Auftreten ist immer an maximal einen Quantor gebunden. Ist ein benutzendes Auftreten nicht gebunden, so nennt man es ungebunden. Wir definieren nun rekursiv, wann ein benutzendes Auftreten einer Variable an welchen Quantor gebunden ist. Definition 1.11 (Bindungen) • Die benutzenden Auftreten aller Individuenvariablen in einer Aussagenform P (x1 , . . . , xn ) sind ungebunden. 44 1.2 Prädikatenlogik • Im Ausdruck ∀x : ϕ werden alle ungebundenen benutzenden Auftreten der Variable x im Ausdruck ϕ an ∀x : gebunden. • Im Ausdruck ∃x : ϕ werden alle ungebundenen benutzenden Auftreten der Variable x im Ausdruck ϕ an ∃x : gebunden. • Im Ausdruck ¬ϕ sind genau die benutzenden Auftreten von Variablen gebunden bzw. ungebunden, die auch in ϕ gebunden bzw. ungebunden sind. • Im Ausdruck ϕ ∧ ψ sind genau die benutzenden Auftreten von Variablen gebunden bzw. ungebunden, die auch in ϕ und ψ gebunden bzw. ungebunden sind. • Entsprechend für alle weiteren Operatoren. Wir sagen eine Variable x ist gebunden, wenn alle ihre benutzenden Auftreten gebunden sind13 . Beispiel 1.32 Seien P (x) und Q(x, y) zwei beliebige Prädikate. Betrachten wir P (x) ∧ ∀y : Q(x, y). Die Variable y ist an den Quantor ∀y gebunden. Die benutzenden Auftreten von x sind beide ungebunden. Im Ausdruck ∀x : (P (x) ∧ ∀y : Q(x, y)) sind beide Auftreten von x an den Quantor ∀x gebunden. Man beachte, dass im Ausdruck (∀x : P (x))∧(∀x∀y : Q(x, y)) der Variablenname x für zwei verschiedene Variablen steht. Beide Variablen sind jedoch gebunden. An dieser Stelle wäre es jedoch klug, den Ausdruck zu bereinigen, und z.B. (∀x : P (x)) ∧ (∀z∀y : Q(z, y)) zu schreiben. Dann ist klar was gemeint ist, wenn wir z.B. sagen, die Variablen x und y und z sind alle gebunden. In der vorhergehenden Bemerkung haben wir gesehen, dass ein Prädikat nicht quantifiziert sein kann, obwohl ein Quantor davor steht. Aber nicht nur, wenn die Variablen sich unterscheiden, kann ein Prädikat nicht vollständig quantifiziert sein. Betrachten wir hierzu doch einmal das folgende Beispiel: Beispiel 1.33 Im Satz (∀x : P (x)) ∧ (∀y : Q(x, y)) ist x im zweiten Teil des Ausdrucks nicht quantifiziert, und daher nicht gebunden. Auch hier müssen wir vorsichtig sein. Das ungebundene x bezeichnet nicht die selbe Variable wie das x im ersten Teil des Ausdrucks. Bereinigt sieht der Ausdruck z.B. so aus: (∀z : P (z)) ∧ (∀y : Q(x, y)) 13 man mache sich klar, dass diese alle an ein und den selben Quantor gebunden sein müssen. 45 1 Logik Gültigkeitsbereich (engl. Scope) Den Teil eines prädikatenlogischen Ausdrucks, auf den sich ein Quantor bezieht, nennt man seinen Gültigkeitsbereich (engl. Scope). Es ist der längst mögliche sinnvolle Ausdruck nach dem Doppelpunkt. Machen wir einen kurzen Rückblick zur Syntax: Wie schon in der Aussagenlogik, wollen wir auch für die prädikatenlogischen Ausdrücke eine andere Schreibweise kennenlernen, den Strukturbaum. Auch hier dienen Sie dazu, die teilweise sehr komplizierten Strukturen von Ausdrücken graphisch zu veranschaulichen. Das Aufstellen von Strukturbäumen aus prädikatenlogischen Ausdrücken verläuft prinzipiell so, wie wir es in der Aussagenlogik schon gesehen haben, es kommen lediglich Knoten für ∀x, ∃x und Prädikate, wie P (x) hinzu. Beispiel 1.34 Seien P und Q beliebige Prädikate. Betrachten wir zunächst ein paar prädikatenlogische Ausdrücke und ihre Strukturbäume: ∀x 1. ∀x : P (x) P (x) ∀x ∧ 2. ∀x : P (x) ∧ ∃y : Q(x, y) P (x) ∃y Q(x, y) Wie man am zweiten Beispiel erkennen kann, spielt hier der Skopus der Quantoren eine wichtige Rolle. Vor dem Zeichnen von Strukturbäumen ist es daher sinnvoll zunächst vollständig zu klammern, dazu aber später mehr. Und nun die andere Richtung. Hierbei ist es wichtig, dass alles, was unter einem Quantor im Baum steht, auf jeden Fall zusammengehört, was wir im Folgenden durch Klammern darstellen wollen. 46 1.2 Prädikatenlogik ∃x ∃x : (∀y : (Q(x) ∧ P (y))) ∀y ∧ Q(x) P (y) (∃x : P (x)) ∧ (∀x : Q(x)) ∧ ∃x ∀x : P (x) Q(x) Die Strukturbäume prädikatenlogischer Ausdrücke werden uns nun eine große Hilfe sein, die Bindungen korrekt zu bestimmen. 47 1 Logik In der Praxis... (Wie bestimmt man Bindungen?) Nun haben wir alles “Handwerkszeug” zusammen, um zu erklären, wie man vorgehen kann, um die Bindungen zu bestimmen. Wir betrachten dies an dem Beispiel ∃x : P (x) → ∀y : P (y) ∧ Q(x, y) ∨ Q(y, y) 1. Zuächst bestimmen wir den jeweiligen Gültigkeitsbereich der verschiedenen Quantoren und setzen entsprechende Klammern: (∃x : P (x) → (∀y : P (y) ∧ Q(x, y) ∨ Q(y, y))) 2. Dann klammern wir den Ausdruck nach den aussagenlogischen Klammersparregeln vollständig: (∃x : P (x) → (∀y : (P (y) ∧ Q(x, y)) ∨ Q(y, y))) 3. Nun können wir den Strukturbaum aufstellen: ∃x → ∀y P (x) ∨ ∧ P (y) Q(y, y) Q(x, y) 4. Um nun das definierende Auftreten zu einem benutzenden zu bestimmen, betrachten wir das benutzende Auftreten im Baum und laufen von dort aus soweit an den Kanten entlang hoch bis wir auf ein definierendes Auftreten mit dem gleichen Namen stoßen. Dazu ein Beispiel: Wir wollen nun das definierende Auftreten von x in Q(x, y) herausfinden. Die einzelnen Schritte stellen wir dabei im Folgenden markiert dar. ∃x ∃x Wir gehen dann eine Kante hoch und befinden uns am ∧. → → ∀y P (x) ∀y P (x) ∨ ∧ P (y) ∨ ∧ Q(y, y) Q(x, y) P (y) Q(y, y) Q(x, y) und so weiter. . . 48 ∃x ∃x ∃x ∃x → → → → ∀y P (x) ∀y P (x) ∨ ∧ P (y) ∧ P (y) ∧ Q(y, y) Q(x, y) ∀y P (x) ∨ ∨ Q(y, y) Q(x, y) ∀y P (x) P (y) ∨ ∧ Q(y, y) Q(x, y) Nun haben wir das passende definierende Auftreten gefunden! P (y) Q(y, y) Q(x, y) 1.2 Prädikatenlogik Beispiel 1.35 1. Im Satz ∀x ∈ N ∃y ∈ N : x+y = 10, ist der Gültigkeitsbereich des Allquantors das Prädikat ∃y ∈ N : x+y = 10, der Gültigkeitsbereich des Existenzquantors das Prädikat x + y = 10. 2. Im Satz (∀x ∈ N : x > 0) ∧ (x < 10) ist der Gültigkeitsbereich von ∀ das Prädikat x > 0. Wir erkennen dies daran, da der Ausdruck x > 0), und alles was danach kommt, kein gültiger Ausdruck mehr ist (falsche Klammerstruktur). Der längste gültige Ausdruck nach dem Doppelpunkt ist also x > 0. Der gesamte Ausdruck ist damit nur eine Aussageform, da die Variable x in x < 10 ungebunden ist. 3. Im Satz ∀x ∈ N : x ≤ 0 ∧ ∃x ∈ N : x < 10 ist der Gültigkeitsbereich des Allquantors der gesamte Teilausdruck nach dem Doppelpunkt. Dennoch wird nur die Variable x in x ≤ 0 von diesem Quantor gebunden, da der Existenzquantors eine Variable mit dem selben Namen definiert, und daher das Auftreten von x in x < 10 bereits gebunden ist. 4. Im Satz ∀x ∈ N : x ≤ 0 ∧ (∃x ∈ N : x < 10) ∧ x = 0 tritt die Variable x, die durch den ∀-Quantor definiert wird, zweimal auf. Da der Skopus dieses Quantors wiederum den gesamten Ausdruck nach dem Doppelpunkt umfasst, bindet dieser auch beide Auftreten. Der Skopus des ∃-Quantors ist lediglich x < 10. Bereinigt sieht der Ausdruck wie folgt aus ∀x ∈ N : x ≤ 0 ∧ (∃y ∈ N : y < 10) ∧ x = 0. Bevor wir die formale Semantik für prädikatenlogische Ausdrücke definieren können, gilt es noch eine Hürde zu nehmen. Wir müssen uns überlegen, was es formal bedeutet, eine Aussagenvariable durch einen konkreten Wert aus dem Universum U zu ersetzen. Denn erst dann können wir sagen, was es bedeutet, das eine Aussage für alle Werte aus dem Universum wahr ist, oder es einen Wert aus dem Universum gibt, sodass eine Aussage wahr wird. Das Ersetzen einer Variable durch einen Wert stellen wir als eine Funktion dar. Das besondere an dieser Funktion ist, dass wir sie post-fix notieren. Das bedeutet, wir schreiben die Funktion hinter den Ausdruck, auf den wir sie anwenden wollen! An stelle wie in der Schule f (x) für eine Funktion f zu schreiben, sagen wir nun x f . Das ist für Funktionsnamen wie f ungewöhnlich, und auch nicht besonders hübsch. Für unsere Funktion ist dies jedoch sehr üblich und gar nicht so häßlich, wie wir gleich sehen werden. Definition 1.12 Sei v ∈ U beliebig. Wollen wir in in einem Ausdruck ϕ ∈ P eine Individuenvariable x durch v ersetzen, so schreiben wir (ϕ)[x := v]. Sei P ein beliebiges Prädikat und x1 bis xn für ein n ∈ N Individuenvariablen oder Werte aus dem Universum U. Wir gehen dabei wie folgt vor: 49 1 Logik 1. (P (x1 , . . . , xi , x, xi+1 , . . . , xn ))[x := v] = P (x1 , . . . , xi , v, xi+1 , . . . , xn ), wobei 1 ≥ i ≥ n. 2. (>)[x := v] = > 3. (⊥)[x := v] = ⊥ 4. (ϕ ∧ ψ)[x := v] = (ϕ)[x := v] ∧ (ψ)[x := v] 5. (ϕ ∨ ψ)[x := v] = (ϕ)[x := v] ∨ (ψ)[x := v] 6. (ϕ ⊕ ψ)[x := v] = (ϕ)[x := v] ⊕ (ψ)[x := v] 7. (ϕ → ψ)[x := v] = (ϕ)[x := v] → (ψ)[x := v] 8. (ϕ ↔ ψ)[x := v] = (ϕ)[x := v] ↔ (ψ)[x := v] 9. (∀x : ϕ)[x := v] = ∀x : ϕ 10. (∀z : ϕ)[x := v] = ∀z : (ϕ)[x := v], wobei z eine Individuenvariable ist. 11. (∃x : ϕ)[x := v] = ∃x : ϕ 12. (∃z : ϕ)[x := v] = ∃z : (ϕ)[x := v], wobei z eine Individuenvariable ist. Das besondere an der Ersetzungsfunktion ist, dass wir nur Variablen ersetzten, die noch nicht durch einen Quantor gebunden sind; selbst, wenn die Variable den selben Namen hat! Falls ein Quantor eine Variable bindet, die den selben Namen hat, wie die Variable, die wir ersetzen wollen, so ersetzen wir einfach nichts (Zeilen 9 und 11). Ansonsten arbeiten wir einfach rekursiv weiter. Dazu nun ein Beispiel: Beispiel 1.36 Wir betrachten die folgenden Ausdrücke. Wir wollen jeweils die Individuenvariable x durch einen beliebigen Wert v aus dem Universum ersetzen. Seien P und Q dazu beliebige Prädikate. • (∀x : P (x))[x := v] = ∀x : P (x) • (∀y : P (x, y))[x := v] = ∀y : P (v, y) • Ein etwas kompliziertes Beispiel: ((∃x : P (x, y)) ∧ (∀y : Q(x, y)))[x := v] = ((∃x : P (x, y))[x := v]) ∧ ((∀y : Q(x, y))[x := v]) = (∃x : P (x, y)) ∧ (∀y : (Q(x, y))[x := v]) = (∃x : P (x, y)) ∧ (∀y : Q(v, y)) Hier nochmal zwei wichtige Beobachtungen: 50 1.2 Prädikatenlogik 1. Wir dürfen keine Individuenvariablen ersetzen, die durch einen Quantor gebunden sind. 2. Versuchen wir mehrfach die gleiche Individuenvariable zu ersetzen, so wirkt nur die erste Ersetzung, da danach die Individuenvariable nicht mehr frei im Ausdruck auftritt. Es gilt also ((ϕ)[x := v])[x := v 0 ] = (ϕ)[x := v]. TODO::genauer erklären:::ODOT Um eine sinnvolle Semantik prädikatenlogischer Ausdrücke anzugeben, müssen wir mehr Ausdrücke zulassen als bisher, d.h. wir müssen die Syntax anders definieren. Definition 1.13 (Erweiterte Syntax) Die Menge aller prädikatenlogischen Aussagen P 0 ist gegeben durch folgende Grammatik: P 0 3 ϕ, ψ ::=> | ⊥ | P (x1 , . . . , xk ) | ∀x : ϕ | ∃x : ϕ | ¬ϕ | ϕ ∧ ψ | ϕ ∨ ψ | ϕ ⊕ ψ | ϕ → ψ | ψ ↔ ϕ Dabei gilt: x1 , . . . , xk ∈ U ∪ IVar Im Gegensatz zur Semantik von aussagenlogischen Ausdrücken, ist die Semantik prädikatenlogischer Ausdrücke eine partielle Funktion, d.h. es gibt Ausdrücke, die keine Semantik haben. Definition 1.14 Seien im Folgenden ϕ und ψ ∈ P 0 und P ein Prädikat. Dann ist die semantische Funktion J·K : P 0 → {f , w} wie folgt induktiv definiert: 1. J>K = w 2. J⊥K = f 3. JP (x1 , . . . , xk )K = P (x1 , . . . , xk ) wenn x1 , . . . , xk ∈ U für ein k ∈ N ( w wenn JϕK = f 4. J¬ϕK = f wenn JϕK = w ( w wenn JϕK = w und JψK = w 5. Jϕ ∧ ψK = f ansonsten ( f wenn JϕK = f und JψK = f 6. Jϕ ∨ ψK = w ansonsten w wenn JϕK = w und JψK = f 7. Jϕ ⊕ ψK = w wenn JϕK = f und JψK = w f ansonsten 51 1 Logik ( f w wenn JϕK = w und JψK = f ansonsten f 9. Jϕ ↔ ψK = f w ( w 10. J∀x : ϕK = f ( w 11. J∃x : ϕK = f wenn JϕK = w und JψK = f wenn JϕK = f und JψK = w ansonsten 8. Jϕ → ψK = wenn für alle v ∈ U gilt: J(ϕ)[x := v]K = w ansonsten wenn es ein v ∈ U gibt so dass: J(ϕ)[x := v]K = w ansonsten 1.2.3 Logische Äquivalenz von Prädikaten Wir haben gelernt, dass zwei aussagenlogischen Ausdrücke äquivalent sind, wenn sie für alle Belegungen der Aussagenvariablen innerhalb des Ausdruckes die gleichen Wahrheitswerte annehmen. So ähnlich können wir auch die Gleichheit von Prädikaten definieren: Definition 1.15 Die beiden Prädikate P (x) und Q(x) über dem Universum U sind logisch äquivalent, wenn die Mengen Uw für beide Prädikate übereinstimmen bzw. wenn der Satz ∀x ∈ U : P (x) ↔ Q(x) eine Tautologie ist. Zwei logisch äquivalente Prädikate sind zum Beispiel P (x) := x ist Primzahl und Q(x) := x hat genau zwei Teiler über der Menge der natürlichen Zahlen. 1.2.4 Notation 1. ∀x1 : ∀x2 : · · · ∀xn : . . . schreibt man oft als ∀x1 , x2 , . . . , xn : . . . . Entsprechend für Folgen von ∃. Achtung: Bei ∀x∃y darf man natürlich nicht ∀x, y schreiben. 2. Der Doppelpunkt nach definierenden Variablenauftreten kann weggelassen werden. 3. Wir haben bei vielen Beispielen das Universum einer Variable weiter eingeschränkt, indem wir z.B. ∀x ∈ N : x > 0 geschrieben haben. Diese Schreibweise ist semantisch ableitbar, und kann wie folgt geschrieben werden ∀x : x ∈ N → x > 0. Der Ausdruck x ∈ N ist nicht weiter als ein Prädikat 52 1.2 Prädikatenlogik über x. Die Schreibweise mit x ∈ N vor dem Doppelpunkt macht jedoch viele Aussagen leichter lesbar. Man beachte folgende Regel: • ∀Q(x) : P (x) ≡ ∀x : Q(x) → P (x) • ∃Q(x) : P (x) ≡ ∃x : Q(x) ∧ P (x) In der Tat schreib man manchmal auch komplexere Prädikate noch vor den Doppelpunkt. So schreibt man z.B. ∀x ∈ N, x > 1 : ∃y ∈ N, y 6= x : y|x, um zu sagen, dass alle natürlichen Zahlen x, die echt größer als 1 sind, durch ein natürliche Zahl geteilt werden, die ungleich sie selbst ist. Dabei trennt man die Prädikate, die x und y genauer bestimmen und vor dem Doppelpunkt stehen, oft durch Kommas. Wir können diesen Ausdruck formal umschreiben zu ∀x : x ∈ N → (x > 1 → (∃y : y ∈ N ∧ y 6= x ∧ y|x)). Wir sehen, dass die erste, weniger formale Schreibweise hier deutlich einfacher zu lesen ist. Dennoch müssen wir in der Lage sein, beide Schreibweisen zu verstehen, und ohne Nachdenken ineinander umschreiben zu können. 1.2.5 Wichtige Gesetze Quantoren über endlichen Universen Haben wir ein Prädikat P über dem Universum U, das mit einem Allquantor quantifiziert wird, also ∀x ∈ U : P (x), so können wir die Aussage auch mit Hilfe von ∧-Aussagen schreiben, indem wir für jedes Element v ∈ U direkt P (v) bilden und die so entstehenden Aussagen verunden. Ist z.B. U = {1, 2, 3}, dann gilt: (∀x ∈ U : P (x)) ≡ (P (1) ∧ P (2) ∧ P (3)) Wir schreiben für solchen schematischen Verundungen auch abkürzend ^ P (x) := (P (1) ∧ P (2) ∧ P (3)) x∈U Für beliebige endliche Mengen U gilt also ∀x ∈ U : P (x) ≡ ^ P (x). x∈U Entsprechend gilt ∃x ∈ U : P (x) ≡ _ P (x). x∈U 53 1 Logik Ist U eine Menge mit unendlich vielen Mengen, dann ist diese Äquivalenz nicht mehr gültig, da wir mit unserer Logik nur endliche Verundungen aufschreiben können. Wir können uns aber die Quantoren ∀ und ∃ selbst als eine Möglichkeit vorstellen, unendliche Verundungen und Veroderungen aufzuschreiben. Negation Es gilt ¬∀x : P (x) ≡ ∃x : ¬P (x) und ¬∃x : P (x) ≡ ∀x : ¬P (x) Um diese Äquivalenzen besser zu verstehen, rufen wir uns nochmals die aussagenlogischen Gesetze von De Morgan in Erinnerung: Seien dazu p und q Wahrheitswerte: • ¬(p ∧ q) ≡ ¬p ∨ ¬q • ¬(p ∨ q) ≡ ¬p ∧ ¬q Verwenden wir die eben eingeführte alternative Schreibweise für die Quantoren, so können wir mit Hilfe der Gesetze von De Morgan beispielsweise sehen, dass sich bei der Negierung eines Allquantors alle ∧-Zeichen zu ∨-Zeichen verkehren und die V W einzelnen Aussagen negiert werden, aus ¬ x ∈ U : P (x) wird also x∈U : ¬P (x), und damit gilt ¬(p ∧ q) ≡ ¬p ∨ ¬q. Man beachte, dass dies nur bei endlichen Universen vollkommen richtig ist, bei unendlichen Universen aber immerhin noch eine wunderbare und richtige Intuition. Haben wir Aussagen, die mehr als einen Quantor enthalten und negiert werden, so verkehren sich alle Quantoren und die Negation wird bis zum eigentlichen Prädikat durchgeschleußt. Beispiel 1.37 Betrachten wir doch einmal die folgende Aussage: (∀ > 0 ∃n ∈ N ∀n ≤ N : |x − xn |) Wir können sie in mehreren Schritten wie folgt negieren: ¬(∀ > 0 ∃n ∈ N ∀n ≤ N : |x − xn |) ≡ ∃ > 0¬(∃N ∈ N ∀n ≤ N : |x − xn | < ) ≡ ∃ > 0 ∀N ∈ N ¬(∀n ≤ N : |x − xn | < ) ≡ ∃ > 0 ∀N ∈ N ∃n ≤ N : ¬(|x − xn | < ) ≡ ∃ > 0 ∀N ∈ N ∃n ≤ N : |x − xn | ≥ Wichtige Implikationsgesetze Für ein Universum U und die Prädikate A(x), B(x), P (x, y) gelten folgende logischen Implikationen: 54 1.2 Prädikatenlogik 1. (∀x ∈ U : A(x)) → (∃x ∈ U : A(x)) 2. (∃x ∈ U : A(x) ∧ B(x)) → (∃x ∈ U : A(x)) ∧ (∃x ∈ U : B(x)) 3. (∀x ∈ U : A(x)) ∨ (∀x ∈ U : B(x)) → ∀x ∈ u : A(x) ∨ B(x) 4. (∀x ∈ U : A(x) → B(x)) → (∀x ∈ U : A(x)) → (∀x ∈ U : B(x)) 5. (∃x ∈ U : ∀y ∈ U : P (x, y)) → ∀y ∈ U : ∃x ∈ U : P (x, y) Bei diesen Implikationen lohnt es sich klar zu machen, weshalb die Implikation in die andere Richtung im Allgemeinen nicht richtig ist. Beispiel 1.38 Nehmen wir an, es gelte, analog zur ersten Implikation auch: (∃x ∈ U : A(x)) → ∀x ∈ U : A(x). Dann würde zum Beispiel aus der Tatsache, dass es einen Saarländer im Universum gibt, folgen, dass alle Menschen Saarländer sind. Saarländer mögen hier jetzt einwenden, dass das doch das Beste wäre, was passieren könnte, doch wir möchten festhalten, dass die Aussage falsch ist. Aufgabe 1.9 Finden Sie für jede der obigen Implikation ein Beispiel, das zeigt, das die Umkehrung der Implikation nicht allgemeingültig ist. Suchen Sie nun Spezialfälle, also konkrete Beispiele, bei denen doch beide Richtungen der Implikation gelten. Wichtige Äquivalenzen Nachdem wir nun einige Implikationen gesehen haben, die wir nicht umkehren dürfen, kommen wir zum Abschluss der Prädikatenlogik noch zu einigen Äquivalenzen. 1. ∃x ∈ U ∃y ∈ U : P (x, y) ≡ ∃y ∈ U ∃x ∈ U : P (x, y) 2. ∀x ∈ U ∀y ∈ N y ∈ U : P (x, y) ≡ ∀y ∈ U ∀x ∈ U : P (x, y) 3. ∃x ∈ U : (A(x) ∨ B(x)) ≡ (∃x ∈ U : A(x)) ∨ ∃x ∈ U : B(x)) 4. ∀x ∈ U : (A(x) ∧ B(x)) ≡ (∀x ∈ U : A(x)) ∧ (∀x ∈ U : B(x)) 55 1 Logik Intuitiv. . . Warum gelten die Äquivalenzen 3 und 4? Wir haben eben gesehen, dass ∃ und ∀ über endlichen Universen als ∨ bzw, ∧ schreiben können. Aufgabe 1.10 Überlegen Sie sich mit Hilfe der Gesetze der Aussagenlogik und der Möglichkeit Quantoren über endlichen Universen umzuschreiben, einen Beweis für die Äquivalenzen 3 und 4 über endlichen Universen. 56