Theoretische Grundlagen der Informatik Prof. Dr. Sibylle Schwarz Hochschule für Technik, Wirtschaft und Kultur Leipzig Fakultät Informatik, Mathematik und Naturwissenschaften Gustav-Freytag-Str. 42a, 04277 Leipzig Zimmer Z 411 (Zuse-Bau), http://www.imn.htwk-leipzig.de/~schwarz [email protected] WS 2013/2014 1 Informatik Informatik Lehre von der Darstellung und Verarbeitung von Information durch Algorithmen Teilgebiete der Informatik: theoretisch technisch Sprachen zur Formulierung von Information und Algorithmen, I Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, I Grundlagen für technische und praktische (und angewandte) Informatik I maschinelle Darstellung von Information Mittel zur Ausführung von Algorithmen (Rechnerarchitektur, Hardware-Entwurf, Netzwerk, . . . ) I I praktisch Entwurf und Implementierung von Algorithmen (Betriebssysteme, Compilerbau, SE, . . . ) angewandt Anwendung von Algorithmen (Text- und Bildverarbeitung, Datenbanken, KI, Medizin-, Bio-, Wirtschafts-, Medieninformatik, . . . ) 2 Inhalt der Lehrveranstaltung Theoretische Grundlagen der Informatik Einführung in formale Methoden in der Informatik, insbesondere Modellierung von Daten durch I Mengen I Wörter und formale Sprachen I Terme Abläufen durch I Zustandübergangssysteme I Abstrakte Maschinen I Berechnungsmodelle Eigenschaften (von Daten und Abläufen) durch Logiken I klassische Aussagenlogik I klassische Prädikatenlogik (der 1. Stufe) 3 Modellierung von Daten Beispiel Skatkarten Farben: Karo, Herz, Pik, Kreuz Menge F = {♦, ♥, ♠, ♣} Werte: Zahlen: 7, 8, 9, 10 Menge Z = {7, 8, 9, 10} I Bilder: Bube, Dame, König, As Menge B = {B, D, K , A} Menge aller Werte: Z ∪ B I Menge aller Karten: F × (Z ∪ B) Spielkarten sind die Elemente dieser Menge, (♠, 9) ∈ F × (Z ∪ B) z.B. (♥, B) ∈ F × (Z ∪ B), wichtiges Ziel der Modellierung in der Informatik: Repräsentation von Daten in einer Form, die maschinell dargestellt und verarbeitet werden kann Datentypen (abstrakte und konkrete) 4 Modellierung Modelle sind Abstraktionen realer Dinge, Eigenschaften, Beziehungen, Vorgänge I Auswahl von (für den Anwendungsbereich, zur Problemlösung) wichtigem Wissen I Vernachlässigung unwichtiger Details Beispiele: I Liniennetzplan I Grundriss I Stundenplan I Kostenplan spezielle Form der Modelle abhängig von I Problembereich I geplante Verwendung 5 Logik Beispiel: 1. Tom besucht heute das Kino oder das Konzert. Tom ist nicht im Kino. Also besucht Tom das Konzert. √ 2. √2 ist eine rationale oder eine irrationale Zahl. 2 6∈ .√ Also ist 2 irrational. Q gemeinsames Schema: Aus (P oder Q) und (nicht P) lässt sich Q schließen. formal: {P ∨ Q, ¬P} |= Q maschinelle Verarbeitung logischer Formelmengen z.B. durch SAT-Solver, Inferenzsysteme, Prolog-Interpreter 6 Formale Sprachen Modellierung von Daten, Abläufen und Systemen I Zeichen (Alphabet) z.B. {A,E,O,M,T}, {0, 1} I Folgen von Zeichen (Zeichenketten, Wörter) z.B. TOMATE, 10100 I Mengen von Wörtern (Sprachen) z.B. Menge aller Wörter, die das Teilwort OMA enthalten Menge aller Wörter, die auf 00 enden I Mengen von Sprachen (Sprachklassen) z.B. alle Sprachen, die nur endliche viele Wörter enthalten endliche Darstellung unendlicher Sprachen, z.B. durch reguläre Ausdrücke, Grammatiken Eignung verschiedener Sprachklassen zur maschinellen Darstellung von Daten und Abläufen 7 Zustandsübergangssysteme Münzenspiel: Startzustand : 6 Münzen auf einem Stapel Spielzug : zwei Münzen von einem Stapel nehmen und auf jeden Nachbarstapel je eine Münze legen I In welchen Zuständen sind gar keine Züge möglich? I Welche Zustände sind aus dem Startzustand erreichbar? I Wieviele Züge können (mindestens / höchstens) gespielt werden, bis kein Zug mehr möglich ist? I Verliert (kann nicht mehr ziehen) der erste oder der zweite Spieler, wenn zwei Spieler abwechselnd ziehen? Startzustand: ... 6 ... 8 Vorteile der formalen Darstellung Abstraktion von unwichtigen Details (Entwicklung und Verwendung von Modellen) Präzisierung der relevanten Aussagen (eindeutige Semantik) Systematisches Lösen (auch maschinell) von formal dargestellten Problemen möglich Struktureigenschaften formaler Beschreibungen Schlussweisen unabhängig von Bedeutung der Aussagen 9 Einordnung der LV in Teilgebiete der Informatik theoretisch Eigenschaften formaler Beschreibungs- und Programmiersprachen I Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, I Logik als Modellierung-Sprache (Formulierung von Information und Algorithmen) I Grundlagen für technische und praktische (und angewandte) Informatik I technisch Mathematische Grundlagen der digitalen Informationsverarbeitung (maschinelle Darstellung, Übermittlung und Verarbeitung von Information) praktisch Modellierung, Darstellung, Spezifikation von Algorithmen und Daten Grundlagen der Softwareentwicklung Anwendung logischer Verfahren zur Verifikation der Korrektheit von Programmen angewandt Anwendung der in der Softwareentwicklung, Wissensverarbeitung, KI 10 Lernziele I Fähigkeit zur Abstraktion I Grundkenntnisse in Modellbildung I Grundverständnis der Logik als Sprache der Informatik I Beweisverfahren I Zusammenhänge zu anderen Gebieten der Informatik und Mathematik 11 Literatur Folien zur Vorlesung, jeweils nach der Vorlesung veröffentlicht unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi/ empfohlene Bücher: Formale Sprachen und Berechnungsmodelle I zur Modellierung: I Uwe Kastens, Hans Kleine Büning: Modellierung - Grundlagen und formale Methoden, Hanser 2008 I zur Logik I Michael Huth, Mark Ryan: Logic in Computer Schience, Cambridge University Press 2010 I Uwe Schöning: Logik für Informatiker, Spektrum, 1995 I Martin Kreuzer, Stefan Kühling: Logik für Informatiker, Pearson Studium, 2006 I zu formalen Sprachen und Berechnungsmodellen: I Uwe Schöning: Theoretische Informatik - kurzgefasst, Spektrum 2001 I John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie, Addison-Wesley 1990 12 Informatik studieren Selbstudium: Vor- und Nachbereitung jeder Lehrveranstaltung (Vorlesung, Seminar, Praktikum, ...) Unterlagen zu den Lehrveranstaltungen (eigene Mitschrift, Skript, Folien, Zusatzmaterial, Übungsaufgaben) durcharbeiten Übungsaufgaben regelmäßig und rechtzeitig lösen, (Aufgaben vom Typ der) Übungsaufgaben gehören zum Stoff der LV und werden geprüft Bücher benutzen (Bibliothek), enthalten oft zusätzliche Übungsaufgaben, Informationen aus dem Internet sind oft unzuverlässig Lerngruppen bilden und gemeinsam lernen Nachfragen bei Dozenten (E-Mail, Sprechzeit, nach der Lehrveranstaltung,. . . ), Mitstudenten, älteren Studenten, . . . 13 Organisation der Lehrveranstaltung Folien, Übungsserien, Termine, Änderungen, ... unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi/ Modulbeschreibung INB-TGI: portal.imn.htwk-leipzig.de/studium/ ordnungen-und-modulkataloge 90 h für Präsenzstudium + 120 für Selbststudium Lehrveranstaltungen für jeden Studenten: I wöchentlich zwei Vorlesungen (60 SWS) I wöchentlich eine Übung (30 SWS) Vor- und Nachbereitung: schriftliche Aufgaben (ÜS) praktische Aufgaben (Autotool) Literaturstudium Selbststudium: Vor- und Nachbereitung (90 h) Prüfungsvorbereitung (30 h) 14 Schriftliche Hausaufgaben – Seminar schriftliche Übungsserien wöchentlich unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi Lernziele bei der Bearbeitung der Übungsserien: I Nachbereitung der letzten Vorlesung anhand der Vorlesungsfolien und (der angegebenen) Literatur I Vorbereitung der nächsten Vorlesung I Vorbereitung der Seminarvorträge zu jeder Aufgabe Übungen: I Besprechung der Lösungen der schriftlichen Hausaufgaben (Vorrechnen durch Studenten, Prüfungszulassung) I Fragen zum aktuellen Vorlesungsstoff und zu den neuen schriftlichen und praktischen Hausaufgaben 15 Praktische Hausaufgaben – Autotool https: //autotool.imn.htwk-leipzig.de/cgi-bin/Super.cgi Account anlegen: 1. Click „HTWK “ 2. Daten eintragen (korrekte Matrikelnummer, Email [email protected]) 3. Click „absenden“ Passwort wird an die angegebene Email-Adresse geschickt (Geduld, kann dauern). Account benutzen: I Anmeldung mit Matrikelnummer (Click „Login“) I Passwort ändern (Click „update“) I „Einschreiben“ in Übungsgruppe I Aufgabe ansehen und lösen (Click „Solve“) 16 Prüfung Klausur Aufgabentypen aus den Übungsserien Zulassungsvoraussetzungen: regelmäßige erfolgreiche Lösung der Hausaufgaben, d.h.: I mindestens dreimal richtiges „Vorrechnen“ von Übungsaufgaben in den Übungen I 50 % aller Punkte für praktische Pflichtaufgaben (Autotool) 17 Was bisher geschah Inhalt und Organisation der Lehrveranstaltung Modellierungsbeispiele: I Modellierung von Daten: Skatkarten, Spielzustände I Modellierung von Abläufen: Münzenspiel, ÜA lineares Solitaire I Modellierung von Eigenschaften: ÜA Landsleute 18 Syntax und Semantik Semantik (Bedeutung) Was wird dargestellt? Syntax (Darstellungsform) Wie wird es dargestellt? (meist viele verschiedene Möglichkeiten) Beispiele: I Lineares Solitaire (Zustände) Semantik: Spielzustand im linearen Solitaire Syntax: Möglichkeiten, z.B. Z ∈ {0, 1}∗ , Z ∈ {S, K }∗ , Z ∈ {, ◦}∗ I Lineares Solitaire (Ablauf) Semantik: möglicher Verlauf eines Spieles Syntax: Möglichkeiten, z.B. I I I Folge von Spielzuständen Modellierung der Spielzüge (als Regeln) und Folge der angewendeten Regeln Weg in der graphischen Darstellung des Spieles 19 Prozess beim Lösen von Aufgaben (Problemen) Analyse der (informalen) Aufgabe, Identifikation von I Aufgabenbereich (Kontext) I Eingabedaten (Typ, mögliche Werte) I gewünschte Lösung (Typ, Eigenschaften, Zusammenhang mit Eingabe) Modellierung (Spezifikation, formale Darstellung) von I Aufgabenbereich (Kontext) I Eingaben I Lösungen Modellierung von Daten und deren Eigenschaften Entwurf einer Lösungsstrategie für die modellierte Aufgabe (mit vorhandenen oder neuen Methoden) Modellierung von Berechnungen und deren Eigenschaften Realisierung der Lösestrategie im Modellbereich Ausführung der Lösestrategie im Modellbereich Übertragung der Lösung vom Modellbereich in die Realität 20 Beispiel (informale Aufgabe) Gesucht sind alle Skatkarten, die von einer gegebenen Skatkarte in einem Null-Spiel (also ohne Trümpfe) gestochen werden. 21 Analyse der Aufgabe (Aufgabenbereich) Worum geht es? Unterscheidung der für die reale Aufgabe wichtigen bzw. unwichtigen Eigenschaften, z.B.: I Blatt für welches Spiel (z.B. Skat, Doppelkopf)? im Beispiel: Skatblatt, d.h. Jede Karte hat genau eine der Farben ♦, ♥, ♠, ♣ , und ist eine Zahl zwischen 7 und 10 oder ein Bild B,D,K,A I deutsches oder französisches Blatt? I Stichregeln innerhalb einer Farbe? Ordnung zwischen Karten derselben Farbe I Trumpfregeln? 22 Analyse der Aufgabe: Ein- und Ausgabedaten Eingaben: Welche Art Daten sind gegeben? (Typen, Bereiche) Eingabe im Beispiel: eine Karte aus einem Skatblatt, beschrieben durch ein Paar (Farbe, Wert) Was sind die gewünschten Lösungen? Typ: z.B. ja/nein (evtl. mit Begründung), Plan, Gewinnstrategie, Typ der Lösung im Beispiel: Menge von Karten Eigenschaften Zusammenhang zwischen Ein- und Ausgaben Eigenschaften der Lösung im Beispiel: Menge aller Karten mit 1. derselben Farbe wie die gegebene Karte 2. kleinerem Wert als die gegebene Karte 23 Modellierung (Spezifikation, formale Darstellung) Aufgabenbereich (Kontext): Skatblatt, d.h. Menge aller Karten: K = F × {Z ∪ B} mit F = {♦, ♥, ♠, ♣} , Z = {7, 8, 9, 10} und B = {B, D, K , A} Ordnung der Karten derselben Farbe (also auf Z ∪ B): 7 < 8 < 9 < 10 < B < D < K < A Karten unterschiedlicher Farben stechen einander nicht Eingabedaten: eine Karte e ∈ K Lösung: Typ: Menge von Karten, d.h. M ⊆ K Eigenschaften Zusammenhang zwischen Ein- und Ausgaben: für jede Karte k ∈ K gilt genau dann k ∈ M, wenn 1. Farbe(k ) = Farbe(e) und 2. Wert(k ) < Wert(e) 24 Modellierung von Daten Darstellung der Objekte und ihrer Beziehungen zueinander I Spielzustände im linearen Solitaire (Z ∈ {0, 1}∗ ), Eigenschaften, Beziehungen dazwischen z.B. Eigenschaft „Endzustand“, Relation „geht über zu“ I Skatkarten (k ∈ F × (Z ∪ B)), Eigenschaften, Beziehungen dazwischen z.B. Eigenschaften „Lusche“,„Trumpf“, Relation „sticht“ I N, mit Eigenschaften, Beziehungen, Operationen z.B. Eigenschaften „gerade“, „prim“, Relationen ≤, =, |, Operationen +, −, ·, mod, div, Nachfolger I R, mit Eigenschaften, Beziehungen, Operationen z.B. Eigenschaft „rational“, Relationen ≤, =, Operationen +, −, ·, allgemein: (algebraische) Struktur (M, R, F ) M Menge von Daten (Trägermenge) R Eigenschaften, Relationen auf M F Operationen auf M 25 (Konkrete) Datentypen (konkreter) Datentyp: I Trägermenge (nichtleer, Menge aller Werte) I Eigenschaften von und Relationen zwischen den Elementen der Trägermenge I Operationen auf der Trägermenge = (algebraische) Struktur Beispiele: I integer mit +,-,*,/ I string mit ++, reverse I boolean mit And, Or, Not I string ∪ integer mit length 26 Einfache und zusammengesetzte (konkrete) Datentypen einfache Datentypen, z.B. int, bool, float, ... zusammengesetzte Datentypen Konstruktion durch die Operationen I Vereinigung ∪ von Datentypen Beispiel Skat: W = Z ∪ B I kartesisches Produkt × von Datentypen: Beispiel Skat: K = F × W mehrfaches Produkt desselben Typs, z.B. Tupel Beispiel Skat: Blatt in der Hand nach dem Austeilen ∈ K 10 I rekursive Datentypen, z.B. Listen I Abbildung zwischen Datentypen (Funktionen) 27 Zusammengesetzte Datentypen (konkreter) Datentyp: I Menge von Werten (Daten) I Menge von Relationen und Operationen auf diesen Werten Beispiele: I Daten: Telefonnummern, Namen Operationen: Suchen der Telefonnummer zu einem Namen I Daten: Studentendaten Operationen: Sortieren nach Name, Matrikelnummer, Noten Gruppen einteilen, zusammenlegen I Daten: Bestellungen Operationen: Einfügen, Löschen, Dringlichste finden, nach Betrag sortieren I Daten: Orte mit Verbindungen Operationen: kürzeste Verbindung suchen I Daten: arithmetische Ausdrücke Operationen: Teilausdrücke ersetzen, Wert berechnen 28 Zusammengesetzter Datentyp: Papierstapel I Trägermengen: I I Typ Blatt (oben einseitig bedruckt) Typ Stapel (von Blättern) I Eigenschaft: „ist leer“ I Operationen: top : Stapel → Blatt oberes Blatt auf dem Stapel pop : Stapel → Stapel oberes Blatt vom Stapel entfernen push : (Blatt × Stapel) → Stapel Blatt oben auf den Stapel legen 29 Eigenschaften der Stapel-Operationen Operationen: top : Stapel → Blatt pop : Stapel → Stapel push : (Blatt × Stapel) → Stapel einige Zusammenhänge zwischen den Stapel-Operationen: für alle Blätter (Stapelelemente) e und alle Stapel s gilt: I Wird zuerst ein Blatt e auf einen Stapel s gelegt und dann von diesem Stapel das obere Blatt weggenommen, enthält man den ursprünglichen Stapel s pop(push(e, s)) = s I top(push(e, s)) = e I push(top(s), pop(s)) = s Beobachtung: Dieselben Eigenschaften gelten auch für Bücher-, Teller- und andere Stapel, sind also unabhängig vom Typ der Stapelelemente 30 Abstrakte Datentypen Abstraktion von der Realisierung (Trägermenge, Implementierung der Operationen) Abstrakter Datentyp (ist Beschreibung einer ganzen Klasse konkreter Datentypen): Signatur enthält Typ- und Funktionsdeklarationen (Syntax) im Stapel-Beispiel: top : Stapel → Blatt pop : Stapel → Stapel push : (Blatt × Stapel) → Stapel Axiome: formale Definition der Eigenschaften und Zusammenhänge zwischen Operationen (Semantik) im Stapel-Beispiel: I pop(push(e, s)) = s I top(push(e, s)) = e I push(top(s), pop(s)) = s Ein Konkreter Datentyp (algebraische Stuktur) (M, R, F ) ist Instanz (Implementierung, Realisierung) eines abstrakten Datentypes gdw. alle Relationen aus R und Operationen aus F alle im ADT definierten Bedingungen erfüllen 31 Was bisher geschah I Beziehung zwischen Realität und Modell I Semantik (Bedeutung) und Syntax (Darstellungsform) I Schritte zum Lösen von Aufgaben (Problemen) I Analyse und formale Darstellung informal gegebener Aufgaben I algebraische Strukturen (M, F , R) mit M Menge von Daten (Trägermenge) F Funktionen auf M R Eigenschaften, Relationen auf M I einfache und zusammengesetzte Datentypen I konkrete und abstrakte Datentypen 32 Mathematische Grundlagen Relationen und Operationen auf Mengen (mehr dazu in LV Mathe) I Element-Beziehung x ∈ M zwischen Individuen und Mengen I Teilmengen-Relation zwischen Mengen A ⊆ B gdw. : für alle x ∈ A gilt auch x ∈ B I Operationen auf Mengen: I I I Vereinigung: A ∪ B = {x | x ∈ A oder x ∈ B} (kartesisches) Produkt: A × B = {(x, y ) | x ∈ A und y ∈ B} Folgen (mehrfaches Produkt über S derselben Menge): Ai = A × · · · × A, Notation A∗ = i∈N Ai | {z } i−mal I I N Für jedes i ∈ gilt Ai+1 = A × Ai , wobei A1 = A Potenzmenge (Menge aller Teilmengen) einer Menge A: 2A = {M ⊆ A} Menge aller Funktionen von Menge A in Menge B: B A = {f : A → B} (Potenzmenge ist Spezialfall mit B = {0, 1}) 33 Algebraische Strukturen – Beispiele I Menge aller Menschen Relationen: älter-als, Geschwister (zweistellig) einstellige Relationen (Eigenschaften): blond Funktion (einstellig): Mutter I Menge aller natürlichen Zahlen Relationen: ≥ (zweistellig), | (teilt, zweistellig) einstellige Relationen (Eigenschaften): prim, gerade Funktion: Nachfolger (einstellig), + (zweistellig) I Menge 2 aller Punkte der Ebene Relationen: kleinerer-Abstand-von-0 (zweistellig), bilden-gleichseitiges-Dreieck (dreistellig) Funktionen: verschieben (einstellig), Mittelpunkt (zweistellig) I Menge A∗ aller endlichen Wörter (Vektoren) über Alphabet A Relation: Anfangswort (zweistellig), lexikographische Ordnung Funktionen: Spiegelung (einstellig), Verkettung (zweistellig) N R 34 Algebraische Strukturen desselben Types A Menge {0, 1} mit I Konstanten 0, 1 I Funktionen min, max (zweistellig) I Eigenschaft gerade I Relation ≤ (zweistellig) B Menge aller Studenten im Raum mit I Konstanten Anton, Berta I Funktionen Älterer, kleinere-Matrikelnummer(zweistellig) I Eigenschaft blond I Relation befreundet (zweistellig) C Menge 2N mit I Konstanten ∅, I Funktionen ∩, ∪ (zweistellig) I Eigenschaft endlich I Relation ⊆ (zweistellig) N 35 Signaturen Gemeinsamkeiten der Strukturen A, B, C: I I I I zwei Konstanten (nullstellige Funktionen) zwei zweistellige Funktionen eine Eigenschaft (einstellige Relation) eine zweistellige Relation Bezeichnung der Relationen und Funktionen durch Symbole (mit zugeordneter Stelligkeit): Signatur Σ = (ΣF , ΣR ) mit Mengen ΣF = {(f , n) | n ∈ } von Funktionssymbolen (mit Stelligkeit) ΣR = {(R, n) | n ∈ } von Relationssymbolen (mit Stelligkeit) (nullstellige Funktionssymbole heißen Konstantensymbole) Signatur definiert einen Typ von Strukturen Strukturen mit derselben Signatur können sich unterscheiden in N N I I Trägermenge Bedeutung der Funktions- und Relationssymbole 36 Beispiele für Signaturen I Signatur für arithmetische Ausdrücke über natürlichen, rationalen, reellen, . . . Zahlen ΣF = {(+, 2), (−, 2), (·, 2), (/, 2)}∪ je ein nullstelliges Symbol für jede Zahl aus der Trägermenge ΣR = {(=, 2), (≤, 2)} I Signatur für aussagenlogische Formeln ΣF = {(∨, 2), (∧, 2), (→, 2), (¬, 1), (f, 0), (t, 0)}, ΣR = ∅ I Signatur für alle drei Strukturen A, B, C auf früherer Folie: ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)} 37 Terme gegeben: N I funktionale Signatur ΣF = {(f , n) | n ∈ } (Relationssysmbole kommen in Termen nicht vor) I Menge X von Individuenvariablen Definition (induktiv) X Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch: IA Jede Variable x ∈ X X ist ein Term. (X ⊆ Term(ΣF , X)) IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ). X X Terme haben Baumstruktur verschiedene Darstellungen möglich, z.B. Infix-, Präfix-, Postfixform Terme ohne Variablen heißen Grundterme. Menge aller Grundterme: Term (ΣF , ∅) 38 Terme – Beispiele I X für ΣF = {(f , 1), (g, 2), (h, 2), (c, 0)} und = {x, y , z} gilt z.B. c ∈ Term(ΣF , ∅) ⊆ Term(ΣF , ) (Grundterm) z ∈ Term(ΣF , ), aber z 6∈ Term(ΣF , ∅) (kein Grundterm) f (c) ∈ Term(ΣF , ∅) ⊆ Term(ΣF , ), h(f (x), c) ∈ Term(ΣF , ), aber h(f (x), c) 6∈ Term(ΣF , ∅) f 6∈ Term(ΣF , ), h(c) 6∈ Term(ΣF , ), x(c) 6∈ Term(ΣF , ) X X X X X X Q X I für ΣF = {(+, 2), (−, 2), (·, 2), (/ 2)} ∪ {(q, 0) | q ∈ } ist Term(ΣF , ∅) die Menge aller arithmetischen Ausdrücke (Terme) mit rationalen Zahlen (z.B. 3/5+1/4), Term(ΣF , {a, b, c}) die Menge aller arithmetischen Ausdrücke (Terme) mit rationalen Zahlen und Variablen aus der Menge {a, b, c} (z.B. 3a+2b/c), I ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} I apfel ∈ Term(Σ , ∅), Grundterm F I kirsche (x, pflaume(y , banane)) ∈ Term(Σ , {x, y , z}) F kein Grundterm I banane(apfel(pflaume, kirsche(pflaume))) 6∈ Term(Σ , F I pflaume(apfel, kirsche(banane, apfel)) ∈ Term(Σ , ∅) F X) 39 Was bisher geschah I Beziehung zwischen Realität und formalem Modell I Semantik (Bedeutung) und Syntax (Darstellungsform) I algebraische Strukturen (M, F , R) mit M Menge von Daten (Trägermenge) F Funktionen auf M R Eigenschaften, Relationen auf M I Signaturen Σ = (ΣF , ΣR ) I Menge aller Terme Term(ΣF , ) über der funktionalen Signatur ΣF und der Variablenmenge X X 40 Wiederholung Terme Definition (induktiv) X Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch: IA Jede Variable x ∈ X X ist ein Term. (X ⊆ Term(ΣF , X)) IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ). X X Beispiele: I Für die Signatur ΣF = {(f , 2), (g, 1), (a, 0)} und die Variablenmenge = {x, y , z} gilt f (g(x), f (y , g(f (a, z)))) ∈ Term(ΣF , ), a(f (a, f (x, b(c)))) 6∈ Term(ΣF , ) X X I X Für die Signatur ΣF = {(z, 0), (s, 1)} gilt z ∈ Term(ΣF , ∅), s(s(z)) ∈ Term(ΣF , ∅), allgemein: Term(ΣF , ∅) = {s(. . . (s(z)) . . .) | i ∈ | {z } N} i−mal 41 Menge aller Variablen in einem Term Definition (induktiv): X Für jeden Term t ∈ Term(ΣF , ) ist die Menge var(t) aller in t vorkommenden Variablen definiert durch: IA: falls t = x ∈ X (Variable), dann var(t) = {x} IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann var(t) = var(t1 ) ∪ · · · ∪ var(tn ) Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt var(t) = {x, y } 42 Anzahl der Variablenvorkommen in einem Term Definition (induktiv): X Für jeden Term t ∈ Term(ΣF , ) ist die Anzahl varcount(t) aller Variablenvorkommen in t definiert durch: IA: falls t = x ∈ X (Variable), dann varcount(t) = 1 IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann varcount(t) = varcount(t1 ) + · · · + varcount(tn ) Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt varcount(t) = 3 varcount(t) ist die Anzahl aller mit Variablen markierten Blätter im Termbaum von t Allgemein gilt varcount(t) ≥ |var(t)| 43 Tiefe des Terms Definition (induktiv): Für jeden Term t ∈ Term(ΣF , durch: IA: falls t = x ∈ X) ist seine Tiefe tiefe(t) definiert X (Variable), dann tiefe(t) = 0 IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann tiefe(t) = 1 + max{tiefe(t1 ), . . . , tiefe(tn )} (wobei max(∅) = 0) Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt tiefe(t) = . . . 44 Postorder-Folge des Terms Definition (induktiv): Für jeden Term t ∈ Term(ΣF , postorder(t) definiert durch: IA: falls t = x ∈ X) ist seine Postorder-Folge X (Variable), dann postorder(t) = x IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann postorder(t) = postorder(t1 ) ◦ · · · ◦ postorder(tn ) ◦ f (◦ Verkettung) Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt postorder(t) = . . . 45 Menge aller Teilterme eines Terms Definition (induktiv): Für jeden Term t ∈ Term(ΣF , Teilterme t definiert durch: IA: falls t = x ∈ X) ist die Menge TT(t) aller X (Variable), dann TT(t) = {x} IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann TT(t) = {t} ∪ TT(t1 ) ∪ · · · ∪ TT(tn ) Beispiel: Für t = g(f (a, x), x) gilt TT(t) = . . . 46 Prinzip der strukturellen Induktion Beobachtung: Bestimmung von Variablenmenge, Anzahl der Variablenvorkommen, Menge der Teilterme, Tiefe eines Terms, Postorder-Folge geschah nach demselben Schema: Definition einer Funktion f : Term(ΣF , X) → M durch Induktion über die Struktur des Terms Für jeden Terme t ∈ Term(ΣF , definiert durch: X) ist der Funktionswert f (t) IA: Definition des Funktionswertes f (t) für Variablen t = x ∈ (Blätter im Termbaum) X IS: Definition des Funktionswertes f (t) für zusammengesetzten Terme t = f (t1 , . . . , tn ) durch eine Kombination der Funktionswerte der direkten Teilterme von t (also t1 , . . . , tn ) 47 Beweise durch strukturelle Induktion Nachweis, dass eine Eigenschaft E für alle Terme t ∈ Term(ΣF , ) gilt durch X Induktion über die Struktur des Terms X Die Eigenschaft E ist für jeden Term t ∈ Term(ΣF , ) erfüllt, wenn man die folgenden beiden Aussagen nachweisen kann: IA: E gilt für jede Variable t = x ∈ X (Blätter im Termbaum) IS: Falls E für n Terme t1 , . . . , tn gilt und (f , n) ∈ ΣF , dann gilt E auch für t = f (t1 , . . . , tn ) IV : E gilt für die Terme t1 , . . . , tn IH : E gilt für f (t1 , . . . , tn ) (mit (f , n) ∈ ΣF ) IB : Nachweis, dass IH aus IV folgt. prominenter Spezialfall: Beweise durch vollständige Induktion (für (mehr dazu in den Mathematik-LV) N) 48 Σ-Strukturen (Semantik) Definition Zu einer Signatur Σ = (ΣF , ΣR ) heißt A = (A, J·KA ) genau dann Σ-Struktur, wenn I A 6= ∅ Trägermenge (Universum) I für jedes (f , n) ∈ ΣF gilt Jf KA : An → A (Jf KA ist eine n-stellige Funktion auf A) I für jedes (R, n) ∈ ΣR gilt JRKA ⊆ An (JRKA ist eine n-stellige Relation auf A) Für jedes Symbol s aus der Signatur Σ bezeichnet JsKA die Bedeutung (Semantik) von s in der Struktur A. Beispiel: Für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(c, 0)} und ΣR = {(b, 1), (f , 2)} ist die Struktur A = (A, J·KA ) mit A = Menge aller Studenten in diesem Raum, JcKA = Student links hinten, JbKA = blond, Jf KA = befreundet eine Σ-Struktur 49 Beispiele für Σ-Strukturen I für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(+, 2), (1, 0)} und ΣR = {(≤, 2)} sind z.B. ( , {+, 1}, {≤}) und ( , {+, 1}, {≤}) Σ-Strukturen für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(f , 2), (c, 0)} und ΣR = {(R, 2)} sind z.B. ( , {+, 0}, {|}) und ( , {, 2}, {≤}) Σ-Strukturen Für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)} sind z.B. die folgenden Strukturen Σ-Strukturen: N I Q N I I I Q A = ({0, 1}, J·KA ) mit JapfelKA = 0, JbananeKA = 1 JkirscheKA = min, JpflaumeKA = max JzwiebelKA = {0}, JtomateKA = ≤ B = ( , J·KB ) mit JapfelKB = 3, JbananeKB = −1 JkirscheKB (x, y ) = x y , JpflaumeKB (x, y ) = x − y JzwiebelKB = 2 (gerade), JtomateKB = {(x, y ) | x < y } R Z 50 Wert von Grundtermen in Strukturen gegeben: funktionale Signatur ΣF = {(f , n) | n ∈ ΣF -Struktur A = (A, J·KA ) N} Definition (induktiv) Der Wert des ΣF -Grundtermes t = f (t1 , . . . , tn ) ∈ Term(ΣF , ∅) in der ΣF -Struktur A = (A, J·KA ) ist JtKA = Jf KA (Jt1 KA , . . . , Jtn KA ) Fehlt hier der Induktionsanfang? nein, als Spezialfall enthalten: Für t = c mit (c, 0) ∈ ΣF (Konstante) gilt JtKA = JcKA (Bedeutung der Konstante c in A, gegeben in Definition von A) 51 Beispiel Signatur Σ = (ΣF , ΣR ) mit ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)} s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur A = (A, J·KA ) mit A = N JapfelKA = 5 JbananeKA = 3 für alle a, b ∈ A: JkirscheKA (a, b) = a + b für alle a, b ∈ A: JpflaumeKA (a, b) = a · b JzwiebelKA = {0, . . . , 10} JtomateKA = {(2n, n) | n ∈ JsKA = 5 JtKA = . . . N} 52 Weiteres Beispiel s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur B = (B, J·KB ) mit B = {0, 1} JapfelKB = 0 JbananeKB = 1 für alle a, b ∈ B: JkirscheKB (a, b) = min(a, b) für alle a, b ∈ B: JpflaumeKB (a, b) = max(a, b) JzwiebelKB = {0} JtomateKB = {(0, 0), (0, 1), (1, 1)} JsKB = JapfelKB = 0, JtKB = . . . 53 Noch ein Beispiel s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur D = (D, J·KD ) mit D = 2N JapfelKD = ∅ JbananeKD = N für alle M, N ∈ D: JkirscheKD (M, N) = M ∩ N für alle M, N ∈ D: JpflaumeKD (M, N) = M ∪ N JzwiebelKD = {M ⊆ N | |M| ∈ N} JtomateKD = {(M, N) ∈ D 2 | M ⊆ N} JsKD = JapfelKD = ∅, JtKD = . . . 54 Äquivalenz von Grundtermen in einer Struktur Definition ΣF -Grundterme s, t ∈ Term(ΣF , ∅) mit JsKA = JtKA heißen äquivalent in A (s ≡A t). In den Beispielen oben gilt s ≡B t, aber s 6≡A t. aus dem Mathematik-Unterricht (Schule): Äquivalenz von Termen lässt sich oft durch syntaktische Umformungen (Termersetzung) testen z.B. Ausklammern, Ausmultiplizieren, Summanden vertauschen usw. 55 Was bisher geschah I Beziehung zwischen Realität und formalem Modell I Semantik (Bedeutung) und Syntax (Darstellungsform) von Daten Syntax (Terme): I Signaturen Σ = (ΣF , ΣR ) I Term(ΣF , I strukturelle Induktion über Terme (für Funktionen, Beweise) X): Menge aller Terme über ΣF und X Semantik von Termen: I algebraische Strukturen (M, F , R) I Σ-Strukturen A = (A, J·KA ) mit I I I A 6= ∅ Trägermenge (Universum) für jedes (f , n) ∈ ΣF gilt Jf KA : An → A für jedes (R, n) ∈ ΣR gilt JRKA ⊆ An I Werte von Grundtermen in Σ-Strukturen (induktiv definiert) I Äquivalenz von Grundtermen in Σ-Strukturen 56 Interpretationen für Terme mit Variablen gegeben: Signatur Σ = (ΣF , ΣR ), Variablenmenge Σ-Struktur A = (A, J·KA ) Term t ∈ Term(ΣF , ) X X Problem: Welchen Wert in A repräsentieren Variablen x ∈ X X? Lösung: Belegung β : → A der Individuenvariablen (ordnet jeder Variablen einen Wert aus der Trägermenge von A zu) Definition Eine (Σ-)Interpretation für einen Term t ∈ Term(ΣF , Paar (A, β) aus I I X) ist ein einer Σ-Struktur A = (A, J·KA ) und einer Belegung β : X → A. 57 Beispiele Signatur Σ = {(f , 2), (g, 2), (a, 0)}, Variablenmenge I N Interpretation (A, α) mit Σ-Struktur A = ( , J·KA ), wobei ∀m, n ∈ ∀m, n ∈ N: N: JaKA = 1 Jf KA (m, n) = m + n JgKA (m, n) = m · n und Variablenbelegung α : {x, y } → α(x) = 2 und α(y ) = 1 I X = {x, y } N, wobei Interpretation (B, β) mit Σ-Struktur B = (2{a,b,c} , J·KB ): 2{a,b,c} ∀M, N ∈ ∀M, N ∈ 2{a,b,c} JaKB = {b, c} : Jf KB (M, N) = M \ N : JgKB (M, N) = M ∪ N und Variablenbelegung β : {x, y } → 2{a,b,c} , wobei β(x) = ∅ und β(y ) = {b} 58 Interpretation von Termen mit Variablen Definition (induktiv) Für jede Signatur Σ = (ΣF , ΣR ), jede Interpretation (A, β) mit A = (A, J·KA ) und β : → A ist der Wert des Termes t ∈ Term(ΣF , ) in (A, β) definiert durch X X IA falls t = x ∈ X, dann JtK(A,β) = β(x) IS falls t = f (t1 , . . . , tn ), dann JtKA = Jf KA Jt1 K(A,β) , . . . , Jtn K(A,β) Der Wert eines Termes in einer Interpretation ((A, J·KA ), α) ist ein Element aus A. 59 Beispiele Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (b, 0), (f , 1), (g, 2), (h, 2)} und ΣR = ∅ Variablenmenge = {x, y } X Σ-Struktur S = (S, J·KS ) mit S JaKS JbKS ∀d ∈ S : Jf KS (d) ∀d, e ∈ S : JgKS (d, e) ∀d, e ∈ S : JhKS (a, b) Variablenbelegungen β : {x, y } → γ : {x, y } → = = = = = = N 5 3 1+d d +e d ·e N mit β(x) = 0, β(y ) = 1 N mit γ(x) = 2, γ(y ) = 0 Terme s = g(h(f (a), x), h(x, y )) und t = h(f (x), g(y , a)) JsK(S,β) = . . . , JtK(S,β) = . . . , JsK(S,γ) = . . . , JtK(S,γ) = . . . (Tafel) 60 Mehrsortige Signaturen S mehrsortige Signatur (mit Sorten aus einer Menge ) enthält Relationssymbole mit Argumenttypen (s ⊆ ∗ ) Funktionssymbole mit Argument-und Ergebnistypen (f : ∗ → ) S S S mehrsortige Signatur Σ mit Sorten S = {Si | i ∈ I} Beispiel: Bücher mit Autoren und Erscheinungsjahr I Sorten: B (Bücher), P (Personen), J (Jahreszahlen), 2B (Mengen von Büchern), I Funktionssymbole (mit Argument-und Ergebnistypen): erscheinungsjahr :B →J erstesBuch :P →B gemeinsameBücher : P × P → 2B Relationen (mit Argumenttypen): Autor ⊆B×P Coautor ⊆ P × P I 61 Terme über mehrsortigen Signaturen S gegeben: mehrsortige Signatur Σ mit Menge von Sorten Variablenmenge 0 = × (jede Variable mit einer zugeordneter Sorte aus ) X X S S Definition (induktiv) S X Für jede Sorte S ∈ ist die Menge TermS (Σ, 0 ) aller Terme der Sorte S mit Variablen aus der Menge 0 definiert durch: IA: {x | (x : S) ∈ X X0 } ⊆ TermS (ΣF , X0 ) IS: Für alle f mit (f : S1 × · · · × Sn → S) ∈ Σ und alle Tupel (t1 , . . . , tn ), wobei für alle k ∈ {1, . . . , n} gilt tk ∈ TermSk (Σ, 0 ), ist f (t1 , . . . , tn ) ∈ TermS (Σ, 0 ) X X Spezialfall: Jede Konstante f : S ∈ Σ ist Σ-Term der Sorte S. Beispiele: t = erscheinungsjahr(erstesBuch(x)) mit (x : P) ∈ 0 ist ein Term in TermJ (Σ, 0 ) erstesBuch(erscheinungsjahr(x)) ist kein Term X X 62 Mehrsortige Σ-Strukturen S gegeben: -sortige Signatur Σ S Σ-Struktur A = ({AS | S ∈ }, J·KA ) mit S I für jede Sorte S ∈ eine nichtleere Menge AS (Trägermenge, Universum der Sorte) I für jedes Funktionssymbol f : S1 . . . Sn → S eine Funktion Jf KA : AS1 × . . . × ASn → AS I für jedes Relationssymbol R : S1 × . . . × Sn eine Relation JRKA ⊆ AS1 × . . . × ASn S S Wert von Termen mit -sortiger Signatur Σ in der -sortigen Struktur A = ({AS | S ∈ }, J·KA ) analog zur Definition für einsortige Signaturen und Strukturen S 63 Relationen als mehrsortige Funktionen Beispiel: (einsortiges) Relationssymbol (r , 2) Signatur Σ = (ΣF , ΣR ) mit ΣF = ∅ und ΣR = {(r , 2)} Interpretation in einer einsortigen Σ-Struktur A mit Träger |A| und Jr KA ⊆ |A| × |A| Einführung der Sorten S (für Trägermenge) und B = {f, t} (für Wahrheitswerte) Definition der Funktion fr : S × S → B mit ∀(x, y ) ∈ S 2 : (x, y ) ∈ r gdw. fR (x, y ) = t 64 Relationen als mehrsortige Funktionen für beliebige Stelligkeit n: Übersetzung jedes Relationssymbols (r , n) ∈ ΣR in ein Funktionssymbol fr : S n → , so dass B ∀(x1 , . . . , xn ) ∈ S n : (x1 , . . . , xn ) ∈ r gdw. fr (x1 , . . . , xn ) = t Jeder relationalen (einsortigen) Signatur ΣR läßt sich eine zweisortige funktionale Signatur Σ0 = Σ0F ∪ Σ0R zuordnen: Σ0F = {f : S n → S | (f , n) ∈ ΣF } Σ0R = {fr : S n → B | (r , n) ∈ ΣR } Analog lassen sich mehrsortige Relationen durch mehrsortige Funktionen ersetzen. Es genügt also, mehrsortige Strukturen ohne Relationen zu betrachten. 65 Abstrakter Datentyp (Interface) – Beispiel Aufgabe: Verwaltung einer Menge ganzer Zahlen (z.B. ID-Nummern), so dass festgestellt werden kann, ob eine Zahl darin enthalten ist und Zahlen hinzugefügt und entfernt werden können. B Sorten (Wertebereiche): Zahl, Menge, Wahrheitswert ( ) Signatur: Funktionen zum Finden, Hinzufügen, Entfernen B B contains : Menge × Zahl → add, remove : Menge × Zahl → Menge isempty : Menge → emptyset : Menge Axiome (definieren die Semantik der Operationen): ∀n ∈ Zahl ∀s ∈ Menge ∀n ∈ ∀s ∈ Menge ∀n ∈ ∀s ∈ Menge ∀m, n ∈ ∀s ∈ Menge ∀n ∈ N N N N : : : : : isempty((emptyset) = t, contains(emptyset, n) = f, contains(add(s, n), n) = t, contains(remove(s, n), n) = f, add(add(s, n), m) = add(add(s, m), n), add(add(s, n), n) = add(s, n), . . . 66 Konkreter Datentyp (Implementierung) – Beispiel verschiedene Möglichkeiten zur Darstellung der Sorten: 1. Wahrheitswerte z.B. als {0, 1}, {−1, 0} 2. Zahlen in verschiedenen Zahlendarstellungen, z.B. dezimal, binär, zu anderer Basis, Maschinenzahlen (eingeschränkter Bereich) 3. Mengen als (sortierte) Folgen (mit / ohne Wiederholungen) von Zahlen 4. Zuordnung Zahl → {f, t} mit t, falls Zahl in der Menge, f sonst (charakteristische Funktion) 5. {0, 1}-Folgen abstrakter Datentyp: Signatur Σ und Axiome Φ, exakte Formulierung der Aufgabe, Spezifikation konkreter Datentyp: Σ-Struktur, welche Φ erfüllt (Modell für Φ) Umsetzung, Implementierung (mehr dazu in LV Algorithmen und Datenstrukturen) 67 Wiederholung ADT Stack (Stapel, Keller) Sorten E: Elementtyp, S: Stapel von Elementen vom Typ E, (Wahrheitswerte) B Signatur Σ: top pop push new isEmpty Axiome , z.B. ∀s ∀s ∀s ∀s ∈S ∈S ∈S ∈S :S :S :E ×S : :S ∀e ∈ E ∀e ∈ E ∀e ∈ E ∀e ∈ E : : : : →E →S →S S → B isEmpty(new) isEmpty(push(e, s)) top(push(e, s)) pop(push(e, s)) push(top(s), pop(s)) = = = = = t f e s s 68 Was bisher geschah: Modellierung von Daten I Beziehung zwischen Realität und formalem Modell I Semantik (Bedeutung) und Syntax (Darstellungsform) von Daten I Beispiel (ÜA) lineares Solitaire Syntax: I Signaturen Σ = (ΣF , ΣR ) I Terme in Term(ΣF , I strukturelle Induktion über Terme (für Funktionen, Beweise) X) Semantik: I algebraische Strukturen (M, F , R) I Interpretationen (A, β) mit I I I Σ-Struktur A = (A, J·KA ) Belegung der Individuenvariablen β : X→A Werte von Termen in Interpretationen 69 Wörter – Beispiele banane ist ein Wort (Zeichenkette) mit Symbolen aus der Menge {a, b, e, n}, neben und abbbeeeab auch, ananas und ab + bea nicht 2009 ist ein Wort mit Symbolen aus der Menge {0, 2, 9}, 90 und 09020090 auch, −2090 nicht (x + y ) · (z − x) ist ein Wort mit Symbolen aus der Menge {x, y , z, (, ), +, −, ·}, ()xz(xy + − auch, x + 3 · z nicht (¬p ∧ p) → q ist ein Wort mit Symbolen aus der Menge {p, q, ∧, ¬, →, (, )}, q → (p → q) und ∧)(¬p∧ auch, p ↔ q nicht otto holt obst. ist ein Wort mit Symbolen aus der Menge {otto, obst, holt, ., }, .otto..otto auch, los otto nicht 70 Begriffe Notationen: Für eine Menge A heißt An = A · · × A} = {w1 · · · wn | ∀i : wi ∈ A} | × ·{z n Menge aller Wörter der Länge n über A (n-Tupel, Vektoren, Listen, Zeichenketten) S ∗ A = {n∈N} An Menge aller Wörter über A A0 = {ε} mit leerem Wort ε Alphabet (endliche) Menge A von Symbolen Wort endliche Folge von Symbolen w = w1 · · · wn mit ∀i ∈ {1, . . . , n} : wi ∈ A Länge eines Wortes |w| = Anzahl der Symbole in w Anzahl der Vorkommen eines Symboles in einem Wort |w|a = Anzahl der a in w (für a ∈ A) Sprache Menge von Wörtern L ⊆ A∗ 71 Beispiele für Sprachen I Menge aller englischen Wörter L1 ⊂ {a, . . . , z}∗ I Menge aller deutschen Wörter L2 ⊂ {a, . . . , z, ß,ä,ö,ü}∗ I Menge aller möglichen DNA L3 ⊆ {A, T , G, C}∗ I Menge aller natürlichen Zahlen in Dezimaldarstellung L4 ⊆ {0, . . . , 9}∗ (evtl. mit führenden Nullen) I Menge aller natürlichen Zahlen in Binärdarstellung (Bitfolgen beliebiger Länge) L5 ⊆ {0, 1}∗ I Menge aller deutschen Sätze L6 ⊂ (L2 ∪ {., , , !, ?, (, ), −})∗ Problem: Für die automatische Verarbeitung von Sprachen ist eine endliche Darstellung notwendig (auch für unendliche Sprachen). 72 Verkettung von Wörtern Verkettung ◦ von Wörtern: ◦ : A∗ × A∗ → A∗ , wobei für alle Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ gilt u ◦ v = u1 · · · um v1 · · · vn Beispiel: anne ◦ marie = annemarie Eigenschaften der Operation ◦: I ◦ ist assoziativ, d.h. ∀u, v , w ∈ A∗ : (u ◦ v ) ◦ w = u ◦ (v ◦ w) I Das leere Wort ε ist neutrales Element für ◦, d.h. ∀w ∈ A∗ : ε ◦ w = w ◦ ε = w ◦ ist nicht kommutativ. Gegenbeispiel: u = marie, v = anne u ◦ v = marieanne 6= annemarie = v ◦ u 73 Umkehrung (gespiegeltes Wort) Umkehrung von w = w1 · · · wn : w R = wn · · · w1 Beispiele: marieR = eiram, 2013R = 3102, 101R = 101 to ◦ m ◦ (ate)R Fakt Für jedes Wort w ∈ A∗ gilt w R R R R !R ◦n = ... = w. Fakt Für zwei beliebige Wörter u, v ∈ A∗ gilt (u ◦ v )R = v R ◦ u R . 74 Palindrome Palindrom: Wort w mit w = w R B: anna, neben, ε, jedes Wort der Länge 1 Die Menge aller Palindrome über dem Alphabet A ist Lpal = {w ∈ A∗ | w = w R } = {w ◦ w R | w ∈ A∗ } ∪ {w ◦ a ◦ w R | w ∈ A∗ ∧ a ∈ A} | {z } | {z } Lpal0 Lpal1 Beispiele für Wörter aus Lpal : I otto = ot ◦ to = ot ◦ (ot)R für w = ot ∈ A∗ = {a, . . . , z}∗ I reliefpfeiler = relief ◦ p ◦ feiler = relief ◦ p ◦ (relief )R für w = relief ∈ A∗ = {a, . . . , z}∗ I 1 = ε ◦ 1 ◦ ε = ε ◦ 1 ◦ εR I ε=ε◦ε=ε◦ für A = {0, 1} εR 75 Relationen auf Wörtern (binäre Relation = Menge geordneter Paare) Präfix-Relation (Anfangswort): v ⊆ A∗ × A∗ Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ gilt u v v genau dann, wenn ein Wort w ∈ A∗ existiert, so dass u ◦ w = v gilt. Beispiele: I an v anna (mit w = na) I n 6v anna I tom v tomate (mit w = ate) I oma 6v tomate I für jedes Wort u ∈ A∗ gilt ε v u (mit w = u) I für jedes Wort u ∈ A∗ gilt u v u (mit w = ε) 76 Postfix- und Infix-Relation auf Wörtern Postfix-Relation: Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt u genau dann Postfix (Suffix) von v , wenn ein Wort w ∈ A∗ existiert, so dass w ◦ u = v gilt. Beispiel: enten ist Postfix von studenten Infix-Relation (Teilwort, Faktor): Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt u genau dann Infix von v , wenn zwei Wörter w, w 0 ∈ A∗ existieren, so dass w ◦ u ◦ w 0 = v gilt. Beispiel: uwe ist Infix von sauwetter satt ist kein Infix von sauwetter 77 Sprachen als Mengen Sprachen L ⊆ A∗ sind Mengen von Wörtern Mengenrelationen auf Sprachen: L ⊆ L0 gdw. ∀w ∈ A∗ : w ∈ L → w ∈ L0 L = L0 gdw. ∀w ∈ A∗ : w ∈ L ↔ w ∈ L0 Mengenoperationen auf Sprachen: L ∪ L0 = {w | w ∈ L ∨ w ∈ L0 } L ∩ L0 = {w | w ∈ L ∧ w ∈ L0 } L \ L0 = {w | w ∈ L ∧ w 6∈ L0 } Komplement einer Sprache L ⊆ A∗ : L = A∗ \ L Beispiel: [ [ L= An L= An ∪ N n∈3 N n∈{3i+1|i∈ } [ N An n∈{3i+2|i∈ } 78 Was bisher geschah I I Alphabet, Wort, Sprache Operationen auf Wörtern: I I Spiegelung R Verkettung ◦ I Palindrome I Relationen zwischen Wörtern: Präfix, Infix, Postfix I Mengenoperationen und -relationen auf Sprachen: ∪, ∩, , \, ⊆, = 79 Weitere Operationen auf Sprachen Verkettung ◦ von Sprachen: L1 ◦ L2 = {u ◦ v | u ∈ L1 ∧ v ∈ L2 } Beispiel: L1 = {111, 1, 10} L2 = {00, 0} L1 ◦ L2 = {111, 1, 10} ◦ {00, 0} = {1110, 11100, 10, 100, 1000} Spiegelung LR = {w R | w ∈ L} Beispiel: L = {a, ab, aba, abab} LR = {a, ba, aba, baba} 80 Iterierte Verkettung I für Sprachen L ⊆ A∗ L0 = {ε} ∀n ∈ N: Ln+1 = Ln ◦ L = L · · ◦ L} | ◦ ·{z n+1−mal L∗ = [ n∈ I N Ln L+ = [ N Ln n∈ \{0} für Wörter u ∈ A∗ : ∈ A∗ , u ∗ = {u}∗ = {u n | n ∈ un = u · · u} | ·{z u+ = u ∗ \ {ε} = {u}+ = {u n | n ∈ n−mal N \ {0}} N} ⊆ A∗ ⊆ A∗ Beispiele: (101)3 a∗ ∗ (ab) = 101101101 und 1013 = 10111 N} = {ε, a, aa, aaa, . . .} | i ∈ N} = {ε, ab, abab, ababab, . . .} = {ai | i ∈ = {(ab) i 81 Mehr Beispiele für Sprachen I {aa, b}∗ N ∧ ∀i ∈ {1, . . . , n} : ui ∈ {aa, b}} = {u1 ◦ · · · ◦ un | n ∈ = {ε, b, aa, bb, aab, baa, bbb, aaaa, aabb, baab, bbaa, bbbb, . . .} I ∅ ◦ {aba, bb} = . . . I {ε} ◦ {aba, bb} = . . . I {bb}∗ = {w ∈ b∗ | |w| ∈ 2 } = . . . {0}∗ )∗ N = {w ∈ {0, 1}∗ | w1 = 1} ∪ {ε} I ({1} ◦ I ({a} ∪ {b, ab})∗ = . . . 82 Reguläre Ausdrücke – Syntax Die Menge RegExp(A) aller regulären Ausdrücke über einem Alphabet A ist (induktiv) definiert durch: IA: ∅ ∈ RegExp(A), ε ∈ RegExp(A) und für jedes Symbol a ∈ A gilt a ∈ RegExp(A) IS: für alle E ∈ RegExp(A) und F ∈ RegExp(A) gilt (E + F ), EF , (E)∗ ∈ RegExp(A). Beispiele: ε + a, ε + ∅, (a + ∅)∗ , ε + ((ab)∗ a)∗ dieselbe Definition kürzer: RegExp(A) = Term(ΣF , ∅) für die Signatur ΣF = {(∅, 0), (ε, 0), (∗ , 1), (+, 2), (·, 2)} ∪ {(a, 0) | a ∈ A} (Baumdarstellung) 83 Beispiele (ohne überflüssige Klammern) I Für A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} gilt 0+(1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)∗ ∈ RegExp(A) I Für A = {0, 1} gilt I I (1 + ε)∗ + (10)∗ ∈ RegExp(A) (0 + 11)∗ + ((0 + (1)∗ )0)∗ ∈ RegExp(A) Oft werden A E + = EE ∗ En = E · · E} | ·{z n−mal ∗ E n∗ = E · · E} | ·{z n−mal für n ∈ N als Kurzbezeichnungen verwendet. 84 Reguläre Ausdrücke – Semantik Jeder reguläre Ausdruck E ∈ RegExp(A) repräsentiert eine Sprache L(E) ⊆ A∗ . L(∅) L(ε) ∀a ∈ A : L(a) ∀E, F ∈ RegExp(A) : L(E + F ) ∀E, F ∈ RegExp(A) : L(EF ) ∀E, F ∈ RegExp(A) : L(E ∗ ) = ∅ = {ε} = {a} = L(E) ∪ L(F ) = L(E) ◦ L(F ) ∗ = (L(E)) Eine Sprache L ⊆ A∗ heißt genau dann regulär, wenn ein regulärer Ausdruck E ∈ RegExp(A) existiert, so dass L = L(E). Beispiel: Die Menge L aller Dezimaldarstellungen natürlicher Zahlen ist regulär wegen L = L (0 + (1 + 2 + · · · + 9)(0 + 1 + · · · + 9)∗ ) 85 Beispiele Für A = {a, b} gilt N} | i ∈ N} L(ab∗ ) = {a, ab, abb, abbb, abbbb, . . .} = {abi | i ∈ ∗ L((ab) ) = {ε, ab, abab, ababab, . . .} = {(ab) L((a + b)∗ ) = {a, b}∗ i L(a∗ b∗ ) = {u ◦ v | u ∈ a∗ ∧ v ∈ b∗ } L((a∗ b∗ )∗ ) = {a, b}∗ L(A∗ aba) = {u ◦ aba | u ∈ A∗ }∗ Reguläre Ausdrücke ermöglichen eine endliche Darstellung unendlicher Sprachen. 86 Beispiele regulärer Sprachen I L1 = ∅, wegen ∅ ∈ RegExp(A) und L(∅) = ∅ = L1 I L2 = {a, bab}, wegen a + bab ∈ RegExp(A) und L(a + bab) = L2 I L3 = {w ∈ {a, b, c}∗ | abba v w}, wegen abba(a + b + c)∗ ∈ RegExp(A) und L(abba(a + b + c)∗ ) = L3 I {w ∈ {a, b, c}∗ | aa oder bbb sind Infix von w} I I I N {w ∈ {a, b}∗ | |w|a ∈ 2N} {w ∈ {a, b}∗ | |w| ∈ 2 } alle möglichen HTWK-Email-Adressen 87 Äquivalenz regulärer Ausdrücke Zwei reguläre Ausdrücke E, F ∈ RegExp(A) heißen genau dann äquivalent, wenn L(E) = L(F ) gilt. Beispiele: I (a + b)∗ , (a∗ + b∗ )∗ und a∗ (ba∗ )∗ sind äquivalent I ab∗ und (ab)∗ sind nicht äquivalent I (11 + 0 + 110 + 011)∗ und (11 + 0)∗ sind . . . 88 Was bisher geschah Alphabet, Wort, Sprache Wörter: I Operationen auf Wörtern: Verkettung ◦, Spiegelung I Relationen auf Wörtern: Palindrom (Eigenschaft), Präfix (v), Infix, Postfix R Sprachen (Mengen von Wörtern) I Operationen auf Sprachen: Mengenoperationen ∪, ∩, , \ Verkettung ◦ und Spiegelung R von Sprachen iterierte Verkettung ∗ I Relationen zwischen Sprachen: Mengenrelationen ⊆, = Reguläre Ausdrücke, reguläre Sprachen 89 Weitere Relationen auf A∗ (Halb-)Ordnungen (Definition in Mathe-LV) Präfix-, Postfix-, Infix-Relation auf A∗ bei gegebener Reihenfolge < auf dem Alphabet A: lexikographische Ordnung auf A∗ : ∀u, v ∈ A∗ : u ≤lex v gdw. 1. u v v oder 2. ∃w ∈ A∗ ∃a, b ∈ A : a < b ∧ wa v u ∧ wb v v quasi-lexikographische Ordnung auf A∗ : ∀u, v ∈ A∗ : u ≤qlex v gdw. 1. |u| ≤ |v | oder 2. |u| = |v | ∧ u ≤lex v Beispiele: für A = {a, b} mit a < b I ab v aba, ab ≤lex aba, ab ≤qlex aba I abab 6v abba, aber abab ≤lex abba und abab ≤qlex abba, I aaa ≤lex ab, aber aaa 6≤qlex ab I ab 6≤lex aaba, aber ab ≤qlex aaba 90 Interessante Fragen für Sprachen I Ist ein gegebenes Wort w ∈ A∗ in der Sprache L ⊆ A∗ enthalten? (Wortproblem) I Enthält die Sprache L ⊆ A∗ nur endlich viele Wörter? I Gilt L1 ⊆ L2 für zwei Sprachen L1 , L2 ⊆ A∗ ? I Gilt L1 = L2 für zwei Sprachen L1 , L2 ⊆ A∗ ? I Ist eine gegebene Sprache L ⊆ A∗ regulär? (d.h. L = L(E) für einen regulären Ausdruck E ∈ RegExp(A)) I Woran erkennt man, dass eine Sprache nicht regulär ist? Alle Antworten sind für endliche Sprachen einfach, aber für unendliche Sprachen in endlicher Darstellung (z.B. durch reguläre Ausdrücke) meist schwierig. 91 Interessante Fragen für reguläre Ausdrücke I Ist für einen gegebenen regulären Ausdruck E ∈ RegExp(A) ein gegebenes Wort w ∈ A∗ in der Sprache L(E) enthalten? (Wortproblem) I Gilt L(E) = ∅ für einen gegebenen regulären Ausdruck E ∈ RegExp(A)? I Gilt L(E) = A∗ für einen gegebenen regulären Ausdruck E ∈ RegExp(A)? I Sind zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A) äquivalent? (also L(E) = L(F )) I Gilt L(E) ⊆ L(F ) für zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A)? I Existiert für zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A) ein Wort w ∈ A∗ mit w ∈ L(E) \ L(F )? 92 Wortproblem praktisch – Beispiele Eingabe : Sprache L ⊆ A∗ , z.B. durch regulären Ausdruck E mit L = L(E), Wort w ∈ A∗ Frage: Gilt w ∈ L? Ausgabe: ja oder nein (evtl. mit Begründung) I Syntaktische Tests: I Ist die gegebene Zeichenkette die Dezimaldarstellung einer ganzen Zahl? (Sprache: Menge aller gültigen Dezimaldarstellungen) I Ist die gegebene Zeichenkette eine korrekt geformte Email-Adresse (der HTWK)? I Ist der gegebene Quelltext ein syntaktisch korrektes Java-Programm? I Ist die gegebene Zeichenkette die Binärdarstellung einer geraden Zahl? (durch drei teilbaren Zahl, usw.) I Folgen von Aktionen: I An- und Ausziehen (in umgekehrter Reihenfolge) I Ist eine Folge von Aktionen möglich / zulässig ? I Führt eine Folge von Nutzereingaben zu einem Fehler? 93 Wiederholung: Lineares Solitaire Startkonfiguration : n Spielsteine nebeneinander (oder andere Ausgangsposition) Spielzug : Münze springt über einen benachbarten Stein auf dahinterliegendes leeres Feld formale Modellierung: Konfiguration (Spielzustand): w ∈ {0, 1}∗ Startkonfiguration: 0 . . . 0 |1 .{z . . 1} 0 . . . 0 ∈ {0, 1}∗ n−mal (oder anderes Wort w ∈ {0, 1}∗ ) mögliche Züge: an beliebiger passender Position 110 → 001 011 → 100 (Paare (l, r ) ∈ {0, 1}∗ × {0, 1}∗ , notiert l → r ) 94 Wortersetzungssysteme (Semi-Thue-Systeme, Axel Thue, 1914). Alphabet A Wortersetzungsregel (l, r ) ∈ A∗ × A∗ (notiert l → r ) Wortersetzungssystem (SRS) endliche Menge von Wortersetzungsregeln Beispiele: I A = {0, 1} I I I Regel 110 → 001, SRS S = {110 → 001, 011 → 100} A = {a, b, c} I I Regel ba → ab, SRS S = {a → ab, ba → c, abc → ε} 95 Anwendung von Wortersetzungsregeln Eine Regel l → r ist auf ein Wort w ∈ A∗ anwendbar, falls l ein Infix von w ist. Beispiel: Regel ma → ε ist I auf tomate anwendbar, u = to, v = te, I auf am, motte und meta nicht anwendbar. Eine Anwendung der Regel l → r auf ein Wort w = u ◦ l ◦ v ∈ ergibt das Wort u ◦ r ◦ v . (Ersetzung des Teilwortes l durch r ) Beispiel: ab → a angewendet auf baababa = u ◦ l ◦ v I mit u = ba und v = aba ergibt baaaba I mit u = baab und v = a ergibt baabaa 96 Ableitungsschritt Ableitungsschritt (u, (l → r ), p, v ) im Wortersetzungssystem S mit u ∈ A∗ : Ausgangswort l → r ∈ S: auf u anwendbare Regel p ∈ {1, . . . , |u|}: Position im Wort u, an der der (gewählte) Infix l beginnt v ∈ A∗ : nach Anwendung der Regel l → r an Position p auf u entstandenes Wort Beispiel: S = {ab → ba, a → b}, u = aba mögliche Ableitungsschritte in S (aba, (ab → ba), 1, baa) (aba, (a → b), 3, abb) (aba, (a → b), 1, bba) 97 Ein-Schritt-Ableitungsrelation Jedes Wortersetzungssystem S ⊆ A∗ × A∗ definiert eine Relation →S ⊆ A∗ × A∗ , wobei genau dann u →S v gilt, wenn ein Ableitungsschritt (u, (l → r ), p, v ) mit (l → r ) ∈ S existiert. Beispiel: Für S = {ab → ba, a → b} gilt I aba →S baa wegen (aba, (ab → ba), 1, bba) I aba →S bba wegen (aba, (a → b), 1, bba) I aba →S abb wegen (aba, (a → b), 3, abb) I aba 6→S bbb 98 Ableitungen Eine Folge von Ableitungsschritten (u, (l1 → r1 ), p1 , u2 ), (u2 , (l2 → r2 ), p2 , u3 ), · · · , (un−1 , (ln−1 → rn−1 , pn−1 , v ) im Wortersetzungssystem S heißt Ableitung von u nach v in S. v heißt in S aus v ableitbar gdw. eine Ableitung von u nach v in S existiert. Beispiel: S = {ab → ba, a → b}, u = aba Folge von Ableitungsschritten (aba, (ab → ba), 1, baa), (baa, (a → b), 3, bab), (bab, (a → b), 2, bbb) ab→ba a→b a→b aba −→ baa −→ bab −→ bbb Länge der Ableitung = Anzahl der Ableitungsschritte In jedem System S existiert für jedes u ∈ A∗ die leere Ableitung (der Länge 0) von u nach u. 99 Beispiele S1 = {||| → |} mit u = ||||||| und v = |||| Was wird hier „berechnet“? Anderes Wortersetzungssystem mit derselben Wirkung? S2 = {11 → 1, 00 → 1, 01 → 0, 10 → 0} und u = 1101001 Wirkung verschiedener Ableitungreihenfolgen? S3 = {c → aca, c → bcb, c → a, c → b, c → ε} und u = c Menge aller in S3 ableitbaren Wörter, die kein c enthalten? 100 Ersetzungsrelation Jedes Wortersetzungssystem S ⊆ (A∗ × A∗ ) definiert die Ersetzungsrelation →∗S ⊆ (A∗ × A∗ ), wobei genau dann u →∗S v gilt, wenn eine Ableitung von u nach v existiert. Beispiel: S = {a → aa}, I für jedes n ≥ 1 gilt ba →∗S b |a ·{z · · a} n wegen ba →S baa →S baaa →S · · · →S b |a ·{z · · a} n I b →∗S b, aber für kein Wort w 6= b gilt b →∗S w (→∗S ist die reflexive transitive Hülle von →S ) 101 Sprachen aus Wortersetzungssystemen Jedes Paar (Wortersetzungssystem S, Anfangswort w ∈ A∗ ) über einem Alphabet A definiert die Sprache L(S, w) = {v ∈ A∗ | w →∗S v } (alle Wörter v , die von w durch eine Ableitung in S erreicht werden) Beispiel: S = {c → aca, c → bcb, c → ε}, w = c L(S, w) = {w ◦ c ◦ w R } (Menge aller Palindrome über {a, b, c}, die höchstens an der mittleren Position ein c enthalten) Jedes Paar (Wortersetzungssystem S, Menge M ⊆ A∗ ) über einem Alphabet A definiert die Sprache [ L(S, M) = L(S, w) w∈L (alle Wörter v , die von irgendeinem w ∈ M durch eine Ableitung in S erreicht werden) 102 Ausdrucksstärke von Wortersetzungssystemen Wortersetzungssysteme (SRS) I ermöglichen eine endliche Darstellung unendlicher Sprachen. (als Erzeugungsvorschrift für alle Wörter der Sprache) Beispiele: L ({ε → aaa}, ε) = {a3n | n ∈ } = L((aaa)∗ ) L ({2 → 020, 2 → 121}, 2) = {w2w R | w ∈ {0, 1}∗ } N I können zur Modellierung von Zuständen und Übergängen dazwischen verwendet werden z.B. Spiele, Ausführung von Programmen, Programmverifikation Beispiel: lineares Solitaire I können Berechnungen simulieren (Bestimmung von erreichbaren Wörtern ohne Nachfolger) Beispiel: ε ∈ L ({||| → |}, ||||||) 103 Was bisher geschah I Alphabet, Wort, Sprache I Operationen und Relationen auf Wörtern und Sprachen I interessante Fragen für Sprachen und Wörter (Wortproblem) Reguläre Ausdrücke I Syntax, Semantik I endliche Darstellung evtl. unendlicher Sprachen Wortersetzungssysteme S ⊆ A∗ × A∗ I Wortersetzungssregel l → r mit l, r ∈ A∗ I Ersetzungsschritt in S I Ableitung in S: endliche Folge von Ersetzungsschritten I von Wortersetzungssystem S ⊆ A∗ × A∗ und Startwort w ∈ A∗ definierte Sprache L(S, w) ⊆ A∗ 104 Wortproblem für durch reguläre Ausdrücke definierte Sprachen ∗ Wortproblem (L, w) ∈ 2(A ) × A∗ ist definiert durch: I Wort w ∈ A∗ I Sprache L ⊆ A∗ und bedeutet: Gilt w ∈ L? durch reguläre Ausdrücke definierte Sprachen L = L(E) sind definiert durch I regulären Ausdruck E ∈ RegExp(A) Wortproblem (L(E), w) für durch reguläre Ausdrücke definierte Sprache L(E) ist definiert durch: I Wort w ∈ A∗ I regulären Ausdruck E ∈ RegExp(A∗ ) und bedeutet: Gilt w ∈ L(E)? Beispiele: I Wortproblem (L(a∗ b∗ ), ab) (Gilt ab ∈ L(a∗ b∗ )?) I Wortproblem (L(a∗ b∗ ), ba) (Gilt ba ∈ L(a∗ b∗ )?) 105 Wortproblem für durch SRS erzeugte Sprachen Wortproblem (L, w) ist definiert durch: I Wort w ∈ A∗ I Sprache L ⊆ A∗ und bedeutet: Gilt w ∈ L? durch SRS erzeugte Sprache L = L(S, u) ist definiert durch I Wortersetzungssystem S ⊆ A∗ × A∗ I Startwort u ∈ A∗ Wortproblem (L(S, u), w) für eine durch ein SRS erzeugte Sprache ist definiert durch: I Wort w ∈ A∗ I Wortersetzungssystem S ⊆ A∗ × A∗ I Startwort u ∈ A∗ und bedeutet: Gilt w ∈ L(S, u)? Beispiele: I Wortproblem (L({a → aa, a → bb, ba → ab}, a), abab) I Wortproblem (L({aa → a, bb → ε}, abba), ε) 106 SRS-Wortproblem und Ableitbarkeit Wortproblem (L(S, u), w) mit I Wort w ∈ A∗ I Wortersetzungssystem S ⊆ A∗ × A∗ I Startwort u ∈ A∗ bedeutet: Gilt w ∈ L(S, u)? alternative Formulierung: Gilt u →∗S w? Darstellung der Ableitungsrelation →S als (unendlicher) gerichteter Graph GS = (V , E) mit Knoten: V = A∗ Kanten: E = {(u, v ) ∈ A∗ | u →S v } ⊆ V 2 u →∗S w gilt genau dann, wenn in GS ein Pfad (zusammenhängende Folge von Kanten) von u nach w existiert. Beispiel: (Tafel) S = {ab → ba}, abab →∗S baba, aber abab 6→∗S abaa, abab 6→∗S aabb 107 Lösungsverfahren für SRS-Wortprobleme Lösung des Wortproblems und anderer Fragen zu Sprachen ist für endliche Sprachen einfach, für unendliche Sprachen oft nicht. Darstellung der Sprache durch ein Wortersetzungssystem kann helfen. Idee: Lösung des Wortproblem w ∈ L(S, u) durch Standardverfahren: Suche eines Pfades von u nach w im Ableitungsgraphen des Wortersetzungssystems S Problem: I Pfadsuche ist Standardverfahren für endliche Graphen. (mehr dazu in LV Algorithmen und Datenstrukturen) I Ableitungsgraphen von Wortersetzungssystemen sind meist unendlich. Standardverfahren anwendbar, wenn Suche in einer endlichen Menge von Wörtern (endlichem Teilgraphen) genügt 108 Nichtverlängernde Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverlängernd, wenn für jede Regel (l → r ) ∈ S gilt: |l| ≥ |r |. Wortproblem (L, w): Eingabe : Sprache L ⊆ A∗ , Wort w ∈ A∗ Frage: Gilt w ∈ L? Ausgabe: ja oder nein Beispiel: S = {ab → ba, ac → a}, u = abcac, w = aacb Satz Für jedes nichtverlängernde Wortersetzungssystem S ⊆ A∗ × A∗ und beliebige Wörter u, w ∈ A∗ ist das Wortproblem (L(S, u), w) in endlicher Zeit maschinell korrekt lösbar. Idee: Pfadsuche im endlichen Teilgraphen aller Wörter v ∈ A∗ mit |v | ≤ |u| 109 Nichtverkürzende Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverkürzend, wenn für jede Regel (l → r ) ∈ S gilt: |l| ≤ |r |. Beispiel: S = {a → ba, b → a}, u = ba, w = bba, w 0 = aab Satz Für jedes nichtverkürzende Wortersetzungssystem S ⊆ A∗ × A∗ und beliebige Wörter u, w ∈ A∗ ist das Wortproblem (L(S, u), w) in endlicher Zeit maschinell korrekt lösbar. Idee: Pfaduche im endlichen Teilgraphen aller Wörter v ∈ A∗ mit |u| ≤ |v | ≤ |w| 110 Wortersetzungssysteme mit verlängernden und verkürzenden Regeln Beispiel: c c c aca S= bcb ada bdb → → → → → → → baaca, aacba, bbcabb, d, d, d, d Für Wortersetzungssysteme S mit verlängernden und verkürzenden Regeln existiert im Allgemeinen kein maschinelles Verfahren, welches für beliebige Wörter u, w ∈ A∗ feststellt, ob u →∗s w gilt. 111 Ableitbare Wörter über Teilalphabet Beispiele: A = {a, b, c}, c → c → c → S= c → c → aca, bcb, ε, a, b L(S, c) = {u ◦ d ◦ u R | u ∈ {a, b}∗ ∧ d ∈ {a, b, c, ε}} Menge aller Wörter in L(S, c) ∩ {a, b}∗ : Palindrome über {a, b} c ist Hilfssymbol zur Erzeugung der Palindrome 112 Natürliche Sprache Wortersetzungssystem S enthält die Regeln: Satz → Subjekt Prädikat . Subjekt → mArtikel mSubstantiv Subjekt → wArtikel wSubstantiv mArtikel → Der wArtikel → Die mSubstantiv → Hund wSubstantiv → Sonne Prädikat → bellt Prädikat → scheint Alphabet A = {Der, Die, Hund, Sonne, bellt, scheint, .}∪ { Satz, Subjekt, Prädikat, nArtikel, mArtikel, nSubstantiv, mSubstantiv} Ableitbare Wörter in L(S, Satz ) ohne Hilfssymbole aus der Menge {Satz, Subjekt, Prädikat, mArtikel, wArtikel, mSubstantiv, wSubstantiv}: Menge korrekter deutscher Sätze (dieser einfachen Form mit ausschließlich den Worten Der, Die, Hund, Sonne, bellt, scheint). 113 Aussagenlogik Wortersetzungssystem S enthält die Regeln: Formel → Variable Formel → Konstante Formel → ( ¬ Formel ) Formel → ( Formel ∨ Formel ) Formel → ( Formel ∧ Formel ) Variable → p Variable → q Konstante → t Konstante → f Alphabet A = {t, f, p, q, ¬, ∨, ∧, (, )} ∪{ Formel,Variable, Konstante} Wörter in L(S, Formel ) ∩ {t, f, p, q, ¬, ∨, ∧, (, )}∗ : Menge AL({p, q}) aller aussagenlogischen Formeln mit Aussagenvariablen aus der Menge {p, q} 114 Dezimaldarstellung natürlicher Zahlen Wortersetzungssystem S enthält die Regeln Zahl → 0 Zahl → 1Ziffernfolge .. . Zahl Ziffernfolge → → .. . 9Ziffernfolge 0Ziffernfolge Ziffernfolge Ziffernfolge → → 9Ziffernfolge ε Alphabet {0, . . . , 9} ∪ { Zahl, Ziffernfolge } Wörter in L(S, Zahl ) ∩ {0, . . . , 9}∗ : Menge aller Dezimaldarstellungen natürlicher Zahlen 115 Programmiersprachen Java-Syntax (Ausschnitt) in Backus-Naur Form (BNF) (John Backus, Peter Naur) a → r1 |r2 | . . . |rn statt mehrerer Regeln a → r1 , . . . , a → rn ::= statt → (in ASCII darstellbar) Hilfssymbole markiert durch < und > 116 Definition Grammatik Grammatik G = (N, T , P, S) mit Nichtterminalsymbole endliche Menge N (Hilfssymbole) Terminalsymbole endliche Menge T (Alphabet der erzeugten Sprache) Wortersetzungssystem P ⊆ (N ∪ T )+ × (N ∪ T )∗ (Produktionen) Startsymbol S ∈ N Beispiel: G = (N, T , P, S) mit N = {S}, = {0, 1}, S → 0S1 P = S → ε T 117 Grammatiken: Beispiele I G = (N, T , P, E) mit N = {E, F , G}, T = {(, ), a, +, ·} und E → G, E → E + G, G → F, P= G → G · F, F → a, F → (E) I G = (N, T , P, S) mit N = {S, A, B, C}, T S → aSBC, S → aBC, CB → BC, aB → ab, P= bB → bb, bC → bc, cC → cc = {a, b, c} 118 Ableitungen in Grammatiken Ableitung in Grammatik G = (N, T , P, S): Ableitung im Ersetzungssystem P mit Startwort S Beispiel: G = (N, T , P, S) mit N = {S, A, B} = {0, 1} S S P = A B T → → → → 0SA 0A 1 A Ableitung: S → 0SA → 0S1 → 00A1 → 0011 119 Durch Grammatiken definierte Sprachen Grammatik G = (N, T , P, S) definiert die Sprache L(G) = {w ∈ T ∗ | S →∗P w} = L(P, S) ∩ T ∗ Beispiel: G = (N, T , P, S) mit N = {S, Z } = {0, 1} S S Z P = Z Z T → → → → → 1Z , 0, 0Z , 1Z , ε definiert die Sprache L(G) = . . . 120 Äquivalenz von Grammatiken Zwei Grammatiken G1 und G2 heißen genau dann äquivalent, wenn L(G1 ) = L(G2 ) gilt. Beispiel: G1 = (N1 , {0, 1}, P1 , S) mit N1 = {S, A, B} und S → 0SA S → 0A P1 = A → 1 B → A und G2 = (N2 , {0, 1}, P2 , S 0 ) mit N2 = {S 0 } und P2 = S 0 → 0S 0 1, S 0 → 01 sind äquivalent wegen L(G1 ) = L(G2 ) = . . . 121 Chomsky-Hierarchie (Noam Chomsky, 1956) Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben (Begründung später). 122 Beispiele I G = ({S}, {a, b}, P, S) mit P = {S → aSb, S → ab, S → a, S → b} ist vom Typ 2 I G = ({S, A, B}, {a, b}, P, S) mit P = {S → aA, A → aB, B → bB, B → b} ist vom Typ 3 I G = ({A, B, C}, {a, b, c}, P, A) mit A → aABC, A → aBC, CB → BC, aB → ab, P= bB → bb, bC → bc, cC → cc ist vom Typ 1 erzeugt die Sprache L(G) = . . . 123 Was bisher geschah I Alphabet, Wort, Sprache I Operationen und Relationen auf Wörtern und Sprachen I interessante Fragen für Sprachen und Wörter z.B. Wortproblem endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik) I Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen Grammatiken (Konstruktionsanleitung) I I I I I I Terminal-, Nichtterminalsymbole Ableitungen in Grammatiken durch Grammatiken erzeugte Sprachen Äquivalenz von Grammatiken Chomsky-Hierarchie für Grammatiken und Sprachen 124 Dyck-Sprache Klammerpaar (, ) Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke erzeugt durch Grammatik G = ({S}, {(, )}, P, S) mit S → ε S → SS P = S → (S) Beispiele: I ()(()()) ∈ L(G) I ())(6∈ L(G) 125 Allgemeine Dyck-Sprachen Menge aller korrekt geklammerten Ausdrücke mit n Paaren von Klammern: (i , )i für i ∈ {1, . . . , n} erzeugt durch Grammatik G = ({S}, {(i , )i | i ∈ {1, . . . , n}}, P, S) mit S → ε P = ∪ {S → (i S)i | i ∈ {1, . . . , n}} S → SS Symbole müssen nicht notwendig Klammern sein, z.B. aacdacababdbbcabdb ∈ Dyck-Sprache mit a statt (1 , b statt )1 , c statt (2 und d statt )2 126 Beispiel G = ({A, B, C}, {a, b, c}, P, A) mit A → A → CB → aB → P= bB → bC → cC → aABC, aBC, BC, ab, bb, bc, cc erzeugt die Sprache L(G) = . . . 127 Beispiel G = ({Z , F }, {ab}, P, Z ) mit Z Z F P= F F → → → → → 0, 1F , ε 0F , 1F erzeugt die Sprache L(G) = . . . 128 Wiederholung Chomsky-Hierarchie Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben (Begründung später). 129 Grammatiken mit ε-Regeln ε-Regel : Wortersetzungsregel der Form l → ε Beispiele: I G1 = ({A, B}, {0, 1}, P1 , A) mit P1 = {A → 1B0, B → 1B0, B → ε} ist äquivalent zu G2 = ({A}, {0, 1}, P2 , A) mit P2 = {A → 1A0, A → 10} (ohne ε-Regel) I G = ({A}, {0, 1}, P, A) mit P = {A → 1A0, A → ε} ist nicht äquivalent zu einer Grammatik ohne ε-Regel, weil ε ∈ L(G) Aber: L(G) \ {ε} wird von einer Grammatik ohne ε-Regel erzeugt (L(G) \ {ε} = L(G2 )) 130 ε-Sonderregel in kontextfreien Grammatiken Wiederholung: Sprache L ⊆ T ∗ heißt kontextfrei (Typ 2), wenn eine kontextfreie Grammatik G mit L(G) = L \ ε existiert. ästhetischer wäre: L(G) = L, deshalb kontextfreie Grammatik G = (N, X , P, S) mit ε-Sonderregel: Regel S → ε erlaubt (aber nicht benötigt), falls S in keiner rechten Regelseite in P vorkommt. Fakt Zu jeder kontextfreien Sprache L existiert eine kontextfreie Grammatik mit ε-Sonderregel, so dass L = L(G) gilt. (neues Startsymbol S 0 und Regeln S 0 → ε, S 0 → S hinzufügen) Folgerung Zu jeder regulären Sprache L existiert eine reguläre Grammatik mit ε-Sonderregel, so dass L = L(G) gilt. 131 Eliminierung der ε-Regeln – Beispiel G = ({A, B, S}, {0, 1}, P, S) mit P = {S → AB, A → 1AB, A → ε, B → 0, B → ε, } 1. (schrittweise) Berechnung der Menge aller NT A mit A →∗P ε (löschbare NT): hier: M = {A, B, S} 2. Hinzufügen modifizierter Kopien jeder Regel, die NT aus M auf der rechten Seite enthält. Modifikation: Weglassen des NT rechts, auch Kombinationen hier neu: S → A, S → B, S → ε, A → 1A, A → 1B, A → 1 3. Löschen aller ε-Regeln bis auf ε-Sonderregel Die so konstruierte Grammatik ist kontextfrei, enthält höchstens die ε-Sonderregel und ist äquivalent zu G. 132 Reguläre Sprachen Jede reguläre Sprache L ⊆ A∗ I ist definiert durch einen regulären Ausdruck E ∈ RegExpA I wird erzeugt von einer regulären Grammatik G = (N, T , P, S) mit T = A Beispiel: Die Sprache aller Binärdarstellungen natürlicher Zahlen ohne führende Nullen L(G) = {0} ∪ {1} ◦ {0, 1}∗ I ist definiert durch den regulären Ausdruck 0 + 1(0 + 1)∗ I wird erzeugt von der regulären Grammatik G = ({Z , F }, {ab}, P, Z ) mit P = {Z → 0, Z → 1F , F → ε, F → 0F , F → 1F } oder nur mit ε-Sonderregel (Tafel) 133 Ableitungsbäume für kontextfreie Grammatiken Beispiel: Grammatik G = (N, T , P, E) mit N = {E, F }, T = {a, b, c, (, ), +, ∗}, P = {E → (E + E), E → F ∗ F , F → E, E → a, E → b, E → c} Ableitung für w = (c ∗ a + (b + a ∗ a)) allgemein: Grammatik G = (N, T , P, S) Ableitung S →P w1 →P w2 →P · · · →P wn = w für w in G Ableitungsbaum zu einem Wort w in der kontextfreien Grammatik G (induktive Definition): I Wurzel mit Markierung S I für jeder Anwendung einer Regel A →P r1 · · · rn : Verzweigung bei Symbol A in n Kinder mit Markierungen r1 . . . , rn I Markierung der Blätter (von links nach rechts): Wort w Ein Ableitungsbaum repräsentiert i.A. mehrere Ableitungen. 134 Rechts- und Linksableitungen Eine Ableitung für w in einer kontextfreien Grammatik G heißt Linksableitung , falls in jedem Schritt das am weitesten links stehende Nichtterminal Rechtsableitung , falls in jedem Schritt das am weitesten rechts stehende Nichtterminal ersetzt wird. Zu jedem Ableitungsbaum für w in G existieren I genau eine Linksableitung für w in G und I genau eine Rechtsableitung für w in G. 135 Mehrdeutige kontextfreie Grammatiken Grammatik G heißt eindeutig , falls für jedes Wort w ∈ L(G) genau ein Ableitungsbaum in G existiert. mehrdeutig , sonst. Beispiel: Grammatik G = (N, T , P, E) mit N = {S}, T = {a} und P = {S → SS, S → a} für w = aaa Eindeutigkeit von Grammatiken ist z.B. beim Entwurf von Programmiersprachen (Syntax) wichtig. „dangling else“-Problem (z.B. in C, Java): <Anw> ::= if <Ausdr> then <Anw> <Anw> ::= if <Ausdr> then <Anw> else <Anw> Was bedeutet: if C1 then if C2 then A else B 136 Inhärent mehrdeutige Sprachen Sprachen L, für die keine eindeutige Grammatik G mit L = L(G) existiert, heißen inhärent mehrdeutig. Beispiel: L = {al bm c n | l, m, n > 0 ∧ (l = m ∨ m = n)} ist inhärent mehrdeutig. L = L1 ∪ L2 mit L1 = {al bm c n | l, m, n > 0 ∧ l = m} = {al bl c n | l, n > 0} L2 = {al bm c n | l, m, n > 0 ∧ m = n} = {al bn c n | l, n > 0} Für jedes Wort in L1 ∩ L2 existieren in jeder Grammatik, die L erzeugt, zwei Ableitungsbäume. 137 Was bisher geschah Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen I interessante Fragen für Sprachen und Wörter z.B. Wortproblem endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik) I Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen I Grammatiken (Konstruktionsanleitung) und durch sie erzeugte Sprachen I reguläre Sprachen I I I I I beschrieben durch reguläre Ausdrücke erzeugt von regulären Grammatiken kontextfreie Sprachen I I Ableitungsbäume Mehrdeutigkeit 138 Mächtigkeitsvergleich unendlicher Mengen Eine Menge M heißt genau dann höchstens so mächtig wie die Menge N, wenn eine surjektive Funktion f : N → M existiert. (f : N → M ist surjektiv, gdw. ∀x ∈ M∃n ∈ N : f (n) = x) Beispiele: I I M = {1, 2, 3} ist höchstens so mächtig wie N = {a, b, c, d} N ist höchstens so mächtig wie 3N Zwei Mengen M und N heißen genau dann gleichmächtig, wenn I M höchstens so mächtig wie N und I N höchstens so mächtig wie M ist. (genau dann, wenn eine bijektive Funktion f : N → M existiert) Beispiele: I I M = {1, 2, 3, 4} und N = {a, b, c, d} sind gleichmächtig N und 3N sind gleichmächtig. 139 Abzählbarkeit Eine Menge M heißt genau dann abzählbar, wenn sie höchstens so mächtig wie ist. (also eine surjektive Funktion f : → M existiert) N N (Unendliche) Mengen, die nicht abzählbar sind, heißen überabzählbar. Beispiele: I N, Menge aller geraden Zahlen, Menge aller Primzahlen, jede endliche Menge, Menge aller Paare natürlicher Zahlen, sind abzählbar, I Q R ist überabzählbar. 140 Erstes Diagonalverfahren von Cantor (z.B. zum Nachweis der Abzählbarkeit einer Menge) Satz Die Menge alle Paare natürlicher Zahlen ist abzählbar. Beweisidee (Tafel): zweidimensionale (unendliche) Darstellung diagonale Durchquerung Dovetailing: analoge Idee zur sequentiellen Simulation paralleler Berechnungen I Für jedes endliche Alphabet A ist die Menge A∗ abzählbar. I Für jedes endliche Alphabet A ist jede Sprache L ⊆ A∗ abzählbar. 141 Zweites Diagonalverfahren von Cantor (z.B. zum Nachweis der Überabzählbarkeit einer Menge) Satz Es existieren überabzählbar viele unendliche 01-Folgen. ({0, 1}ω ist überabzählbar.) Beweisidee: indirekt (Tafel) allgemeinere Aussage: Satz (Cantor) Für jede Menge M ist ihre Potenzmenge 2M von M mächtiger als M. 142 Beispiele überabzählbarer Mengen R N [0, 1) ⊂ ist mächtiger als . Es gibt überabzählbar viele reelle Zahlen im Intervall [0, 1]. ist mächtiger als . Es gibt überabzählbar viele reelle Zahlen. N 2 (Menge aller Mengen natürlicher Zahlen) ist mächtiger als . (Überabzählbarkeit der Menge M = 2N ) Es gibt überabzählbar viele Mengen natürlicher Zahlen. ∗ {0,1} 2 Menge aller Sprachen L ⊆ {0, 1}∗ ist mächtiger als {0, 1}∗ . Es gibt überabzählbar viele Sprachen über dem Alphabet {0, 1}. ∗ A 2 für beliebiges endliches Alphabet A Für jedes endliche Alphabet A ist die Menge aller Sprachen über A überabzählbar. R N N 143 Lässt sich jede Sprache durch eine Grammatik repräsentieren? Existiert zu jeder Sprache L ⊆ A∗ eine Grammatik G mit L = L(G)? Nein (Gegenbeispiel später) Begründung: (Aussage für A = {0, 1} zu zeigen, genügt) 1. Wieviele Grammatiken über dem endlichen Alphabet A gibt es? abzählbar viele (weil Grammatiken endliche Beschreibungen sind, nach erstem Diagonalverfahren von Cantor) 2. Wieviele Sprachen L ⊆ A∗ gibt es? überabzählbar viele (zweites Diagonalverfahren von Cantor) Damit existieren sogar sehr viel mehr (überabzählbar viele) Sprachen, die nicht durch Grammatiken beschrieben werden können. Warum sind Grammatiken trotzdem wichtig / interessant? 144 Wortproblem für von Grammatiken erzeugte Sprachen Wortproblem (L, w) ist definiert durch: Wort w ∈ A∗ I Sprache L ⊆ A∗ I und bedeutet: Gilt w ∈ L? Jede durch eine Grammatik G erzeugte Sprache L = L(G) ist definiert durch die Grammatik G = (N, T , P, S) mit I I endliche Mengen N, T , S ∈ N Wortersetzungssystem P ⊆ (N ∪ T )+ × (N ∪ T )∗ Wortproblem (L(G), w) für von einer Grammatik erzeugten Sprache ist definiert durch: Wort w ∈ A∗ I Grammatik G = (N, T , P, S) I und bedeutet: Gilt w ∈ L(G)? Satz Für jede monotone Grammatik G (Chomsky-Typ 1) ist das Wortproblem (L(G), w) in endlicher Zeit maschinell korrekt lösbar. (folgt aus entsprechendem Satz für nichtverkürzende Wortersetzungssysteme) 145 Anwendung bei der Übersetzung von Programmen Höhere Programmiersprachen (z.B. C, Java) erfordern Übersetzung von Quell- in Maschinen- oder Byte-Code Quellcode ↓ Zwischendarstellung ↓ Java-Bytecode Übersetzung in zwei Phasen: 1. Analyse-Phase (Front-End): Transformation des Quellcodes in eine Zwischendarstellung 2. Synthese-Phase (Back-End): Transformation der Zwischendarstellung in Java-Bytecode 146 Analyse-Phase Quellcode Scanner Parser −→ Folge von Token −→ Syntaxbaum lexikalische Analyse (Scanner) lineare Analyse des Quelltextes, Aufteilung in Einheiten (Token) z.B. Schlüsselwörter, Bezeichner, Operatorsymbole, Zahlen reguläre Sprachen (reguläre Ausdrücke, reguläre Grammatiken, . . . ) Syntaxnalyse (Parser) hierarchische Struktur des Quelltextes z.B. Ausdrücke, Verzweigungen, Schleifen kontextfreie Sprachen (kontextfrie Grammatiken, . . . ) semantische Analyse Annotationen im Syntaxbaum, z.B. Typprüfungen 147 Einsatz ähnlicher Analyse-Methoden I Übersetzung von Daten zwischen verschiedenen Formaten I Verarbeitung von Domain-spezifischen Sprachen I Textformatierung I kontextabhängige Hilfe in Entwicklungsumgebungen I statische Analyse zur Fehlersuche in Programmen I Interpreter I graphische Editoren (z.B. für UML-Diagramme) mit automatischer Programmgenerierung 148 Darstellung von Termmengen durch kontextfreie Grammatiken X Wiederholung: induktive Definition für Term(ΣF , ) Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch: X IA Jede Variable x ∈ X X ist ein Term. (X ⊆ Term(ΣF , X)) IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ). X X kontextfreie Grammatik für Term(ΣF , ∅) in Präfixform: G = ({S}, T , P, S) mit T = {s | ∃n : (s, n) ∈ ΣF } ∪ P = {S → s | (s, 0) ∈ Σ} X ∪ {(, ), , } ∪{S → s(S) | (s, 1) ∈ Σ} ∪{S → s(S, S) | (s, 2) ∈ Σ} . ∪ .. ∪{S → x | x ∈ X} 149 Beispiel funktionale Signatur ΣF = {(a, 0), (b, 0), (f , 1), (g, 2), (h, 3))}, Variablenmenge {x, y } kontextfreie Grammatik für Term(ΣF , ) in Präfixform: G = ({S}, {a, b, f , g, h, x, y , (, ), , }, P, S) mit S → a S → b S → f (S) S → g(S, S) P= S → h(S, S, S) S → x S → y X Ableitung des Terms f (h(g(a, x), b, y ): S → f (S) → f (h(S, S, S)) → f (h(S, b, S)) → f (h(S, b, y )) → f (h(g(S, S), b, y )) → f (h(g(a, S), b, y )) → f (h(g(a, x), b, y )) ähnlich für Postfix- und Infixform (ggf. Operatorpräferenzen beachten) 150 Beispiel: HTML-Tabellen von der Homepage zu dieser LV: <table> <tr><td> <td> <td> <tr><td> <td> <td> <tr><td> <td> <td> <tr><td> <td> <td> </table> ungerade Woche: </td><td>Montag</td> 9:30 - 11:00 </td><td> Uhr </td> in LNW006 </td></tr> </td><td>Dienstag </td> 15:30 - 17:00 </td><td> Uhr </td> in G327</td></tr> gerade Woche: </td><td>Dienstag</td> 9:30 - 11:00 </td><td> Uhr </td> in LNW006 </td></tr> </td><td> Mittwoch</td> 11:15 - 12:45 </td><td> Uhr </td> in LNW006</td></tr> 151 Grammatik für HTML-Tabellen Grammatik G = ({T , R, C, S}, ASCII, P, T ) mit Beispiel-Ableitung (Linksableitung): T → <table> R </table> → <table> <tr> C </tr> R </table> → <table> <tr> <td> S </td> C </tr> R </table> →∗ <table> <tr> <td> ungerade Woche: </td> C </tr> R </table> → <table> <tr> <td> ungerade Woche: </td> <td> S </td> C </tr> R </table> →∗ <table> <tr> <td> ungerade Woche: </td> <td> Montag </td> C </tr> R </table> → ... Jedes in G ableitbare Wort ist Quelltext einer HTML-Tabelle. 152 Formale Sprachen – Zusammenfassung I Alphabet, Wort, Sprache I Operationen und Relationen auf Wörtern und Sprachen I interessante Fragen für Sprachen und Wörter z.B. Wortproblem endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik) I Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen I Grammatiken (Konstruktionsanleitung) und durch sie erzeugte Sprachen (Chmosky-Hierarchie) I Äquivalenz 153 Formale Sprachen – Spezialfälle kontextfreie Sprachen (Chomsky-Typ 2) erzeugt von kontextfreien Grammatiken Ableitungsbäume, Mehrdeutigkeit schnelle Verfahren zur Lösung des Wortproblems Anwendungen z.B. in Parsern für Programmtransformationen (z.B. Compiler), Verarbeitung natürlicher Sprache reguläre Sprachen (Chomsky-Typ 3) definiert durch reguläre Ausdrücke, erzeugt von regulären Grammatiken sehr schnelle Verfahren zur Lösung des Wortproblems Anwendungen z.B. in Scannern für Programmtransformationen (z.B. Compiler), Suche in Texten 154 Logik in der Informatik theoretische Informatik, Grundlagen: Beschreibung von formalen Sprachen und Berechnungsmodellen (klassische Prädikatenlogik) technische Informatik, z.B. Digitaltechnik: Logikgatter / Schaltnetze (klassische Aussagenlogik) Spezifikation: Definition der Anforderungen an Hardware Verifikation der Korrektheit von Hardware praktische Informatik, z.B. Programmierung: Spezifikation: Definition der Anforderungen an Software Verifikation der Korrektheit von Software Datentypen: definiert durch Eigenschaften (statt Realisierung) (klassische Prädikatenlogik, modale und temporale Logiken) angewandte Informatik, z.B. Datenbanken, künstliche Intelligenz: Wissensrepräsentation / Expertensysteme Problemlösen / automatischen Beweisen (klassische und nichtklassische Logiken, Fuzzy-Logik) allgemein: Logik als Sprache zur Formulierung und Manipulation geeigneter formaler Modelle der Realität 155 Logik – Geschichte I Logik in Philosophie, Rhetorik (Syllogismen) Aristoteles (384 - 322 v.Chr.) I Grundlagen der Rechentechnik Aussagenlogik George Boole (1815 - 1864) I Mathematische Logik Formalisierung des Beweisens (Begriffe und Schlußregeln) Gottfried Wilhelm Leibniz (1646 - 1716) Gottlob Frege (1848 - 1925) David Hilbert (1862 - 1943) Kurt Gödel (1906 - 1978) Unvollständigkeitssatz I formale Grundlagen der (theoretischen) Informatik Alonzo Church (1903 - 1995) Alan Turing (1912 - 1954) 156 Aussagen Aussage = Behauptung Beispiele: I Es regnet. I Die Straße ist naß. I I 9 ist eine Primzahl. √ 2∈ I 3<5 I x < 5 (hängt von x ab, keine Aussage) I Ist x < 5? (keine Aussage) I Sei x < 5. (keine Aussage) I Morgen regnet es. I Es ist nicht alles Gold, was glänzt. Q 157 Wahrheitswerte Prinzipien der klassischen Logik: Zweiwertigkeit Jede Aussage ist wahr oder falsch. ausgeschlossener Widerspruch Keine Aussage ist sowohl wahr als auch falsch. Wahrheitswerte 1 (wahr) oder 0 (falsch) Jede Aussage p hat genau einen Wahrheitswert W(p) ∈ {0, 1}. Beispiele: I W(Es regnet.) = ? I W(Die Straße ist naß.) = ? I I W(9 ist eine Primzahl.) = 0 √ W( 2 ∈ ) = 0 I W(3 < 5) = 1 I W(Morgen regnet es.) = ? I W(Es ist nicht alles Gold, was glänzt.)=1 Q 158 Zusammengesetzte Ausdrücke – Junktoren Junktor (mit zugeordneter Stelligkeit): Symbol (Syntax) für Verknüpfung von Aussagen z.B. „und“ (zweistellig), „nicht“ (einstellig) Gottlob Frege: Die Bedeutung des Ganzen ist eine Funktion der Bedeutung seiner Teile. Wahrheitswert eines zusammengesetzten Ausdruckes lässt sich aus dem Wahrheitswert seiner Teilausdrücke berechnen. Semantik (Bedeutung) eines n-stelligen Junktors ∗: [∗] : {0, 1}n −→ {0, 1} (n-stellige Funktion auf der Menge {0, 1}) Wahrheitswertkonstanten (nullstellige Junktoren): t mit [t] = 1 f mit [f] = 0 159 Konjunktion ∧ Es regnet und 9 ist eine Primzahl. I W(9 ist eine Primzahl.)= 0 I W(Es regnet.)=? I W(Es regnet und 9 ist eine Primzahl.)=0 p ∧ q ist genau dann wahr, wenn beide Aussagen p und q wahr sind. W(p) W(q) W(p ∧ q) 0 0 0 0 1 0 1 0 0 1 1 1 W(p ∧ q) = min(W(p), W(q)) [∧] = min ist kommutativ, assoziativ n ^ pi = p1 ∧ p2 ∧ · · · ∧ pn i=1 160 Disjunktion ∨ (inklusiv) Es regnet oder 3 < 5. I W(3 < 5) = 1 I W(Es regnet)=? I W(Es regnet oder 3 < 5.)=1 p ∨ q ist genau dann wahr, wenn wenigstens eine der Aussagen p und q wahr ist. W(p) W(q) W(p ∨ q) 0 0 0 0 1 1 1 0 1 1 1 1 W(p ∨ q) = max(W(p), W(q)) [∨] = max ist kommutativ, assoziativ n _ pi = p1 ∨ p2 ∨ · · · ∨ pn i=1 161 Negation ¬ √ √ (meist 2 6∈ ¬( 2 ∈ ) √ I W( 2 ∈ )=0 √ I W(¬( 2 ∈ )) = 1 Q Q Q) Q ¬p ist genau dann wahr, wenn p falsch ist. W(p) W(¬p) 0 1 1 0 W(¬p) = 1 − W(p) 162 Implikation → Wenn es regnet, dann ist die Straße naß. I W(Es regnet.)=? I W(Die Straße ist naß.)=? I W(Wenn es regnet, dann ist die Straße naß.)=1 p → q ist genau dann wahr, wenn die Aussage p falsch oder die Aussage q wahr ist. W(p) W(q) W(p → q) 0 0 1 0 1 1 0 0 1 1 1 1 W(p → q) = 1 falls W(p) ≤ W(q) 0 sonst 163 Äquivalenz ↔ 3 < 5 gilt genau dann, wenn 0 < 5 − 3 gilt. I W(3 < 5) = 1 I W(0 < 5 − 3) = 1 I W(3 < 5 gilt genau dann, wenn 0 < 5 − 3 gilt.)=1 p ↔ q ist genau dann wahr, wenn entweder beide Aussagen p und q gelten oder beide nicht gelten. W(p) W(q) W(p ↔ q) 0 0 1 0 1 0 1 0 0 1 1 1 W(p ↔ q) = 1 falls W(p) = W(q) 0 sonst 164 Übersicht Junktoren und ihre Bedeutung wahr falsch Konjunktion Disjunktion Negation Implikation Äquivalenz Stelligkeit Syntax Symbol Semantik Wahrheitswertfunktion 0 0 2 2 1 2 2 t f ∧ ∨ ¬ → ↔ 1 0 min max x 7→ 1 − x ≤ = 165 Aussagenlogische Formeln (Syntax) Definition (induktiv) Die Menge AL(P) aller (aussagenlogischen) Formeln mit Aussagenvariablen aus der Menge P ist definiert durch: IA: Jede Aussagenvariable p ∈ P ist eine Formel. (P ⊆ AL(P)). I t und f sind Formeln. IS: I I Ist ϕ eine Formel, dann ist auch ¬ϕ eine Formel. Sind ϕ und ψ Formeln, dann sind auch ϕ ∨ ψ, ϕ ∧ ψ, ϕ → ψ und ϕ ↔ ψ Formeln. IS’: (Zusammenfassung aller Unterpunkte zu IS) Sind j ein n-stelliger Junktor und ϕ1 , . . . , ϕn Formeln, dann ist auch j(ϕ1 , . . . , ϕn ) eine Formel. (Aus {ϕ1 , . . . , ϕn } ⊆ AL(P) folgt j(ϕ1 , . . . , ϕn ) ∈ AL(P).) dieselbe Definition kürzer: AL(P) = Term(ΣF , P) mit der Signatur ΣF = {(t, 0), (f, 0), (¬, 1), (∨, 2), (∧, 2), (→, 2), (↔, 2)} (Baumdarstellung) 166 Menge aller Aussagenvariablen einer Formel Definition (induktiv über Formelaufbau): Für jede aussagenlogische Formel ϕ ∈ AL(P) ist die Menge var(ϕ) aller in ϕ vorkommenden Aussagenvariablen definiert durch: IA: falls ϕ = p (Atom), dann var(ϕ) = {p} I nullstellige Junktoren (t, f): IS: I I für ϕ = t oder ϕ = f gilt var(ϕ) = ∅ einstellige Junktoren (¬): für ϕ = ¬ϕ1 gilt var(ϕ) = var(ϕ1 ) zweistellige Junktoren (∗ ∈ {∨, ∧, →, ↔}): für ϕ = ϕ1 ∗ ϕ2 gilt var(ϕ) = var(ϕ1 ) ∪ var(ϕ2 ) Beispiel: Für ϕ = p → ((q ↔ t) ∨ (r → q)) gilt var(ϕ) = {p, q, r } 167 Aussagenlogische Interpretationen (Belegungen der Aussagenvariablen mit Wahrheitswerten) Interpretation (für Formeln ϕ ∈ AL(P)) Funktion W : P −→ {0, 1} Beispiel: P = {p, q} und W mit W (p) = 1 und W (q) = 0 Menge aller Interpretationen für Formeln ϕ ∈ AL(P) W(P) = {W : P −→ {0, 1}} = 2P Notation: für P = {p, q} ist W(P) = {W00 , W01 , W10 , W11 } mit W00 (p) = W00 (q) = 0, W01 (p) = 0 und W01 (q) = 1, W10 (p) = 1 und W10 (q) = 0, W11 (p) = W11 (q) = 1. 168 Wahrheitswerte für Formeln Erweiterung der Interpretation W : P −→ {0, 1} zu einer Funktion W : AL(P) −→ {0, 1} Der Wert W (ϕ) der Formel ϕ in der Interpretation W wird induktiv mit den Wahrheitswertfunktionen der Junktoren aus den Werten der Teilformeln von ϕ bestimmt: IA: falls ϕ = p ∈ P (Atom), dann W (ϕ) = W (p) IS: I I I nullstellige Junktoren t, f: W (t) = 1 , W (f) = 0 einstelliger Junktor ¬: für ϕ = ¬ψ gilt W (¬ψ) = [¬]W (ψ) = 1 − W (ψ) zweistellige Junktoren ∨, ∧: W (ψ1 ∧ ψ2 ) = W (ψ1 )[∧]W (ψ2 ) = min (W (ψ1 ), W (ψ2 )) W (ψ1 ∨ ψ2 ) = W (ψ1 )[∨]W (ψ2 ) = max (W (ψ1 ), W (ψ2 )) W (ψ1 → ψ2 ) = W (ψ1 )[→]W (ψ2 ) = 1 gdw. W (ψ1 ) ≤ W (ψ2 ) W (ψ1 ↔ ψ2 ) = W (ψ1 )[↔]W (ψ2 ) = 1 gdw. W (ψ1 ) = W (ψ2 ) Beispiel: ϕ = ((p ∧ ¬q) → (¬r ∨ (p ↔ q))) W (p) = 0, W (q) = 1, W (r ) = 0, W (ϕ) =? 169 Wahrheitswerttabellen Untersuchung der Werte einer Formel ϕ ∈ AL(P) in allen möglichen Interpretationen W ∈ (P) Darstellung in einer Tabelle mit Zeilen – Interpretationen W : var(ϕ) :→ {0, 1} Spalten – Teilformeln von ϕ W W (p1 ) · · · 0 ··· .. . 1 ··· W (pn ) W (ψ) für Teilformeln ψ von ϕ W (ϕ) 0 ··· .. . 1 ··· Beispiel: ϕ = p → ((q ↔ t) ∨ (r → q)) Wertetabelle einer n-stelligen Booleschen Funktion fϕ : {0, 1}n −→ {0, 1}. Die Semantik jeder aussagenlogischen Formel mit n Aussagenvariablen ist eine n-stellige Boolesche Funktion. 170 Modellmenge einer Formel Menge aller Interpretationen (Belegungen) für Formeln aus AL(P) W(P) = {W : P −→ {0, 1}} = 2P Die Belegung W : P → {0, 1} erfüllt die Formel ϕ ∈ AL(P) genau dann, wenn W (ϕ) = 1. Beispiel: erfüllende Belegungen für p ∨ (q ∧ ¬p): W10 , W01 , W11 Definition Jede aussagenlogische Interpretation W : P → {0, 1} mit W (ϕ) = 1 heißt Modell (erfüllende Belegung der Aussagenvariablen) für ϕ. Menge aller Modelle von ϕ ∈ AL(P): Mod(ϕ) = {W : P −→ {0, 1} | W (ϕ) = 1} Beispiele: Mod(p ∨ (q ∧ ¬p)) = . . ., Mod(p → p) = W({p}), Mod(p ∧ ¬p) = ∅ 171 Erfüllbarkeit und Allgemeingültigkeit Definition Eine Formel ϕ ∈ AL(P) heißt erfüllbar , wenn sie ein Modell hat (Mod(ϕ) 6= ∅) Beispiel: ¬p → p unerfüllbar (Widerspruch), wenn sie kein Modell hat (Mod(ϕ) = ∅, für jede Interpretation W gilt W (ϕ) = 0), Beispiel: p ∧ ¬p allgemeingültig (Tautologie), wenn jede Belegung ein Modell für ϕ ∈ AL(P) ist (Mod(ϕ) = (P), für jede Interpretation W gilt W (ϕ) = 1). Beispiel: p ∨ ¬p W Fakt Eine Formel ϕ ∈ AL(P) ist genau dann allgemeingültig, wenn die Formel ¬ϕ unerfüllbar ist. 172 Semantische Äquivalenz aussagenlogischer Formeln Definition Zwei Formeln ϕ und ψ mit Mod(ϕ) = Mod(ψ) heißen (semantisch) äquivalent (ϕ ≡ ψ). Äquivalente Formeln haben dieselbe Wahrheitswertfunktion (Semantik). Nachweis z.B. durch I Wahrheitswerttabellen I Äquivalente Umformung der Modellmengen Beispiele: I p → q ≡ ¬p ∨ q I p ∨ q ≡ ¬p → q I p ∧ q ≡ ¬(p → ¬q) I p ↔ q ≡ (p → q) ∧ (q → p) Achtung: Das Symbol ≡ ist kein Junktor (Syntax), sondern ein Symbol für eine Relation zwischen Formeln (Semantik), 173 Wichtige Äquivalenzen Für alle aussagenlogischen Formeln ϕ, ψ, η gilt: I ϕ ∨ ϕ ≡ ϕ, I ϕ ∨ ψ ≡ ψ ∨ ϕ, ϕ ∧ ψ ≡ ψ ∧ ϕ (Kommutativität von ∧ und ∨) I ϕ ∨ (ψ ∨ η) ≡ (ϕ ∨ ψ) ∨ η ϕ ∧ (ψ ∧ η) ≡ (ϕ ∧ ψ) ∧ η (Assoziativität von ∧ und ∨) I ϕ ∧ (ψ ∨ η) ≡ (ϕ ∧ ψ) ∨ (ϕ ∧ η) ϕ ∨ (ψ ∧ η) ≡ (ϕ ∨ ψ) ∧ (ϕ ∨ η) (Distributivgesetze) I ¬¬ϕ ≡ ϕ (Doppelnegation) I ¬(ϕ ∨ ψ) ≡ ¬ϕ ∧ ¬ψ, ¬(ϕ ∧ ψ) ≡ ¬ϕ ∨ ¬ψ (DeMorgansche Regeln) I ϕ ∨ ψ ≡ ¬(¬ϕ ∧ ¬ψ), ϕ ∧ ψ ≡ ¬(¬ϕ ∨ ¬ψ) (Dualität von ∧ und ∨) I ϕ → ψ ≡ ¬ψ → ¬ϕ (Kontraposition) I (ϕ ∧ ψ) ∨ (¬ϕ ∧ ψ) ≡ ψ (Fallunterscheidung) ϕ ∧ ϕ ≡ ϕ, ϕ ∨ f ≡ ϕ, ϕ∧t≡ϕ 174 Umformen von Formeln Satz (Ersetzbarkeitstheorem) Für drei Formeln ϕ, ψ, η ∈ AL(P), wobei ψ ≡ η und ψ eine Teilformel von ϕ ist, gilt ϕ ≡ ϕ0 , wobei ϕ0 entsteht, indem in ϕ ein Vorkommen von ψ durch η ersetzt wird. (Nachweis durch strukturelle Induktion) Formeln können also durch Ersetzung äquivalenter Teilformeln in semantisch äquivalente Formeln umgeformt werden. (Änderung der Syntax bei unveränderter Semantik) 175 Junktorbasen (vollständige Operatorensysteme) Eine Menge J von Junktoren heißt genau dann Junktorbasis, wenn zu jeder aussagenlogische Formel ϕ eine äquivalente aussagenlogische Formel ψ (d.h. ϕ ≡ ψ) existiert, wobei ψ nur Junktoren aus der Menge J enthält. Beispiele: Die Mengen I {¬, ∨, ∧} I {¬, ∨} I {¬, ∧} I {¬, →} I {f, →} I {NAND} I {NOR} (x NAND y ≡ ¬(x ∧ y )) (x NOR y ≡ ¬(x ∨ y )) sind Junktorbasen. Die Mengen {∨, ∧} und {∨, ∧, →} sind keine Junktorbasen. 176 Normalformen spezielle Formeln: Literal Atom oder negiertes Atom NNF Formeln, in denen das Negationssymbol ¬ höchstens auf Atome angewendet wird, heißen in Negations-Normalform. Beispiel: ¬p ∨ ((¬q ∨ p) ∧ q), ¬p, p W V mi CNF Formeln der Form ni=1 l i,j j=1 mit Literalen li,j heißen in konjunktiver Normalform. Beispiel: (¬p ∨ ¬q) ∧ (p ∨ q) ∧ ¬q, p ∨ q, p ∧ ¬q, ¬p V W mi DNF Formeln der Form ni=1 l j=1 i,j mit Literalen li,j heißen in disjunktiver Normalform. Beispiel: ¬p ∨ (¬q ∧ p) ∨ (p ∧ q), p ∨ q, p ∧ ¬q, ¬p 177 Satz über Normalformen Satz Zu jeder Formel ϕ ∈ AL(P) existieren I eine äquivalente Formel ϕ1 ∈ AL(P) in NNF, I eine äquivalente Formel ϕ2 ∈ AL(P) in CNF und I eine äquivalente Formel ϕ3 ∈ AL(P) in DNF. Transformation beliebiger Formeln in Normalformen: 1. Formeln mit Junktoren →, ↔, t, f schrittweise durch Formeln mit ausschließlich ∨, ∧, ¬ ersetzen 2. Konstruktion einer NNF durch (mehrmalige) Anwendung der deMorganschen Regeln 3. Konstruktion der CNF und DNF durch (mehrmalige) Anwendung der Distributivgesetze auf die NNF Beispiel: p ↔ q , (a → b) → c 178 Modelle von Formelmengen Menge aller Modelle einer Menge Φ ⊆ AL(P) von Formeln: ^ \ ϕ Mod(Φ) = Mod(ϕ) = Mod ϕ∈Φ ϕ∈Φ (Eine Belegung W : P −→ {0, 1} ist genau dann Modell für eine Menge Φ ⊆ AL(P) von Formeln, wenn W Modell für jede Formel ϕ ∈ Φ ist.) Beispiele: I Mod({p, p → q}) = {W11 } I Mod(∅) = {W : P → {0, 1}} (Jede Belegung ist ein Modell für die Formelmenge ∅.) I Beschreibung einer Situation (Menge von Aussagen): I I Anna geht zur Party, wenn Tom oder Paul hingehen. Tom geht zur Party, wenn Paul nicht hingeht. als Formelmenge: Φ = {(T ∨ P) → A, ¬P → T } Mod(Φ) = . . . 179 Was bisher geschah Wiederholung: klassische Aussagenlogik Syntax: I AL(P) = Term(ΣF , P) mit der Signatur ΣF = {(t, 0), (f, 0), (¬, 1), (∨, 2), (∧, 2), (→, 2), (↔, 2)} (Baumstruktur) I Menge der vorkommenden Variablen Semantik: I Belegungen W : P → {0, 1} I Menge (P) = {W : P → {0, 1}} = 2P aller Belegungen I Wert W (ϕ) einer Formel ϕ ∈ AL(P) unter einer Belegung W : P → {0, 1} I Modelle von Formeln, Mod(ϕ) I Semantik einer Formel: Boolesche Funktion W I I I I (Un-)Erfüllbarkeit, Allgemeingültigkeit Äquivalenz von Formeln äquivalente Umformungen von Formeln Normalformen 180 Zusammenhang: logische Junktoren – Mengenoperationen zur Erinnerung: Mod(ϕ) = {W : P −→ {0, 1} | W (ϕ) = 1} Fakt Für alle Formeln ϕ, ψ ∈ AL(P) gilt Mod(¬ϕ) = W(P) \ Mod(ϕ) (1) Mod(ϕ ∨ ψ) = Mod(ϕ) ∪ Mod(ψ) (2) Mod(ϕ ∧ ψ) = Mod(ϕ) ∩ Mod(ψ) (3) 181 Wiederholung: Modelle von Formelmengen Menge aller Modelle einer Menge Φ ⊆ AL(P) von Formeln: ^ \ ϕ Mod(Φ) = Mod(ϕ) = Mod ϕ∈Φ ϕ∈Φ (Eine Belegung W : P −→ {0, 1} ist genau dann Modell für eine Menge Φ ⊆ AL(P) von Formeln, wenn W Modell für jede Formel ϕ ∈ Φ ist.) Beispiele: I Mod({p, p → q}) = {W11 } I Mod(∅) = {W : P → {0, 1}} (Jede Belegung ist ein Modell für die Formelmenge ∅.) I Beschreibung einer Situation (Menge von Aussagen): I I Anna geht zur Party, wenn Tom oder Paul hingehen. Tom geht zur Party, wenn Paul nicht hingeht. als Formelmenge: Φ = {(T ∨ P) → A, ¬P → T } Mod(Φ) = . . . 182 Modellierung durch aussagenlogische Formelmengen Aussagen: 1. Es wird nicht mehr viel Eis gekauft, wenn es kalt ist. 2. Der Eisverkäufer ist traurig, wenn nicht viel Eis gekauft wird. 3. Es ist kalt. Darstellung als Formelmenge Φ ⊆ AL({k , t, v }): Φ = {k → ¬v , ¬v → t, k } Menge aller Modelle von Φ: Mod(Φ) = . . . neue zusätzliche Aussage: 4. Der Eisverkäufer ist nicht traurig. Erweiterung der Formelmenge Φ zu Φ0 = Φ ∩ {¬t} = {k → ¬v , ¬v → t, k , ¬t} Menge aller Modelle von Φ0 : Mod(Φ0 ) = . . . Fakt Für alle Formelmengen Φ, Ψ ⊆ AL(P) gilt: Aus Φ ⊆ Ψ folgt Mod(Φ) ⊇ Mod(Ψ). 183 Semantisches Folgern Definition Eine Formel ψ ∈ AL(P) heißt (semantische) Folgerung aus der Menge Φ ⊆ AL(P) von Formeln (Φ |= ψ), falls Mod(Φ) ⊆ Mod(ψ) gilt. Beispiele: I {p, p → q} |= q I {p, ¬(q ∧ p)} |= ¬q I {p} |= q → p I ∅ |= p ∨ ¬p Folgerungsrelation: zweistellige Relation |= ⊆ 2AL(P) × AL(P) Spezialfälle der Notation: für Φ = {ϕ}: ϕ |= ψ (statt {ϕ} |= ψ) für Φ = ∅: |= ψ (statt ∅ |= ψ) 184 Modellierungsbeispiel Party Beschreibung der Situation (Menge von Aussagen): I Anna geht zur Party, wenn Tom oder Paul hingehen. I Tom geht zur Party, wenn Paul nicht hingeht. Folgt aus diesen Aussagen, dass Anna die Party besucht? Modellierung der Aussagen: Φ = {(T ∨ P) → A, ¬P → T } Modellierung der Frage: I Formulierung als Behauptung (Aussage): ψ = A I Frage umformuliert: Gilt Φ |= ψ ? 185 Sätze über das Folgern I Für endliche Formelmengen Φ = {ϕ1 , . . . , ϕn } gilt Φ |= ψ gdw. n ^ ϕi |= ψ i=1 I |= ϕ gdw. ϕ allgemeingültig ist. I Zwei Formeln ϕ und ψ sind genau dann äquivalent (ϕ ≡ ψ), wenn ϕ |= ψ und ψ |= ϕ gilt. Für jede Formelmenge Φ ⊆ AL(P) und jede Formel ψ ∈ AL(P) gilt: I falls ψ ∈ Φ, dann gilt Φ |= ψ. I Φ |= ψ gdw. Mod(Φ) = Mod(Φ ∪ {ψ}) I Φ |= ψ gdw. Φ ∪ {¬ψ} unerfüllbar I Φ |= ψ gdw. Φ ∪ {¬ψ} |= f 186 Was bisher geschah (klassische Aussagenlogik) Syntax: I AL(P) = Term(ΣF , P) mit der Signatur ΣF = {(t, 0), (f, 0), (¬, 1), (∨, 2), (∧, 2), (→, 2), (↔, 2)} ∪{(p, 0) | p ∈ P} (Baumstruktur) I Menge der vorkommenden Variablen Semantik: I Belegungen W : P → {0, 1} I Menge (P) = {W : P → {0, 1}} = 2P aller Belegungen I Wert W (ϕ) einer Formel ϕ ∈ AL(P) unter einer Belegung W : P → {0, 1} I Modelle von Formeln, W ∈ Mod(ϕ) gdw. W (ϕ) = 1 I Semantik einer Formel ϕ: Modellmenge Mod(ϕ) für ϕ ∈ AL(P): Mod(ϕ) beschreibt Boolesche Funktion W 187 Was bisher geschah (Logiken allgemein) I (Un-)Erfüllbarkeit, Allgemeingültigkeit I I I ϕ unerfüllbar gdw. Mod(ϕ) = ∅ ϕ erfüllbar gdw. Mod(ϕ) 6= ∅ ϕ allgemeingültg gdw. Mod(ϕ) = Menge aller Interpretationen für ϕ I Äquivalenz von Formeln ≡ ⊆ AL(P) × AL(P), wobei ϕ ≡ ψ gdw. Mod(ϕ) = Mod(ψ) I Semantische Folgerung |= ⊆ 2AL(P) × AL(P), wobei Φ |= ψ gdw. Mod(Φ) ⊆ Mod(ψ) 188 Typische Fragen für Formeln und Formelmengen gegeben: Formelmenge Φ ⊆ AL(P) (oder Formel ϕ ∈ AL(P)) Frage: ... Antwort: ja / nein (Wahrheitswert), evtl. mit Begründung Frage beim Erfüllbarkeitsproblem : Ist Φ erfüllbar? Gültigkeitsproblem : Ist Φ allgemeingültig? (effiziente) maschinelle Lösungsverfahren erwünscht Diese Fragen sind für alle Logiken interessant. (AL(P) dient hier nur als Beispiel.) 189 Darstellung der Eingaben als Wörter Wiederholung: Jede endliche Formelmenge Φ V ⊆ AL(P) hat dieselbe Semantik (Modellmenge) wie die Formel ϕ∈Φ ϕ ∈ AL(P). Dies ermöglicht die Darstellung jeder Eingabe als Wort über dem Alphabet A = P ∪ {¬, ∨, ∧, →, (, )}: I Jede Formel ϕ ∈ AL(P) ist ein Wort ∈ A∗ I Darstellung Vendlicher Formelmengen Φ ⊆ AL(P) als ∗ Formeln ϕ∈Φ ϕ ∈ AL(P), also auch als Wort ∈ A Menge aller möglichen (syntaktisch korrekten) Eingaben ist eine Sprache ⊆ A∗ (nämlich genau AL(P)). Lässt sich diese Sprache durch eine Grammatik erzeugen? Wenn ja, welchen Chomsky-Typ hat diese Sprache? 190 Darstellung der Probleme als formale Sprachen Darstellung der Probleme als formale Sprachen (Mengen von Wörtern): Erfüllbarkeitsproblem : E = {ϕ ∈ AL(P) | ϕ erfüllbar} ⊆ AL(P) Gültigkeitsproblem : A = {ϕ ∈ AL(P) | ϕ allgemeingültig} ⊆ AL(P) Erfüllbarkeits- bzw. Gültigkeitsproblem sind Wortprobleme: ? Erfüllbarkeitsproblem : ϕ ∈ E ? Gültigkeitsproblem : ϕ ∈ A 191 Folgerungsproblem gegeben: Paar (Φ, ψ) mit Formelmenge Φ ⊆ AL(P) und Formel ψ ∈ AL(P) Frage: Gilt Φ |= ψ Antwort: ja / nein (Wahrheitswert), evtl. mit Begründung Wiederholung: Endliche Formelmenge Φ ⊆ AL(P) V hat dieselbe Semantik (Modellmenge) wie die Formel ϕ∈Φ ϕ. Folgerungsproblem als formale Sprache: n o F = (Φ, ψ) ∈ 2AL(P) × AL(P) | Φ |= ψ ^ ^ ¬ψ ∧ = ϕ ∈ AL(P) | ¬ψ ∧ ϕ unerfüllbar ϕ∈Φ ϕ∈Φ 192 Zusammenhänge zwischen Erfüllbarkeits-, Allgemeingültigkeits- und Folgerungsproblemen Erfüllbarkeits-, Gültigkeits- und Folgerungsproblem sind aufeinander reduzierbar (ineinander übersetzbar): ? Erfüllbarkeitsproblem ϕ ∈ E (Ist ϕ erfüllbar?) äquivalentes Folgerungsproblem: ϕ ∈ E gdw. (ϕ, f) 6∈ F (ϕ 6|= f) ? Allgemeingültigkeitsproblem ϕ ∈ A (Ist ϕ allgemeingültig?) äquivalentes Erfüllbarkeitsproblem: ϕ ∈ A gdw. ¬ϕ 6∈ E (¬ϕ unerfüllbar) äquivalentes Folgerungsproblem: ϕ ∈ E gdw. (t, ϕ) ∈ F (|= ϕ) ? Folgerungsproblem (Φ, ψ) ∈ F (Gilt Φ |= ψ ?) äquivalentes Erfüllbarkeitsproblem: V (Φ, ψ) ∈ F gdw. ¬ψ ∧ ϕ∈Φ 6∈ E V (¬ψ ∧ ϕ∈Φ unerfüllbar) Hat man ein Lösungsverfahren für eins dieser Probleme, dann kann man damit auch die beiden anderen Probleme lösen. 193 Syntaktisches Ableiten – Ziel gegeben: Formelmenge Φ Formel ψ Frage : Gilt Φ |= ψ ? Ziel: Verfahren zur Beantwortung dieser Frage durch syntaktische Operationen (ohne Verwendung der Semantik, Modellmengen) Syntaktische Ableitungsrelation ` ⊆ 2AL(P) × AL(P) passend zur semantischen Folgerungsrelation |= ⊆ 2AL(P) × AL(P) ` passt zu |= gdw. für jede Formelmenge Φ ∈ AL(P) und jede Formel ψ ∈ AL(P): Φ`ψ gdw. Φ |= ψ 194 Kalküle – Motivation Formale Methode zur schrittweisen syntaktischen Ableitung von sematischen Folgerungen (Formeln) aus einer Menge von Formeln (Hypothesen) Definition von Schlussregeln zur syntaktischen Ableitung von Folgerungen aus Formelmengen (Hypothesen) oft mehrere Voraussetzungen und eine Folgerung (analog Spielregeln, Grammatik-Regeln) Ableitungen : geeignete Kombinationen von Schlussregeln (Baumstruktur) 195 Kalküle - Definition Kalkül Menge von Axiomenschemata , d.h. Schema für Formeln, deren Gültigkeit vorausgesetzt wird, Regelschemata zur syntaktischen Ableitung weiterer gültiger Formeln aus Formelmengen (Axiomen und Hypothesen) häufige Darstellung von Regelschemata: ··· An B I Voraussetzungen (oben): A1 , . . . , An I Folgerung (unten): B Beispiel: Regelschema (Modus Ponens) mit Variablen A, B für Formeln A1 A A → B (MP) B 196 Kalküle - Instanziierung Variablen in Axiomenschemata und Regelschemata müssen vor der Anwendung instanziiert (durch Formeln substituiert) werden. Axiom: instanziiertes Axiomenschema Schlussregel: instanziiertes Regelschema Beispiel: A A → B (MP) B mit Instanziierung A 7→ (p → q), B 7→ ¬q p→q (p → q) → (¬q) (MP) ¬q 197 Ableitungen in Kalkülen gegeben: Kalkül K = (A, R), Formelmenge Φ (Hypothesen, Annahmen) Definition (induktiv): Ableitung der Formel ψ aus Φ in K IA: Ist ψ eine Hypothese (also ψ ∈ Φ) oder ein Axiom (instanziiertes Axiomenschema), dann ist ψ eine Ableitung für ψ aus Φ in K . IS: Sind ϕ1 ··· ψ ϕn eine Schlussregel in K und B1 , . . . , Bn Ableitungen für ϕ1 , . . . , ϕn aus Φ in K , dann ist B1 ··· ψ Bn eine Ableitung für ψ aus Φ in K . 198 Vollständigkeit und Korrekheit von Kalkülen Ableitbarkeit von Formeln aus Formelmengen im Kalkül K : Syntax: Sequenz ϕ1 , . . . , ϕn `K ψ Semantik: Es gibt eine Ableitung von ψ aus der Formelmenge {ϕ1 , . . . , ϕn } im Kalkül K . Ein Kalkül K ist nur dann sinnvoll, wenn gilt: Korrektheit: Aus ϕ1 , . . . , ϕn `K ψ folgt {ϕ1 , . . . , ϕn } |= ψ. Vollständigkeit: Aus {ϕ1 , . . . , ϕn } |= ψ folgt ϕ1 , . . . , ϕn `K ψ. Nachweis über induktiven Aufbau der Ableitungen möglich: IA: Jedes Axiom in K ist eine allgemeingültige Formel. IS: Für jede Schlussregel ϕ1 ··· ψ in K gilt {ϕ1 , . . . , ϕn } |= ψ ϕn 199 Beweise in Kalkülen Möglichkeiten zum Nachweis der Allgemeingültigkeit einer Formel ψ: semantisch: I I syntaktisch: I I Spezialfall Φ = ∅: ψ allgemeingültig WW-Tabellen, Modellmengen Nachweis, dass ∅ |= ψ (|= ψ) äquivalente Umformung von t zu ψ (oder von ψ zu t), Nachweis von ∅ `K ψ (`K ψ) in einem vollständigen und korrekten Kalkül K gdw. |= ψ gdw. `K ψ Beweis für (Allgemeingültigkeit von) ψ in K : Ableitung von ψ aus ∅ in K 200 Beispiel: Kalkül des natürlichen Schließens (Gerhard Gentzen, 1935) Idee: formale Beschreibung des menschlichen Vorgehens beim logischen Schließen und Beweisen Für jeden Junktor ∗ I eine Einführungsregel (∗I) Junktor in der Folgerung (unten), aber in keiner Voraussetzung (oben) des Regelschemas, I eine Eliminierungsregel (∗E) Junktor in einer Voraussetzung (oben), aber nicht in der Folgerung (unten) des Regelschemas, Beispiel: Modus Ponens eliminiert → A A → B (→E) B 201 Kalkül des natürlichen Schließens: Regeln für ∧ A B (∧I) A∧B A ∧ B (∧E) A A ∧ B (∧E) B Schlussregeln korrekt, weil ∀ϕ, ψ: {ϕ, ψ} |= ϕ ∧ ψ {ϕ ∧ ψ} |= ϕ {ϕ ∧ ψ} |= ψ Beispiel: Ableitung für p ∧ q, r `N q ∧ r p∧q (∧E) q q∧r r (∧I) (∧I) Um A ∧ B abzuleiten, muss man sowohl A als auch B ableiten. (∧E) Falls A ∧ B schon abgeleitet wurde, lassen sich daraus auch A und B ableiten. 202 Kalkül des natürlichen Schließens: Regeln für ¬¬ A (¬¬I) ¬¬A ¬¬A (¬¬E) A Schlussregeln korrekt , weil ∀ϕ: {ϕ} |= ¬¬ϕ {¬¬ϕ} |= ϕ Beispiel: Ableitung für p, ¬¬(q ∧ r ) `N ¬¬p ∧ r (Tafel) (¬¬I) Um ¬¬A abzuleiten, muss man A ableiten. (¬¬E) Falls ¬¬A schon abgeleitet wurde, lässt sich daraus auch A ableiten. 203 Kalkül des natürlichen Schließens: Regeln für ∨ A (∨I) A∨B B (∨I) A∨B A∨B [A] .. . C C [B] .. . C (∨E) Schlussregeln korrekt, weil ∀ϕ, ψ, η: {ϕ} |= ϕ∨ψ {ψ} |= ϕ∨ψ {ϕ∨ψ, ϕ → η, ψ → η} |= η Beispiel: Ableitung für p ∨ q `N q ∨ p (Tafel) (∨I) Um A ∨ B abzuleiten, genügt es, eine der Aussagen A oder B ableiten. (∨E) (Fallunterscheidung) Wenn man A ∨ B schon abgeleitet hat und C ableiten möchte, kann man für die Bedingungen A und B einzeln zeigen, dass C unter dieser Bedingung gilt. 204 Kalkül des natürlichen Schließens: Regeln für → [A] .. . B (→I) A→B A A → B (→E) B Schlussregeln korrekt, weil ∀ϕ, ψ: {ϕ → ψ} |= ϕ → ψ {ϕ, ϕ → ψ} |= ψ Beispiel: Ableitung für (p ∧ q) → r `N p → (q → r ) (Tafel) (→I) A → B lässt sich ableiten, indem man zeigt, dass sich B ableiten lässt, wenn A als Annahme hinzugefügt wird. (→E) Modus Ponens 205 Kalkül des natürlichen Schließens: Regeln für ¬ [A] .. . f (¬I) ¬A A f ¬A (¬E) f (fE) A Schlussregeln korrekt, weil ∀ϕ: ϕ → f |= ¬ϕ {ϕ, ¬ϕ} |= f f |= ϕ Beispiel: Ableitung für (p ∧ q) → r `N p → (q → r ) (Tafel) (¬I) ¬A lässt sich ableiten, indem man zeigt, dass sich f ableiten lässt, wenn A angenommen wird. (Spezialfall A = ¬ϕ: Beweis durch Widerspruch) (¬E) Falls A und ¬A schon abgeleitet wurde, lässt sich daraus f ableiten. 206 Was bisher geschah Wiederholung: klassische Aussagenlogik I Syntax: AL(P) = Term(ΣF , P) mit der Signatur ΣF = {(t, 0), (f, 0), (¬, 1), (∨, 2), (∧, 2), (→, 2), (↔, 2)} ∪{(p, 0) | p ∈ P} I Semantik: Modellmenge Mod(ϕ) ⊆ {W : P → {0, 1}}, WW-Tabelle, Boolesche Funktion I Äquivalenz von Formeln ϕ ≡ ψ I Semantisches Folgern Φ |= ψ I Darstellung von Erfüllbarkeits-, Gültigkeits- und Folgerungsproblem als formale Sprachen I Syntaktisches Schließen Φ `K ψ I Kalkül des natürlichen Schließens 207 Modellierung in Aussagenlogik – Beispiel I Wenn der Zug zu spät kommt und kein Taxi am Bahnhof steht, ist Tom nicht pünktlich. I Der Zug kam zu spät und Tom ist pünktlich. Frage: Stand ein Taxi am Bahnhof? Modellierung der Aussagen: Φ = {(z ∧ ¬t) → ¬p, z ∧ p} Modellierung der Frage (als Behauptung): ψ = t Folgerungsproblem (Φ, ψ) ∈ F (Gilt Φ |= ψ ? ) Lösungsansätze semantisch: WW-Tabellen, Bestimmung der Modellmengen syntaktisch: Ableitung Φ `N t 208 Typische praktische Probleme kombinatorische Probleme, z.B. Planungsprobleme (Registerzuweisung, Zeitplanung), Graphfärbung I Verifikation digitaler Schaltungen: I gegeben: Schaltung: (Ausgabe-Verhalten als boolesche Funktion, Formel ϕ) Spezifikation (logische Formel ψ) Frage: Erfüllt die Schaltung die Spezifikation? (Folgt ψ aus ϕ?) Gegenbeispiel bei negativer Antwort: Belegung W : P → {0, 1} mit W (ϕ ∧ ¬ψ) = 1 I Verifikation von Programmen: gegeben: Programm (Ausgabe-Verhalten als Formelmenge Φ) Spezifikation (logische Formel ψ) Frage: Erfüllt das Programm die Spezifikation? (Folgt ψ aus Φ?) Gegenbeispiel bei negativer Antwort: Belegung W : P → {0, 1} mit W ∈ Mod(Φ ∪ {¬ψ}) 209 DNF-SAT Problem DNF-SAT: W Vki gegeben: DNF ϕ = m i=1 j=1 li,j Frage: Ist ϕ erfüllbar? Lösungsidee: I ϕ ist genau dann erfüllbar, wenn (wenigstens) eine der m Vi Konjunktionen kj=1 li,j erfüllbar ist. Vki I Konjunktion j=1 li,j ist genau dann unerfüllbar, wenn für eine Aussagenvariable x ∈ var(ϕ) gilt: {x, ¬x} ⊆ {li,j | j ∈ {1, . . . , ki }} (Widerspruch). W Vki Lösungsverfahren: ϕ = m i=1 j=1 li,j ist genau dann Vi erfüllbar , wenn eine der m Konjunktionen kj=1 li,j widerspruchsfrei ist, unerfüllbar , wenn alle m Konjunktionen einen Widerspruch enthalten. Problem DNF-SAT ist einfach (schnell) zu lösen. 210 CNF-SAT Problem CNF-SAT: V Wki gegeben: CNF ϕ = m i=1 j=1 li,j Frage: Ist ϕ erfüllbar? Lösungsansätze: I Test aller möglichen Belegungen (aufwendig) für große Anzahl an Aussagenvariablen ineffizient I Umformung in eine zu ϕ äquivalente DNF ψ (aufwendig) Test von ψ auf Erfüllbarkeit (einfach) für große Anzahl an Aussagenvariablen ineffizient Konstruktion einer Formel ψ mit I 1. ψ und ϕ erfüllbarkeitsäquivalent (also ψ erfüllbar gdw. ϕ erfüllbar) und 2. Erfüllbarkeit für ψ einfach zu testen Problem CNF-SAT ist schwierig (zeitaufwendig) zu lösen. 211 Erfüllbarkeitsäquivalenz Definition Zwei Formeln ϕ, ψ heißen erfüllbarkeitsäquivalent, wenn gilt: ϕ ist genau dann erfüllbar, wenn ψ erfüllbar ist. Achtung: Erfüllbarkeitsäquivalenz ist schwächer als semantische Äquivalenz. Beispiel: p ∨ q und r sind erfüllbarkeitsäquivalent, aber nicht äquivalent. Erfüllbarkeitsäquivalenz bleibt beim Einsetzen in Formeln nicht erhalten. Beispiel: p und q sind erfüllbarkeitsäquivalent, aber p ∧ ¬p und p ∧ ¬q nicht. 212 Spezialfall 2-SAT 2-CNF: Formel der Form ϕ= ki m _ ^ li,j mit ∀i ∈ {1, . . . , m} : ki ≤ 2 i=1 j=1 Problem 2-SAT: gegeben: 2-CNF ϕ Frage: Ist ϕ erfüllbar? Problem 2-SAT ist einfach (schnell) zu lösen. (Lösung als Graphproblem) Aber: Nicht zu jeder Formel ϕ ∈ AL(P) existiert eine erfüllbarkeitsäquivalente 2-CNF. 213 3-CNF 3-CNF: Formel der Form ϕ= ki m _ ^ li,j mit ∀i ∈ {1, . . . , m} : ki ≤ 3 i=1 j=1 Satz Zu jeder Formel ϕ ∈ AL(P) existiert eine erfüllbarkeitsäquivalente 3-CNF ψ. gegeben: CNF ϕ Wk Konstruktion von ψ durch Ersetzen jeder Konjunktion j=1 lj durch (l1 ∨ q1 ) ∧ k^ −1 (¬qh−1 ∨ lh ∨ qh ) ∧ (¬qk −1 ∨ lk −1 ∨ lk ) h=2 mit neuen Aussagevariablen {q1 , . . . , qn } (für Teilformeln) Beispiel: (a ∨ b ∨ c ∨ d) erfüllbarkeitsäquivalent zu (a ∨ q1 ) ∧ (¬q1 ∨ b ∨ q2 ) ∧ (¬q2 ∨ c ∨ d) 214 Spezialfall 3-SAT Problem 3-SAT: gegeben: 3-CNF ϕ Frage: Ist ϕ erfüllbar? Problem 3-SAT ist schwierig zu lösen. (genauso aufwendig wie CNF-SAT) 215 SAT-Solver SAT-Solver: Werkzeug zum Lösen von CNF-SAT-Instanzen Problem CNF-SAT schwierig (in ungünstigen Fällen) SAT-Solver I benutzen heuristische Verfahren, I finden für praktische Probleme oft schnell eine Lösung, I meist Ausgabe einer erfüllenden Belegung möglich (wenn eine existiert) aktive Forschung auf diesem Gebiet: jährlich Wettbewerbe (www.satcompetition.org) typische Anwendung von SAT-Solvern: 1. Modellierung des ursprünglichen Problems P als CNF-SAT-Instanz P 0 (Darstellung als CNF ϕ) 2. Lösung von P 0 mit SAT-Solver 3. Übersetzung erfüllender Belegung für ϕ in Lösung für P 216 Modellierungsbeispiel: n-Damen Frage: Lassen sich n Damen so auf einem n × n-Schachbrett anordnen, dass keine Dame eine andere bedroht? Lösung: Anordnung, falls möglich Bedingungen: I n Damen auf dem Feld I keine Zeilenbedrohung I keine Spaltenbedrohung I keine diagonale Bedrohung 217 Repräsentation des 3-Damen-Problems 9 Felder – Aussagenvariablen {x1 , . . . , x9 } Bedingungen: I I I I n Damen auf dem Feld, (in jeder Zeile eine Dame) x1 ∨ x2 ∨ x3 , x4 ∨ x5 ∨ x6 , x7 ∨ x8 ∨ x9 keine Zeilenbedrohung x1 → ¬x2 , x4 → ¬x5 , x7 → ¬x8 , x1 → ¬x3 , x4 → ¬x6 , x7 → ¬x9 , x2 → ¬x3 x5 → ¬x6 x8 → ¬x9 keine Spaltenbedrohung x1 → ¬x4 , x2 → ¬x5 , x3 → ¬x6 , x1 → ¬x7 , x2 → ¬x8 , x3 → ¬x9 , x4 → ¬x7 x5 → ¬x8 x6 → ¬x9 keine diagonale Bedrohung x1 → ¬x5 , x1 → ¬x9 , x2 → ¬x6 , x3 → ¬x5 , x3 → ¬x7 , x2 → ¬x4 , x5 x4 x5 x6 → ¬x9 → ¬x8 → ¬x7 → ¬x8 Lösung: Modell (erfüllende Belegung) 218 Lösung mit SAT-Solver DIMACS-Format für CNF (ASCII): erste Zeile enthält Typ (cnf), Anzahl der Klauseln und Aussagenvariablen (z.B. p cnf 5 3) I Aussagenvariablen {1, . . . , n} I jede Klausel eine Zeile, - statt ¬, Literale durch Leerzeichen getrennt, 0 markiert Ende der Klausel I 3-Damen-Problem hat keine Lösung (unerfüllbar) eine Lösung für das 4-Damen-Problem: ¬1 ∧ ¬2 ∧ 3 ∧ ¬4 ∧5 ∧ ¬6 ∧ ¬7 ∧ ¬8 ∧ ¬9 ∧¬10 ∧ ¬11 ∧ 12 ∧¬13 ∧ 14 ∧ ¬15 ∧ ¬16 × × × × typische Anwendungen für SAT-Solver: Schaltkreisverifikation Model-Checking I Planen I Constraint-Lösen I kombinatorische Suchprobleme, z.B. Sudoku I I 219 Zusammenfassung klassische Aussagenlogik Syntax: AL(P) = Term(ΣF , P) mit der Signatur ΣF = {(t, 0), (f, 0), (¬, 1), (∨, 2), (∧, 2), (→, 2), (↔, 2)} ∪ {(p, 0) | p ∈ P} Semantik: Modellmenge Mod(ϕ) ⊆ {W : P → {0, 1}}, WW-Tabelle, Boolesche Funktion semantische Äquivalenz von Formeln ϕ ≡ ψ Semantisches Folgern Φ |= ψ I Syntaktisches Ableiten Φ `N ψ, Kalküle (Kalkül des natürlichen Schließens) I Anwendungen: I Erfüllbarkeitsprobleme, z.B. kombinatorische Suche: n-Damen, Planen I Allgemeingültigkeitsprobleme, z.B. Schaltungsentwurf I Unerfüllbarkeitsprobleme, z.B. Hardware-Verifikation (Nachweis der Korrektkeit) I Folgerungsprobleme, z.B. automatisches Beweisen Darstellung als formale Sprachen, Wortprobleme I CNF und SAT-Solver I I 220 Algorithmische Entscheidbarkeit der Aussagenlogik Es existieren Verfahren, welche I für jede Formel ϕ ∈ AL(P) entscheiden, ob I ϕ erfüllbar ist, z.B. semantisch Modellmengen, WW-Tabelle I ϕ unerfüllbar ist, z.B. semantisch Modellmengen, WW-Tabelle syntaktisch Ableitung für ϕ `K f, äquivalente Umformung von ϕ zu f, I ϕ allgemeingültig ist, z.B. semantisch Modellmengen, WW-Tabelle syntaktisch Ableitung für `K ϕ, äquivalente Umformung zu ϕ ≡ t, I für jedes Paar von Formeln ϕ, ψ ∈ AL(P) entscheiden, ob ϕ ≡ ψ semantisch Modellmengen, WW-Tabelle syntaktisch äquivalente Umformungen I für jede Formelmenge Φ ⊆ AL(P) und jede Formel ψ ∈ AL(P) entscheiden, ob Φ |= ψ (ob ψ aus Φ folgt) semantisch Modellmengen, WW-Tabelle V syntaktisch Ableitung für Φ `K ψ, Umformung ¬ψ ∧ ϕ∈Φ ϕ ≡ f 221 Beschränkte Ausdrucksstärke der Aussagenlogik I Aussagen immer zweiwertig (nur wahr oder falsch, keine Zwischenwerte), z.B.: Die Rose ist rot. Das Bier ist kalt. Der Student ist fleißig. (Erweiterung zu mehrwertigen Logiken, fuzzy logic) I Aussagen immer absolut (keine Abhängigkeit vom Kontext, z.B. Ort, Zeitpunkt), z.B.: Es regnet. x > 3 (Erweiterung zur Modal- und Temporallogiken) I Aussagen über alle Elemente „großer“ Mengen aufwendig (Erstellung, Platzbedarf), z.B. n-Damen-Problem I keine Aussagen über Elemente einer unendlichen Mengen oder Mengen unbestimmter Mächtigkeit möglich, z.B. I Jede durch 4 teilbare Zahl ist gerade. I In jedem zusammenhängenden Graphen mit ≥ 2 Knoten hat jeder Knoten einen Nachbarn. I Es ist nicht alles Gold was glänzt. (Erweiterung zur Prädikatenlogik) 222 Modellierung in Prädikatenlogik Grundannahme: Die zu modellierende Welt besteht aus Individuen, die Eigenschaften haben und zueinander in Beziehungen (Relationen, Funktionen) stehen. Prädikatenlogik zur Formalisierung von Aussagen über Eigenschaften oder Beziehungen von Individuen aus algebraischen Strukturen 223 Prädikatenlogische Aussagen – Beispiele Personen sind genau dann Geschwister, wenn sie dieselbe Mutter oder denselben Vater haben. I A ist genau dann Nachfahre von B, wenn B A’s Vater oder A’s Mutter ist oder ein Elternteil von A Nachfahre von B ist. I Nachfahren derselben Person sind verwandt. Individuenbereich: Menge von Personen Beziehungen: Nachfahre, verwandt, Geschwister Funktionen: Mutter, Vater I Primzahlen sind genau diejenigen natürlichen Zahlen, die genau zwei verschiedene Teiler haben. I Gerade Zahlen sind genau diejenigen natürlichen Zahlen, die durch 2 teilbar sind. I Es existieren gerade Primzahlen. I Nachfolger ungerader Primzahlen sind nicht prim. I Das Quadrat jeder geraden Zahl ist gerade. Individuenbereich: Menge aller natürlichen Zahlen Eigenschaft: prim, gerade Beziehung: teilt Funktion: Nachfolger, Quadrat I N 224 Signaturen und Terme (Wiederholung) Syntax: Signatur Σ = (ΣF , ΣR ), Menge von Variablen Terme Term(Σ, ) (nur ΣF relevant), Grundterme Term(Σ, ∅) X X Semantik: I I I I I Σ-Struktur A = (A, J·KA ): I nichtleere Trägermenge A I für jedes (f , n) ∈ Σ eine Funktion Jf KA : An → A F n I für jedes (R, n) ∈ Σ eine Relation JRK A ⊆A R Σ-Interpretation (A, α) mit Σ-Struktur A = (A, J·KA ) und Belegung der Individuenvariablen α : X→A Wert JtKA des Grundtermes t ∈ Term(Σ, ∅) in Σ-Struktur A, Äquivalenz von Grundtermen s, t ∈ Term(Σ, ∅) in Struktur A: s ≡A t gdw. JsKA = JtKA Wert JtK(A,α) des Termes t ∈ Term(Σ, (A, α) X) in Σ-Interpretation 225 Beispiele (Wiederholung) Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)}, Variablenmenge = {x, y } Σ-Struktur S = (S, J·KS ) mit X S = {0, 1, 2} JaKS = 1 JPKS = {0, 2} für alle d ∈ S: Jf KS (d) = 2 − d JRKS = {(1, 0), (1, 2), (2, 2)} Belegung β : {x, y } → {0, 1, 2}: β(x) = 0, β(y ) = 1 Werte der folgenden Terme aus Term(Σ, ) in der Interpretation (S, β): JaK(S,β) = . . ., Jy K(S,β) = . . ., Jf (a)K(S,β) = . . ., Jf (f (x))K(S,β) = . . . f (f (a)) ≡S f (a) ≡S a X 226 Atome (elementare Aussagen) Aussagenlogik : Aussagenvariable, bekommt festen Wahrheitswert durch Belegung Prädikatenlogik : (parametrisierte) Aussage über Eigenschaften von oder Beziehungen zwischen Individuen Wahrheitswert abhängig von beteiligten Individuen z.B. nebeneinander(x, y ),gerade(n) , x < 3, x < y , geschwister(x, mutter(y )) 227 Atome – Syntax Atom elementare Formel, repräsentiert Eigenschaften von oder Beziehungen zwischen Individuen Signatur Σ = (ΣF , ΣR ) mit I Menge ΣF von Funktionssymbolen mit Stelligkeit (f , n) I Menge ΣR von Relationssymbolen mit Stelligkeit (R, n) Definition Menge aller Σ-Atome mit Variablen aus der Menge Atom(Σ, X: X) = {R(t1 , . . . , tn ) | (R, n) ∈ ΣR und t1 , . . . , tn ∈ Term(ΣF , X)} Atome ohne Individuenvariablen heißen Grundatome. Menge aller Grundatome: Atom(Σ, ∅) 228 Atome – Beispiele I Signatur Σ = (ΣF , ΣR√) mit ΣF = {(1, 0), (2, 0), ( , 1), (+, 2)} ΣR = {(=, 2), (≤, 2)} Variablenmenge = {x, y , z} X I I I I X X √ √ √x = 2 ∈ Atom(Σ, ) ) (aber x + 2 ∈ Term(ΣF , px + 2√ 6∈ Atom(Σ, p√ 1+ 2≤ 2 ∈ Atom(Σ, ∅) X)) Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (b, 0), (k , 2), (d, 2)} ΣR = {(P, 1), (Q, 2)} Variablenmenge = {x, y } X I I I I I X y 6∈ Atom(Σ, ) P(x) ∈ Atom(Σ, ) P(a) ∈ Atom(Σ, ∅) P(Q(P(a), k (x, y ))) 6∈ Atom(Σ, ) Q(k (a, d(y , a)), x) ∈ Atom(Σ, ) X X X 229 Atome – Semantik X Signatur Σ = (ΣF , ΣR ), Variablenmenge Menge Atom(Σ, ) aller Atome mit Variablen aus Σ-Interpretation (A, α) mit X I X Σ-Struktur A = (A, J·KA ) X→A Wert des Atomes a = P(t1 , . . . , tn ) ∈ Atom(Σ, X) in der Interpretation I Belegung der Individuenvariablen α : (A, α): JaK(A,α) = JP(t1 , . . . , tn )K(A,α) = JPKA Jt1 K(A,α) , . . . , Jtn K(A,α) 1 falls Jt1 K(A,α) , . . . , Jtn K(A,α) ∈ JPKA = 0 sonst (Spezialfall Atom a mit (a, 0) ∈ ΣF : JaK(A,α) = JaKA ) Der Wert eines Atomes in einer Interpretation (A, α) ist ein Wahrheitswert. Der Wert von Grundatomen in einer Interpretation (A, α) hängt nicht von der Belegung α ab. 230 Semantik von Atomen – Beispiele Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)}, Variablenmenge = {x, y } Σ-Struktur S = (S, J·KS ) mit X S = {0, 1, 2} JaKS = 1 JPKS = {0, 2} für alle d ∈ S: Jf KS (d) = 2 − d JRKS = {(1, 0), (1, 2), (2, 2)} Belegung β : {x, y } → {0, 1, 2}: β(x) = 0, β(y ) = 1 Wert der folgenden Atome aus Atom(Σ, ) in der Interpretation (S, β) (Tafel): JP(x)K(S,β) = . . . , JP(a)K(S,β) = . . ., JP(f (a))K(S,β) = . . . , JP(f (f (x)))K(S,β) = . . ., JR(x, a)K(S,β) = . . ., JR(f (y ), x)K(S,β) = . . . X 231 Prädikatenlogik (der ersten Stufe) – Syntax bekannt: aussagenlogische Junktoren t, f, ¬, ∨, ∧, →, ↔ neu: Σ-Atome, Quantoren ∀, ∃ Definition (induktiv) X Die Menge FOL(Σ, ) aller Formeln der Prädikatenlogik (der ersten Stufe, first order logic) über der Signatur Σ mit (Individuen-)Variablen aus der Menge ist definiert durch: X X X IA: Atom(Σ, ) ⊆ FOL(Σ, ) (alle Atome sind Formeln) IS: I I X Aus {ϕ1 , . . . , ϕn } ⊆ FOL(Σ, ) folgt für jeden n-stelligen Junktor ∗: ∗(ϕ1 , . . . , ϕn ) ∈ FOL(Σ, ) Aus ϕ ∈ FOL(Σ, ) und x ∈ folgt {∀xϕ, ∃xϕ} ⊆ FOL(Σ, ) X X X X Baumstruktur der Formeln (analog zur Definition von Termen) FOL(Σ, ) ist eine formale Sprache (Welcher Chomsky-Typ?)) X 232 Beispiele I Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)} Variablenmenge = {x, y } Formeln aus FOL(Σ, ): X I X ϕ1 = P(f (x)) ϕ2 = (P(x) ↔ (¬P(f (x)) ∧ (∀x∃y ((P(x) ↔ P(y )) ∧ R(x, y ))))) ϕ3 = ∀x∀y ϕ2 Σ = (∅, ΣR ) mit ΣR = {(p, 0), (q, 0)}, X=∅ Formeln aus FOL(Σ, ∅): ψ1 = p∨q ψ2 = ¬p ∨ ¬(q ∨ p) (Syntax der Aussagenlogik ist Spezialfall der FOL-Syntax) 233 Variablen in Formeln Eine Individuenvariablen x ∈ X kommt vor in Term t, falls t = x oder t = f (t1 , . . . , tn ) und x in einem ti vorkommt Atom a = p(t1 , . . . , tn ), falls x in einem ti vorkommt Formel ϕ, falls x in einem Atom in ϕ (Teilformel von ϕ, die Atom ist) vorkommt. var(ϕ) Menge aller in ϕ vorkommenden Indiviuenvariablen Ein Vorkommen der Indiviuenvariablen x in ϕ heißt gebunden , falls x in einer Teilformel von ϕ der Form ∃xψ oder ∀xψ vorkommt, bvar(ϕ) Menge aller in ϕ gebundenen vorkommenden Variablen frei , sonst fvar(ϕ) Menge aller in ϕ frei vorkommenden Variablen var(ϕ) = fvar(ϕ) ∪ bvar(ϕ) gilt immer. fvar(ϕ) ∩ bvar(ϕ) 6= ∅ ist möglich. 234 Beispiele ϕ1 = R(x, a) ϕ2 = ∃xR(x, f (y , x)) bvar(ϕ1 ) = ∅, fvar(ϕ1 ) = {x} bvar(ϕ2 ) = {x}, fvar(ϕ2 ) = {y } ϕ3 = (P(x) ↔ (¬P(f (x)) ∧ (∀x∃y ((P(x) ↔ P(y )) ∧ R(x, y ))))) bvar(ϕ3 ) = {x, y }, fvar(ϕ3 ) = {x} ϕ4 = ∀x∀y ϕ3 bvar(ϕ4 ) = {x, y }, fvar(ϕ4 ) = ∅ 235 Was bisher geschah klassische Prädikatenlogik (der ersten Stufe) FOL(Σ, X) Syntax: I Wiederholung: I I I I I Signaturen Σ = (ΣF , ΣR ) Terme Term(Σ, ) X X) Formeln in FOL(Σ, X) Atome in FOL(Σ, Variablenvorkommen in einer Formel ϕ ∈ FOL(Σ, freie (fvar(ϕ)), gebundene (bvar(ϕ)) Vorkommen X): Semantik: I Wiederholung: I I I I Σ-Strukturen S = (S, J·KS ), Belegungen der Individuenvariablen, Σ-Interpretationen Wert von Termen in Σ-Interpretationen Wert von Atomen in Σ-Interpretationen 236 Modifizierte Interpretationen Signature Σ, Variablenmenge X Σ-Struktur S = (S, J·KS ) X → S der Variablen aus X in S modifizierte Belegung β[x 7→ a] : X → S mit Belegung β : β[x 7→ a](y ) = a für y = x β(y ) sonst Σ-Interpretation (S, β) mit I I Σ-Struktur S = (S, J·KS ) Variablenbelegung β : X→S modifizierte Interpretation (S, β[x 7→ a]) 237 Wert in Interpretationen Wert in Σ-Interpretation (S, β) mit S = (S, J·KS ) I I I I X: JxK(S,β) = β(x) ∈ S eines Termes t = f (t1 , . . . , tn ) ∈ Term(Σ F , X): einer Individuenvariable x ∈ JtK(S,β) = Jf KS Jt1 K(S,β) , . . . , Jtn K(S,β) ∈ S X eines Atomes a = p(t1 , . . . , tn ) ∈ Atom(Σ, ): JaK(S,β) = JpKS (Jt1 K(S,β) , . . . , Jtn K(S,β) ) ∈ {0, 1} einer Formel ϕ ∈ FOL(Σ, X): JϕK(S,β) ∈ {0, 1} J¬ϕK(S,β) = 1 − JϕK(S,β) Jϕ ∨ ψK(S,β) = max(JϕK(S,β) , JψK(S,β) ) Jϕ ∧ ψK(S,β) = min(JϕK(S,β) , JψK(S,β) ) J∃xϕK(S,β) = max{JϕK(S,β[x7→a]) | a ∈ S} J∀xϕK(S,β) = min{JϕK(S,β[x7→a]) | a ∈ S} 238 Beispiele Σ = (ΣR , ΣF ) mit ΣF = {(f , 1)},ΣR = {(R, 2)}, ϕ = ¬R(x, y ) ∧ ∃zR(z, z) I I X = {x, y , z} ψ = ∀x∃yR(x, f (y )) Σ-Struktur A = (A, J·KA ) mit A = {a, b, c} Jf KA (a) = Jf KA (b) = c, Jf KA (c) = a JRKA = {(a, a), (b, a), (a, c)} Belegung α(x) = b, α(y ) = a , α(z) = b JϕK(A,α) = . . . JψK(A,α) = . . . Z Σ-Struktur B = (B, J·KB ) mit B = Jf KB (d) = −d, JRKB =≤ Belegung β(x) = 5, β(y ) = 3, β(z) = −1, JϕK(B,β) = . . . JψK(B,β) = . . . 239 Spezialfall Aussagenlogik – Semantik Σ = (ΣF , ΣR ) mit ΣR = {(p, 0) | p ∈ P} (Aussagenvariablen) Σ-Struktur S = (S, J·KS ) definiert für jedes p ∈ P : JpKS ∈ {0, 1} (Trägermenge S irrelevant) Struktur S definiert also eine Belegung WS : P → {0, 1} der Aussagenvariablen mit Wahrheitswerten durch für alle Atome p ∈ P: WS (p) := JpKS Dann gilt auch für alle Formeln ϕ ∈ FOL(Σ, ∅) (= AL(P)): JϕKS = WS (ϕ) Beispiel: Σ = (ΣF , ΣR ) mit ΣF = ∅, ΣR = {(a, 0), (b, 0), (c, 0)} ϕ = a ∧ (¬c ∨ b) Σ-Struktur S = (S, J·KS ) mit JaKS = JcKS = 1 und JbKS = 0 WS (a) = WS (c) = 1 und WS (b) = 0 (aussagenlogischer) Wert WS (ϕ) = 0 (= JϕKS ) 240 Modelle für Formeln (analog zu Aussagenlogik) Σ-Interpretation (S, β) erfüllt (ist Modell für) die Formel ϕ ∈ FOL(Σ, ) genau dann, wenn JϕK(S,β) = 1. X X Menge aller Modelle der Formel ϕ ∈ FOL(Σ, ) S = (S, J·KS ) ist Σ-Struktur und β : Mod(ϕ) = (S, β) und JϕK(S,β) = 1 Formel ϕ ∈ FOL(Σ, X→S X) heißt erfüllbar gdw. Mod(ϕ) 6= ∅ (z.B. ∀x (P(x) ∨ Q(x))) unerfüllbar gdw. Mod(ϕ) = ∅ (z.B. ∀xP(x) ∧ ∃x¬P(x) ) allgemeingültig gdw. Mod(ϕ) = {(S, β) | S = (S, J·KS ) ist Σ-Struktur und β : X → S} (Menge aller Σ-Interpretationen) 241 Beispiele ϕ = R(x) ∧ ∃y ((¬R(y )) ∧ E(y , x)) I Struktur G = ({1, . . . , 4}, J·KG ) mit JRKG = {1, 2, 4}, JEKG = {(1, 2), (3, 2)} und Belegung α : {x, y } → {1, . . . , 4} mit α(x) = 2, α(y ) = 2 (G, α) ∈ Mod(ϕ) I Struktur H = ({a, b}, J·KH ) mit JRKH = {a}, JEKH = {(a, a), (b, b)}, Belegung β : {x, y } → {a, b} mit β(x) = a, β(y ) = a (H, β) 6∈ Mod(ϕ) I Struktur J = ( , J·KJ ) mit JRKJ = 2 (Menge aller geraden Zahlen), JEKJ = {(i, i + 1) | i ∈ } und Belegung γ : {x, y } → mit γ(x) = γ(y ) = 0 (J , γ) ∈ Mod(ϕ) Z Z Z Z 242 Semantische Äquivalenz von Formeln (analog Aussagenlogik) Für ϕ, ψ ∈ FOL(Σ, X ) gilt ϕ≡ψ gdw. Mod(ϕ) = Mod(ψ) Beispiele: I ¬∀xP(x) ≡ ∃x¬P(x) I ∀x∃yR(x, y ) 6≡ ∀x∃yR(y , x) I ∀x∃yR(x, y ) 6≡ ∃x∀yR(x, y ) 243 Wichtige Äquivalenzen mit Quantoren ¬∀xϕ ≡ ∃x¬ϕ ¬∃xϕ ≡ ∀x¬ϕ ∀xϕ ∧ ∀xψ ≡ ∀x(ϕ ∧ ψ) ∃xϕ ∨ ∃xψ ≡ ∃x(ϕ ∨ ψ) ∀x∀y ϕ = ∀y ∀xϕ ∃x∃y ϕ = ∃y ∃xϕ für x 6∈ fvar(ψ) und ∗ ∈ {∨, ∧} gilt außerdem ∀xϕ ∗ ψ ≡ ∀x(ϕ ∗ ψ) ∃xϕ ∗ ψ ≡ ∃x(ϕ ∗ ψ) ∃y ϕ ≡ ∃xϕy 7→x (gebundene Umbenennung) ∀y ϕ ≡ ∀xϕy 7→x (gebundene Umbenennung) 244 Was bisher geschah X klassische Prädikatenlogik (der ersten Stufe) FOL(Σ, ) FOL(Σ, )-Syntax: I Wiederholung: Signaturen, Terme I Atome, Formeln in FOL(Σ, ) I Variablenvorkommen in einer Formel ϕ ∈ FOL(Σ, ): frei (fvar(ϕ)), gebunden (bvar(ϕ)) FOL(Σ, )-Semantik: I Wiederholung: X X X X I I I I Σ-Interpretationen Werte von Termen in Σ-Interpretationen Werte von Atomen, Formeln in Σ-Interpretationen analog Aussagenlogik: I I I Modellmengen (Un-)Erfüllbarkeit, Allgemeingültigkeit Äquivalenz von Formeln AL(P) als Spezialfall (Syntax und Semantik): AL(P) = FOL(Σ, ∅) mit ΣR = {(p, 0) | p ∈ P} (Fragment der Prädikatenlogik FOL(Σ, )) X 245 Modelle von Formelmengen Menge aller Modelle der Formelmenge Φ ⊆ FOL(Σ, \ Mod(Φ) = Mod(ϕ) X): ϕ∈Φ Beispiele: Signatur Σ = (ΣF , ΣR ) mit ΣF = {(f , 1)}, ΣR = {(P, 1), (R, 2)}, Φ = {P(x), ∀x∃yR(x, f (y ))} I Für Σ-Interpretation (A, α) mit Struktur A = ({1, 2, 3}, J·KA ) mit Jf KA (1) = Jf KA (3) = 2, Jf KA (2) = 3, JPKA = {1, 2}, JRKA = {(1, 3), (2, 2), (3, 2)}, und Belegung α : {x, y } → {a, b, c}, wobei α(x) = α(y ) = 2 gilt (A, α) ∈ Mod(Φ) I Für Σ-Interpretation (B, β) mit Struktur B = ( , J·KB ) mit ∀n ∈ : Jf KB (n) = 3n, JPKB = 3 , JRKB = ≤ und Belegung β : {x, y } → mit β(x) = 2, β(y ) = 0 gilt (B, β) 6∈ Mod(Φ) N N N N 246 Mehr Modelle von Formelmengen Φ = {∀x(P(x) ∨ P(y )), ∀x∀y ((P(x) ∧ E(x, y )) → ¬P(y )))} I Für (A, α) mit A = ({0, . . . , 5}, J·KA ), wobei JPKA = {0, 2} und JEKA = {(i, i + 1) | i ∈ {0, . . . , 4}} und α(x) = 1, α(y ) = 2 gilt (A, α) ∈ Mod(Φ) I Für (B, β) mit B = ( , J·KB ), wobei JPKB = 2 und JEKB = {(i, i + 1) | i ∈ } und α(x) = α(y ) = 0 gilt (B, β) ∈ Mod(Φ) Z Z Z 247 Semantische Folgerung (analog Aussagenlogik) Für Φ ⊆ FOL(Σ, X ) und ψ ∈ FOL(Σ, X ) gilt Φ |= ψ gdw. Mod(Φ) ⊆ Mod(ψ) Beispiele: I {∀x(P(x) ∨ Q(x)), ¬P(y )} |= Q(y ) I {∀x(P(x) ∨ Q(x)), ¬P(x)} |= Q(x) I {∀x(P(x) ∨ Q(x)), ∀x¬P(x)} |= ∀xQ(x) I {∀x(P(x) ∨ Q(x)), ∃x¬P(x)} 6|= ∀xQ(x) 248 Allgemeingültigkeit, Erfüllbarkeit, Folgerungen analog zur Aussagenlogik gelten auch in FOL(Σ, Zusammenhänge wie X) X I Eine Formel ϕ ∈ FOL(Σ, ) ist genau dann allgemeingültig, wenn die Formel ¬ϕ unerfüllbar ist. I Φ |= ψ gdw. Φ ∪ {¬ψ} unerfüllbar. I ϕ ≡ ψ gdw. ϕ |= ψ und ψ |= ϕ. I Für jede Formelmenge Φ und jede Formel ψ ∈ Φ gilt Φ |= ψ. I Für jede unerfüllbare Formelmenge Φ und jede Formel ψ gilt Φ |= ψ. Für Formeln ohne Quantoren gilt außerdem: I Zu jeder Formel ϕ ∈ AL(P) ohne Quantoren existieren I I I eine äquivalente Formel ϕ1 ∈ AL(P) in NNF, eine äquivalente Formel ϕ2 ∈ AL(P) in CNF und eine äquivalente Formel ϕ3 ∈ AL(P) in DNF. 249 Sätze Jede Formel ϕ ∈ FOL(Σ, X) mit fvar(ϕ) = ∅ heißt Satz. Beispiele: I ∀x∀y (R(x, y ) → R(y , x)) ist ein Satz. I R(x, y ) → R(y , x), ∀x(R(x, y ) → R(y , x)), ∃y (R(x, y ) → R(y , x)), ∀x(R(x, y ) → ∃yR(y , x)) sind keine Sätze. für ϕ ∈ FOL(Σ, X) mit fvar(ϕ) = {x1, . . . , xn }: universeller Abschluß ∀ϕ := ∀x1 · · · ∀xn ϕ existentieller Abschluß ∃ϕ := ∃x1 · · · ∃xn ϕ Fakt Für jede Formel ϕ ∈ FOL(Σ, X) sind ∀ϕ und ∃ϕ Sätze. 250 Modelle von Sätzen X Auf den Wert eines Satzes ϕ ∈ FOL(Σ, ) in einer Interpretation I = (S, β) hat die Belegung β keinen Einfluss, d.h. für beliebige Belegungen α, β : → S gilt X JϕK(S,α) = JϕK(S,β) Beispiel: ϕ = ∀x∃y (P(x) ∧ E(x, y ) → ¬P(y )) X Für Sätze ϕ ∈ FOL(Σ, ) genügt es also, den Wert in Strukturen (statt in Interpretationen) zu betrachten: JϕKS := JϕK(S,β) für eine beliebige Belegung β : Menge aller Modelle des Satzes ϕ ∈ FOL(Σ, X→S X): Mod(ϕ) = {S | S = (S, J·KS ) ist Σ-Struktur und JϕKS = 1} 251 Modelle von Satzmengen Signatur Σ = (∅, ΣR ) mit ΣR = {(R, 2)} ∀x R(x, x), ∀x∀y (R(x, y ) → R(y , x)) , Φ= ∀x∀y ∀z ((R(x, y ) ∧ R(y , z)) → R(x, z)) I I I Für Σ-Struktur A = ({a, b, c}, J·KA ) mit JRKA = {(a, a), (a, c), (b, b), (c, a), (c, c)} gilt A ∈ Mod(Φ) N Für Σ-Struktur B = ( , J·KB ) mit JRKB = ≤ gilt B 6∈ Mod(Φ) Mod(Φ) = Menge aller Σ-Strukturen S, in denen JRKS eine Äquivalenzrelation ist. 252 Charakterisierung von Strukturen durch Sätze Beispiel: Graphen mit Knotenfärbung Signatur Σ = (∅, ΣR ) mit ΣR = {(R, 1), (G, 1), (B, 1), (E, 2)} ∀x¬E(x, x), ∀x∀y (E(x, y ) → E(y , x)), ∀x(R(x) ∨ G(x) ∨ B(x)), Φ= ∀x(R(x) → ¬(G(x) ∨ B(x)), ∀x(G(x) → ¬(R(x) ∨ B(x)), ∀x(B(x) → ¬(G(x) ∨ R(x)) (jeder Knoten mit genau einer Farbe aus {R, G, B} gefärbt) Mod(Φ) = Menge aller ungerichteten schlingenfreien Graphen mit Knotenfärbung mit Farben aus {R, G, B} 253 Mehr Beispiele Σ = (ΣF , ΣR ) mit ΣR = {(=, 2), (R, 2), (P, 1)} Vereinbarung: Bedeutung von = fest, Identität auf Trägermenge I Strukturen mit mindestens zwei Elementen in der Trägermenge, ∃x∃y ¬(x = y ) I Strukturen mit unendlicher Trägermenge, ∀x¬R(x, x), ∀x∀y ∀z (R(x, y ) ∧ R(y , z) → R(x, z)) , Φ= ∀x∃y (R(x, y )) I 2-färbbare (bipartite) Graphen ∀x∀y (R(x, y ) → (P(x) ↔ ¬P(y )) 254 Charakterisierung algebraischer Strukturen I Signatur Σ = (ΣF , ΣR ) mit ΣF = ∅, ΣR = {(R, 2), (=, 2)} ∀x R(x, x), ∀x∀y ((R(x, y ) ∧ R(y , x)) → x = y ) , ΦPO = ∀x∀y ∀z ((R(x, y ) ∧ R(y , z)) → R(x, z)) Mod(ΦPO ) = alle Mengen mit partieller Ordnung R, z.B. ( , ≤), ( , |), (2X , ⊆) N I Z Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2)}, ΣR = {(=, 2)} ΦH = {∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z)} N Z Mod(ΦH ) = alle Halbgruppen, z.B. ( , +), (2 , ·), (A∗ , ◦) I Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2), (e, 0)}, ΣR = {(=, 2)} ΦM = {∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z) , ∀x(x ◦ e = x)} ∗ Mod(ΦM ) = alle Monoide, z.B. ( , ·, 1), (A∗ , ◦, ε), 2A , ∪, ∅ Z I Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2), (e, 0)}, ΣR = {(=, 2)} ∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z) , ΦKG = ∀x(x ◦ e = x), ∀x∃y (x ◦ y = e), ∀x∀y (x ◦ y = y ◦ x) N Q Mod(ΦKG ) = alle kommutativen Gruppen, z.B. (2 , +, 0), ( , ·, 1) 255 Was bisher geschah klassische Prädikatenlogik (der ersten Stufe) FOL(Σ, FOL(Σ, )-Syntax: X I Signaturen, Terme, Atome, Formeln in FOL(Σ, I freie und gebundene Variablenvorkommen in Formeln und Formelmengen FOL(Σ, X) X) X)-Semantik: I Σ-Strukturen, Σ-Interpretationen I Werte von Termen, Atomen, Formeln in Σ-Interpretationen analog Aussagenlogik: I I I I I Modellmengen (Un-)Erfüllbarkeit, Allgemeingültigkeit Äquivalenz von Formeln semantische Folgerungen Sätze und Satzmengen (Syntax, Semantik) Charakterisierung von Strukturen durch Satzmengen z.B. Äquivalenzrelationen, Graphenklassen, Halbgruppen usw. 256 Wiederholung: Abstrakte Datentypen (ADT) Sorten (Typen) Signatur Σ = (ΣF , ΣR ) definiert die Darstellungsform, Typdeklarationen (Syntax) Axiome: Menge Φ ⊆ FOL(Σ, ) von Sätzen oft (∀-quantifizierte) Gleichungen zwischen Termen, beschreibt die gewünschten Eigenschaften von und Zusammenhänge zwischen den Symbolen, definiert die Bedeutung der Symbole (Semantik) X Spezifikation von Software-Schnittstellen (Interface): Darstellung der Anforderungen an jede Implementierung (oft durch Formelmengen ⊆ FOL(Σ, ), Axiome) X Abstraktion von konkreten Repräsentationen der Daten (Trägermengen) und konkrete Implementierung der Operationen 257 Wiederholung: Konkrete Datentypen konkreter Datentyp (= Σ-Struktur) S = (S, J·KS ) mit I Menge S von Daten (Trägermengen) I für jedes Symbol s in Σ die Bedeutung JsKS (Implementierung) Jeder ADT repräsentiert eine Menge konkreter Datentypen: genau alle Implementierungen (Σ-Strukturen), die alle Axiome des ADT erfüllen 258 Abstrakter Datentyp (Beispiel) ADT für (Blickrichtung in) Himmelsrichtungen Norden, Osten, Süden, Westen mit Operationen für Rechts- und Linksabbiegen und Umlenken ADT Himmelsrichtungen (Spezifikation): Sorten: Himmelsrichtung (HR) = {N, O, S, W} Signatur: N, O, S, W : HR rechts, links, um : HR → HR Axiome: rechts(N) = O, links(N) = W, um(N) = S, . . . ∀h ∈ HR : rechts(links(h)) = h, ∀h ∈ HR : links(rechts(h)) = h, ∀h ∈ HR : rechts(rechts(h)) = um(h), . . . 259 Konkreter Datentyp (Beispiele) Implementierung des ADT Himmelsrichtungen, z.B.: cos ϕ − sin ϕ I als Punkte im 2 mit Drehmatrizen sin ϕ cos ϕ 0 1 0 −1 ϕ = −π/2 : R = ϕ = π/2 : L = −1 0 1 0 R A = ({(0, 1), (1, 0), (0, −1), (−1, 0)}, J·KA ) mit JNKA = (0, 1), JOKA = (1, 0), JSKA = (0, −1), JWKA = (−1, 0), x x ∀(x, y ) : JrechtsKA (x, y ) = R ∧ JlinksKA (x, y ) = L y y ∀(x, y ) : JumKA (x, y ) = (−x, −y ) Ist diese Implementierung korrekt (d.h. Modell aller Axiome)? I B = ({0, 1, 2, 3}, J·KB ) mit JNKB = 0, JOKB = 1, JSKB = 2, JWKB = 3, ∀x : JrechtsKB (x) = (x + 1) mod 4 ∀x : JlinksKB (x) = (x − 1) mod 4, ∀x : JumKB (x) = (x + 2) mod 4 Ist diese Implementierung korrekt? 260 Spezifikation und Verifikation Jeder ADT spezifiziert eine Menge konkreter Datentypen: genau alle Implementierungen (Σ-Strukturen), die alle Axiome des ADT erfüllen Menge aller korrekten Implementierungen des ADT = Modellmenge der Menge Φ der Axiome des ADT Verifikation: formaler Nachweis der Korrektheit von Implementierungen bzgl. der Spezifikation (ADT) oft durch Ableitungen in geeigneten Kalkülen (maschinelle Unterstützung durch Werkzeuge wie z.B. Coq, pvs, Isabelle, KIV, KeY) (mehr dazu in LV im Master-Studium) 261 Prädikatenlogisches Ableiten Aussagen wie z.B. die folgende lassen sich i.A. nicht durch Nachprüfen aller Interpretationen zeigen: In jeder Menge mit einer Äquivalenzrelation R gilt ϕ = ∀x∀y ∀z (R(x, y ) ∧ R(x, z) → R(y , z)) d. h. ∀x R(x, x) ∀x∀y (R(x, y ) → R(y , x)) |= ϕ ∀x∀y ∀z (R(x, y ) ∧ R(y , z) → R(x, z)) Syntaktische Methoden sind daher in Prädikatenlogik noch viel wichtiger als in Aussagenlogik 262 Gültigkeitsproblem Wiederholung: (Allgemein)-Gültigkeitsproblem in einer Logik gegeben: Formel ϕ in dieser Logik Frage: Ist ϕ allgemeingültig? als formale Sprache (Wortproblem): G = {ϕ | Mod(¬ϕ) = ∅} Erfüllbarkeits- und Folgerungsproblem sind darauf reduzierbar. für jede Logik interessant: Gibt es automatische Verfahren (Algorithmen), die dieses Problem entscheidet, also zu jeder gegebenen Formel dieser Logik die Frage korrekt mit ja oder nein beantwortet? Logiken, für die es solche Algorithmen gibt, heißen entscheidbar. 263 Wiederholung: Kalkül des natürlichen Schließens Kalkül: Menge von Axiomenschemata , d.h. Schema für Formeln, deren Gültigkeit vorausgesetzt wird, Regelschemata zur syntaktischen Ableitung weiterer gültiger Formeln aus Formelmengen (Axiomen und Hypothesen) Kalkül des natürlichen Schließens: Für jeden Junktor ∗ eine Einführungsregel (∗I) Junktor in der Folgerung (unten), aber in keiner Voraussetzung (oben) des Regelschemas, I eine Eliminierungsregel (∗E) Junktor in einer Voraussetzung (oben), aber nicht in der Folgerung (unten) des Regelschemas, I Ableitungsschritt: Anwendung einer geeignet instanziierten Regel auf schon Hypothesen und abgeleitete Formeln Ableitung (Beweis): Kombination von Ableitungsschritten (Baumform) 264 Kalkül des natürlichen Schließens: Junktoren A B (∧I) A∧B A ∧ B (∧E) A A (∨I) A∨B B (∨I) A∨B [A] .. . B (→I) A→B f (fE) A A A ∧ B (∧E) B [A] [B] .. .. . . A∨B C C (∨E) C A → B (→E) B [A] .. . f (¬I) ¬A A f ¬A (¬E) 265 Kalkül des natürlichen Schließens: Regeln für ∀ für neu eingeführte Konstante a (repräsentiert „beliebiges“ Element): A[x 7→ a] (∀I) ∀xA für beliebigen Term t, in welchem keine Variable durch Einsetzen für x in A gebunden wird: ∀xA (∀E) A[x 7→ t] Schlussregeln korrekt , weil ∀ϕ: {ϕ[x 7→ a]} |= ∀xϕ {∀xϕ} |= ϕ[x 7→ t] (∀I) Um ∀xA abzuleiten, muss man zeigen, dass A[x 7→ a] für eine neu eingeführte Konstante a (repräsentiert beliebiges Element) gilt. (∀E) Falls ∀xA abgeleitet, gilt auch für jeden beliebigen Term t, in dem keine Variable durch Einsetzen in A gebunden wird, A[x 7→ t]. 266 Beispiele für Ableitungen mit ∀-Regeln I Alle Hunde bellen. Max ist ein Hund. Also bellt Max. ∀x(H(x) → B(x)), H(m) `N B(m) I ∀x(H(x) → B(x)) (∀E) H(m) → B(m) H(m) (→E) B(m) Jede nichtnegative Zahl ist gleich ihrem Betrag. ∀x(x ≥ 0 → x = |x|), ∀x(x ≥ 0) `N ∀x(x = |x|) ∀x(x ≥ 0 → x = |x|) (∀E) n ≥ 0 → n = |n| (→E) n = |n| (∀I mit „beliebiger“ Zahl n) ∀x(x = |x|) ∀x(P(x) ∧ Q(x)) `N ∀xP(x) ∧ ∀xQ(x) ∀x(x ≥ 0) (∀E) n≥0 I 267 Kalkül des natürlichen Schließens: Regeln für ∃ für beliebigen Term t, in welchem keine Variable durch Einsetzen für x in A gebunden wird: für neu eingeführte Konstante a: ∃xA A[x 7→ t] (∃I) ∃xA [A[x 7→ a]] .. . B (∃E) B Schlussregeln korrekt , weil ∀ϕ: {ϕ[x 7→ t]} |= ∃xϕ {∃xϕ, ϕ[x 7→ a] → ψ} |= ψ (∃I) Hat man für einen Term t gezeigt, dass A[x 7→ t] gilt, kann man daraus ∃xA ableiten. (∃E) Falls ∃xA schon abgeleitet wurde und B für eine neu eingeführte Konstante a aus der Annahme A[x 7→ a] abgeleitet werden kann, dann ist damit auch B abgeleitet. (Bei jeder Anwendung von (∃E) muss eine eigene neue Konstante eingeführt werden) 268 Beispiele für Ableitungen mit ∃-Regeln I 2 ist gerade. 2 ist eine Primzahl. Also gibt es gerade Primzahlen. G(2), P(2) `N ∃x(G(x) ∧ P(x)) I G(2) P(2) (∧I) G(2) ∧ P(2) (∃I) ∃x(G(x) ∧ P(x)) Manche Studenten sind klug und fleißig. Also sind manche klug und manche fleißig. ∃x(K (x) ∧ F (X )) `N ∃xK (x) ∧ ∃xF (x)) [K (a) ∧ F (a)] K (a) ∃x(K (x) ∧ F (x)) ∃xK (x) ∃xK (x) (∃I) (∃E mit a) ∃xK (x) ∧ ∃xF (x) I [K (b) ∧ F (b)] (∧E) F (b) ∃x(K (x) ∧ F (x)) ∃xF (x) ∃xF (x) (∧E) (∃I) (∃E mit b) (∧I) ∃x(P(x) ∧ ¬Q(x)), ∀x(P(x) → R(x)) `N ∃x(R(x) ∧ ¬Q(x)) 269 Aufzählbarkeit Ableitungsrelation z.B. durch Erweiterung des Kalkül des natürlichen Schließens auf Prädikatenlogik Mit Hilfe logischer Kalküle (z.B. des natürlichen Schließens) lassen sich alle allgemeingültigen Formeln ϕ ∈ FOL(Σ, ) algorithmisch aufzählen (nacheinander angeben). X Idee: Alle Formeln „gleichzeitig“ ableiten (dove tailing) Bei jedem erfolgreichen Versuch Formel ausgeben und diese Berechnung für diese Formel abbrechen. Es gibt aber kein Verfahren, welches algorithmisch entscheidet (d.h. für jede beliebige Formel ϕ ∈ FOL(Σ, ) in endlicher Zeit die Antwort ja/nein berechnet), ob eine gegebene Formel allgemeingültig ist (in der Aufzählung vorkommt). X 270 Unentscheidbarkeit der Prädikatenlogik der ersten Stufe FOL(Σ, X) Satz Es existiert kein Algorithmus, der für jede beliebige Formel ϕ ∈ FOL(Σ, X ) entscheidet, ob ϕ allgemeingültig ist. (Das Gültigkeitsproblem in) FOL(Σ, X) ist also unentscheidbar. Im Gegensatz dazu gilt für die Aussagenlogik AL(P): Satz Es existiert (wenigstens) ein Algorithmus, der für jede beliebige Formel ϕ ∈ AL(P) entscheidet, ob ϕ allgemeingültig ist. (Test endlich vieler endlicher Strukturen genügt, z.B. Wahrheitswerttabellen, Modellmengen, Kalküle,. . . ) (Das Gültigkeitsproblem in) AL(P) ist also entscheidbar. 271 Zusammenfassung: Logik(en) in der Informatik einige prominente Anwendungen: I Digitaltechnik (AL) I Abstrakte Datentypen (FOL) (mehr dazu in LV Algorithmen und Datenstrukturen) I Wissensrepräsentation und -verarbeitung (AL, FOL, nichtklassische Logiken) mehr dazu in LV Künstliche Intelligenz I Semantic Web (FOL, Beschreibungslogiken, OWL) I Problemlösen, Planung (AL, FOL) I Multiagentensysteme (FOL, Epistemische Logik) I deklarative Programmierung (AL, FOL) (logische Programmierung, Constraint-Programmierung) I Beschreibung von Abläufen (FOL, temporale Logiken) I Spezifikation des Verhaltens von Software und Systemen (AL, FOL, Temporale Logiken, Prozesslogiken) (mehr dazu in LV zu Verifikationstechniken) 272 Anwendung: Wissensrepräsentation und -verarbeitung I Entscheidungstabellen, - Bäume, -Diagramme I Regelbasiertes Schließen I unvollständiges Wissen, nichtmonotones Schließen I unscharfes Wissen, fuzzy logic, probabilistische Logik I Klassifizierung, Diagnose I Zusammenhänge zwischen Begriffen, Ontologien I Darstellung von Wissen im Semantic Web I Planen, z.B. Stundenpläne, Ablaufpläne 273 Anwendung: logische Programmierung Prolog-Programm P: liest(paul,krimi). liest(tina,arztroman). liest(bob,X). mag(tina,X) :- liest(X,krimi). repräsentiert die Formelmenge liest(paul, krimi), liest(tina, arztroman), ∀x(liest(bob, x)), P= ∀x(liest(x, krimi) → mag(tina, x)) Anfrage: ?- mag(tina,X). repräsentiert die Formel ψ = mag(tina,X) (Wen mag Tina?) Paar (Programm, Anfrage) repräsentiert das Problem: Für welche Belegungen β gilt P |= β(ψ)? Lösung durch SLD-Resolution (Kalkül zum Schließen in einem geeigneten FOL(Σ, )-Fragment) X 274 Anwendung: Wortmodelle Alphabet A: (endliche) Menge von Symbolen) Wort w = w1 · · · wn ∈ A∗ als I Funktion w : {1, . . . , n} → A (von Positionen auf Symbole) mit ∀i ∈ {1, . . . , n} : w(i) = wi I Für Σ = (ΣF , ΣR ) mit ΣR = {(≤, 2)} ∪ {(a, 1) | a ∈ A} Σ-Struktur w = ({1, . . . , n}, J·Kw ) mit J≤Kw =≤ ∀a ∈ A : JaKw = {i ∈ {1, . . . , n} | wi = a} Beispiel: A = {a, b, c}, logische Beschreibung der Mengen aller Wörter, I die kein a enthalten: ¬∃x a(x) I die mindestens ein a und ein b enthalten: ∃x a(x) ∧ ∃x b(x) I die mit a beginnen: ∀x (∀y (x ≤ y ) → a(x)) I in denen nach jedem a ein b steht (nicht notwendig direkt): ∀x (a(x) → ∃y (x ≤ y ∧ b(y ))) 275 Anwendung: Korrektheit von Systemen Modellierung des Verhaltens von Systemen (zeitliche Abläufe, Zeitpunkte in ), z.B. N I ∀n∃m(n ≤ m ∧ P(n) → Q(m)) I ∃n∀m(m > n → ¬P(n))) Spezifikation (Anforderungen), z.B.: I Ein Fehlerzustand wird nie erreicht. ¬∃n Fehler(n) I Jeder Fehler wird sofort nach dem Auftreten behoben. ∀n (Fehler(n) → ¬Fehler(n + 1))) I Jeder einmal gestellte Auftrag a wird irgendwann erledigt. ∀a∀n ( gestellt(a, n) → ∃m(n ≤ m ∧ erledigt(a, m))) 276 Zustandsübergangssysteme Zustandsübergangssystem (Q, X , δ) Q (endliche) Menge von Zuständen X endliche Menge von Aktionen δ : X → (Q × Q) Übergangsrelationen δ ordnet jeder Aktion a ∈ X eine Relation δ(a) ⊆ Q × Q zu (Graph mit Kantenfärbung, Farben: Aktionen) Ziel: Spezifikation (formale Beschreibung von Anforderungen) von Zustandsübergangssystemen Prädikatenlogik zur Darstellung der Eigenschaften von I Zuständen I (zulässigen) Aktionen I Wirkung der Aktionen (Zustandsübergänge) 277 Beispiel: lineares Solitaire Q = {0, 1}∗ Zustände (mögliche Spielkonfigurationen) X = {(011 → 100), (110 → 001)} Aktionen (zulässige Spielzüge) δ : {(011 → 100), (110 → 001)} → {0, 1}∗ × {0, 1}∗ (z.B. (101101, 110001) ∈ δ(011 → 100)) Zustandsübergänge bei Ausführung von Zügen, (u, v ) ∈ δ(011 → 100) gdw. |u| = |v | ∧ i ∈ {2, . . . , |u| − 1} ∧ui−1 = 0 ∧ ui = 1 ∧ ui−1 = 1 ∃i ∧vi−1 = 1 ∧ vi = 0 ∧ vi−1 = 0 ∧∀j (j 6= i − 1 ∧ j 6= i ∧ j 6= i + 1) → uj = vj 278 Beispiel: Münzschließfach Aktionen: A aufschließen Eigenschaften: g bezahlt Z zuschließen o offen O Tür öffnen b belegt S Tür schließen G Geld einwerfen Beispiele für Anforderungen (Spezifikation): Am Münzschließfach sollen nur Abläufe (Wort w ∈ {A, Z , O, S, G}∗ ) möglich sein, die folgende Anforderungen (Eigenschaften) erfüllen: I Offene Fächer können nicht zugeschlossen werden. ∀x(o(x) → ¬∃yZ (x, y )) I In belegte Fächer kann kein Geld eingeworfen werden. ∀x(b(x) → ¬∃yG(x, y )) I Kein nicht bezahltes Fach kann zugeschlossen werden. ¬∃x(¬g(x) ∧ ∃yZ (x, y )) Dazu werden auch häufig nichtklassische Logiken verwendet. (z.B. Temporallogiken: (entscheidbare) FOL-Fragmente) 279 Beispiel Münzschließfach {b} ∅ Entwurf des Systems: S O {o} G A S {g, o} Z {g} O Beispiele für mögliche Abläufe (während eines Tages) w ∈ {A, Z , O, S, G}∗ : I OGSZAGSZA: zwei Belegungszyklen I OSOSOS: Tür wiederholt öffnen und schließen I ε I OSOGSOSZASOSOGSZASO Jeder mögliche Ablauf erfüllt die Spezifikation (Anforderungen): ∀x(o(x) → ¬∃yZ (x, y )), ∀x(b(x) → ¬∃yG(x, y )), Φ= ¬∃x(¬g(x) ∧ ∃yZ (x, y )) 280 Berechnungen als Zustandsübergangssysteme imperative Programmierung (von-Neumann-Modell): Ausführungsmodell: abstrakte Maschine Berechnung eines imperativen Programmes p: Ausführung des Programmes p mit Eingabe i, d.h. (endliche oder unendliche) Folge von Zuständen einer abstrakten Maschine Zustand: Speicherbelegung Modellierung einer Berechnung (Ausführung eines Programmes) durch Folge von Zustandsübergängen (Rechenschritte) formale Beschreibung der Semantik (Wirkung) eines imperativen Programmes p: Abbildung (partielle Funktion) von Eingaben auf Ausgaben (und Nebenwirkungen) 281 Beispiel: Vertauschen Aufgabe: Vertauschen zweier Zahlen Zustände (x, y , z) ∈ N3, wobei x = Wert der Variable (Speicherplatz) a y = Wert der Variable (Speicherplatz) b z = Wert der Variable (Speicherplatz) c Programm: c := a a := b b := c Zustandsübergangssystem der Berechnung für a = 3, b = 5: (3, 5, ?) start c := a (3, 5, 3) a := b (5, 5, 3) b := c (5, 3, 3) 282 Eigenschaften von Berechnungen Spezifikation (formale Beschreibung des Verhaltens) eines Vorbedingung: ϕ Programmes p: Nachbedingung: ψ Bedeutung: Beginnt die Ausführung des Programmes in einem Zustand, der die Vorbedingung ϕ erfüllt, dann gilt im Zustand nach Programmende die Nachbedingung ψ. Verifikation: Nachweis, dass ein imperatives Programm korrekt ist (also seine Spezifikation erfüllt) Idee: Induktion über die Programmstruktur (Baum) aus IA: elementaren Anweisungen (Zuweisungen, Unterprogrammaufrufe) und IS: Operationen zur Kombination von Anweisungen: Nacheinanderausführung, Verzweigung, Wiederholung 283 Nachweis der Eigenschaften von Berechnungen Spezifikation durch Hoare-Tripel: {ϕ} p {ψ} Beispiel Vertauschen: {a = x ∧ b = y }c := a; a := b; b := c{a = y ∧ b = x} einige Ableitungsregeln im Hoare-Kalkül: {ϕ} c1 {ψ} {ψ} c2 {η} (Nacheinanderausführung) {ϕ} c1 ; c2 {η} ϕ → ϕ0 {ϕ0 } c {ψ 0 } {ϕ} c {ψ} ψ0 → ψ (Abschwächung) {ϕ ∧ B}c{ϕ} (Wiederholung) {ϕ} while B c {ϕ ∧ ¬B} Axiom: {ϕ[x 7→ t]} x := t {ϕ} (Zuweisung) 284 Zustandsübergangssystem Münzschließfach 0 S 4 A O Z S 1 G 3 2 O Aktionen: A aufschließen Eigenschaften: g bezahlt (2, 3) Z zuschließen o offen (1, 2) O Tür öffnen b belegt (4) S Tür schließen G Geld einwerfen 285 Endliche Automaten – Definition NFA (nondeterministic finite automaton) A = (X , Q, δ, I, F ) mit X endliches Alphabet, Q endliche Menge von Zuständen, δ Übergangsrelationen δ : X → (Q × Q), I ⊆ Q Startzustände, F ⊆ Q akzeptierende Zustände. 286 NFA: Beispiel A = (X , Q, δ, {0, 3}, {2, 3, 4}) mit X = {a, b, c} Q = {0, 1, 2, 3, 4} δ(a) = {(0, 0), (0, 1), (1, 3)} δ(b) = {(0, 0), (1, 2)} δ(c) = {(0, 3), (3, 3), (4, 1)} a,b a 0 c 3 b 1 a 2 c c 4 287 Eigenschaften endlicher Automaten NFA A = (X , Q, δ, I, F ) heißt vollständig , falls ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≥ 1 deterministisch (DFA) , falls 1. |I| = 1 und 2. ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≤ 1 Beispiele: a,b b b 0 1 a vollständig nicht deterministisch b a 0 b a b b 0 1 nicht vollständig deterministisch 1 a vollständig deterministisch 288 Pfade in endlichen Automaten Für einen NFA A = (X , Q, δ, I, F ) und ein Wort w ∈ X ∗ heißt eine Folge von Zuständen p = (p0 , p1 , . . . , pn ) ∈ Q ∗ genau dann Pfad für w in A, wenn gilt: 1. p0 ∈ I und 2. ∀i ∈ {1, . . . , n} : (pi−1 , pi ) ∈ δ(wi ) akzeptierender Pfad für w in A, wenn zusätzlich gilt: 3. pn ∈ F 289 Beispiel b NFA A = ({a, b}, {0, 1}, δ, {0}, {0}) mit δ(a) = {(0, 1)} und δ(b) = {(0, 0), (0, 1), (1, 0)} a,b 0 1 b Pfade für I abbb: a b b b 0 → 1 → 0 → 0 → 0 ∈ F (akzeptierend) a b b b 0 → 1 → 0 → 0 → 1 6∈ F (nicht akzeptierend) a b b b 0 → 1 → 0 → 1 → 0 ∈ F (akzeptierend) I aba: a b a 0 → 1 → 0 → 1 6∈ F (nicht akzeptierend) I aa existieren nicht: 0 → 1 → ? a a 290 Akzeptanz durch endliche Automaten NFA A akzeptiert ein Wort w gdw. ein akzeptierender Pfad für w in A existiert. Beispiel: NFA A aus vorigem Beispiel (Tafel) I akzeptiert das Wort abbb (z.B.) über den akzeptierenden Pfad a b b b 0→1→0→1→0∈F I akzeptiert das Wort aba nicht, weil 0 → 1 → 0 → 1 der einzige Pfad für aba in A ist und im Zustand 1 6∈ F endet, I akzeptiert das Wort aa nicht, weil dafür kein Pfad in A existiert. a b a A akzeptiert genau alle Wörter, in denen auf jedes a sofort ein b folgt, also genau die Wörter in der Sprache L(b + ab)∗ . 291 NFA-akzeptierbare Sprachen NFA A = (X , Q, δ, I, F ) akzeptiert die Sprache L(A) = {w ∈ X ∗ | ∃ akzeptierender Pfad für w in A} ∃(p0 , . . . , p|w| ) ∈ Q ∗ : p0 ∈ I ∧ p|w| ∈ F = w ∈ X ∗ ∧ ∀i ∈ {1, . . . , |w|} : (pi−1 , pi ) ∈ δ(wi ) Sprache L(A) beschreibt das Verhalten (Semantik) des NFA Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (2, 2)} und δ(b) = {(0, 0), (0, 1), (1, 2), (2, 2)} akzeptiert L(A) = . . . Eine Sprache L ⊆ X ∗ heißt genau dann NFA-akzeptierbar, wenn ein NFA A mit L = L(A) existiert. Menge aller NFA-akzeptierbaren Sprachen: REC(NFA) Beispiel: L = {w | w enthält ein Infix aa oder bba} ist NFA-akzeptierbar. 292 Beispiele NFA-akzeptierbarer Sprachen I L1 = {w ∈ {0, 1}∗ | |w|0 ist ungerade } I L2 = {w ∈ {a, b}∗ | w beginnt mit ab und endet mit ba} I L3 = L(G) mit G = ({S, T }, {0, 1}, P, S) mit P = {S → 11T , T → 0S, T → 0} I L4 = L(E) mit E = (a + b)∗ ab∗ I L5 = L(F ) mit F = ((a + b)c)∗ Beobachtung: Diese Sprachen lassen sich alle durch reguläre Ausdrücke repräsentieren. 293 Was bisher geschah I I Modellierung durch Zustandsübergangssysteme NFA A = (X , Q, δ, I, F ) I I vollständig deterministisch (DFA) I Akzeptanz von Wörtern durch NFA I von einem NFA A akzeptierte Sprache L(A) Verhalten von A, Semantik I NFA-akzeptierbare Sprachen REC(NFA) I Operationen auf Sprachen: I I Mengenoperationen ∪, ∩, , \ Sprachoperationen ◦, ∗ , R I reguläre Ausdrücke E ∈ RegExp(X ), repräsentierte Sprache L(E) ⊆ X ∗ I Grammatiken G = (N, X , P, S) erzeugte Sprache L(G) ⊆ X ∗ 294 Isomorphie endlicher Automaten Zwei NFA A = (X , Q, δ, I, F ) und B = (X , Q 0 , δ 0 , I 0 , F 0 ) sind genau dann isomorph, wenn eine bijektive Funktion h : Q → Q 0 existiert, so daß I genau dann s ∈ I , wenn h(s) ∈ I 0 , I genau dann f ∈ F , wenn h(f ) ∈ F 0 und I für jedes a ∈ X : genau dann (p, q) ∈ δ(a), wenn (h(p), h(q)) ∈ δ 0 (a). Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {0}) mit δ(a) = {(0, 1), (1, 2), (2, 0)} und δ(b) = {(0, 2), (1, 0), (2, 1)} und B = ({a, b}, {α, β, γ}, δ, {β}, {β}) mit δ(a) = {(α, β), (β, γ), (γ, α)} und δ(b) = {(α, γ), (β, α), (γ, β)} sind isomorph mit h(0) = β, h(1) = γ, h(2) = α. (Graphisomorphie zwischen gerichteten Graphen mit markierten Kanten) Fakt Isomorphie von NFA ist eine Äquivalenzrelation. 295 Äquivalenz endlicher Automaten Zwei NFA A, B heißen genau dann äquivalent, wenn L(A) = L(B) gilt. Beispiel: Der NFA A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1)} und δ(b) = {(1, 1), (1, 2)} und der NFA B = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1), (2, 1), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} sind äquivalent. Warum? Fakt Äquivalenz endlicher Automaten ist eine Äquivalenzrelation. Fakt Isomorphe endliche Automaten sind äquivalent. Also: Umbenennung der Zustände eines NFA ändert die Semantik (akzeptierte Sprache) nicht. 296 Vervollständigung von NFA Motivation: In vollständigen NFA existiert zu jedem Wort wenigstens ein Weg, Akzeptanz des Wortes durch Menge der mit dem letzten Symbol erreichten Zustände auf allen Wegen feststellbar. Satz Zu jedem NFA existiert ein äquivalenter vollständiger NFA. (Hinzufügen eines zusätzlichen nichtakzeptierenden Zustandes, falls notwendig) Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2)} und δ(b) = {(0, 1)} äquivalenter vollständiger NFA B = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2), (2, 3), (3, 3)} und δ(b) = {(0, 1), (1, 3), (2, 3), (3, 3)} 297 Wiederholung: Pfade in NFA b NFA A = ({a, b}, {0, 1}, δ, {0}, {0}) mit δ(a) = {(0, 1)} und δ(b) = {(0, 0), (0, 1), (1, 0)} a,b 0 1 b Pfade für I abbb: a b b b 0 → 1 → 0 → 0 → 0 ∈ F (akzeptierend) a b b b 0 → 1 → 0 → 0 → 1 6∈ F (nicht akzeptierend) a b b b 0 → 1 → 0 → 1 → 0 ∈ F (akzeptierend) I aba: a b a 0 → 1 → 0 → 1 6∈ F (nicht akzeptierend) I aa existieren nicht: 0 → 1 → ? a a Alle Pfade für ein Wort w in einem NFA A lassen sich in einem Baum zusammenfassen. (Tafel) 298 Vorteil deterministischer Automaten a,b Beispiele: 0 b a,b a 1 0 a,b b 1 Akzeptanz der Wörter aab, bba ? Zu jedem DFA A = (X , Q, δ, I, F ) und jedem Wort w ∈ X ∗ I existiert in A höchstens ein Pfad für w, I lässt sich in höchstens |w| Schritten feststellen, ob A das Wort w akzeptiert, I lässt sich in höchstens |w| Schritten feststellen, ob A das Wort w nicht akzeptiert. Existiert zu jedem NFA ein äquivalenter DFA? 299 Nachfolgermengen in NFA Nachfolgermengen im NFA A = (X , Q, δ, I, F ): NA (a, p) = {q ∈ Q | (p, q) ∈ δ(a)} (a-Nachfolger von p ∈ Q) Menge aller Zustände, die über eine a-Kante aus dem Zustand p erreichbar sind S NA (a, M) = p∈M NA (a, p) (a-Nachfolger von M ⊆ Q) Menge aller Zustände, die über eine a-Kante aus einem Zustand aus M erreichbar sind b a,b Beispiel: 0 1 b Nachfolgermengen der Zustände: NA (a, 0) = {1} NA (a, 1) = ∅ NA (b, 0) = {0, 1} NA (b, 1) = {1} Nachfolgermengen aller Mengen von Zuständen: NA (a, {0}) = {1} NA (b, {0}) = {0, 1} NA (a, ∅) = ∅ NA (a, {1}) = ∅ NA (b, {1}) = {0} NA (b, ∅) = ∅ NA (a, {0, 1}) = {1} NA (b, {0, 1}) = {0, 1} 300 Konstruktion von DFA aus NFA allgemeines Verfahren: gegeben: NFA A = (X , Q, δ, I, F ) gesucht: DFA B = (X , QB , δB , IB , FB ) mit L(A) = L(B) Konstruktion: (Potenzmengen-Konstruktion) Automat B = (X , QB , δB , IB , FB ) mit Q B = 2Q IB = {I} FB = {M ⊆ Q | F ∩ M 6= ∅} für jedes a ∈ X : δB (a) = {(M, NA (a, M)) | M ⊆ Q} Beispiel: Konstruktion eines DFA B äquivalent zum NFA A aus dem vorigen Beispiel häufige Variante: Einschränkung auf von IB erreichbare Zustände 301 Korrektheit der Konstruktion Fakt Der nach der Potenzmengenkonstruktion aus dem Automaten A = (X , Q, δ, I, F ) konstruierte Automat B = (X , QB , δB , IB , FB ) ist ein endlicher Automat, vollständig, deterministisch und äquivalent zu A. Begründungen für Endlichkeit: Weil Q endlich, ist auch 2Q = QB endlich. Vollständigkeit: Für jedes Symbol a ∈ X und jeden Zustand M ∈ QB existiert in B genau ein (also mindestens ein) a-Nachfolger von M, nämlich NA (a, M). Determinismus: 1. Startzustand IB = I ist eindeutig bestimmt, 2. Für jedes Symbol a ∈ X und jeden Zustand M ∈ QB existiert in B genau ein (also höchstens ein) a-Nachfolger von M, nämlich NA (a, M). Äquivalenz: Nachweis von L(A) ⊆ L(B) und L(B) ⊆ L(A) durch „Übersetzung“ der akzeptierenden Pfade 302 Praktische Bedeutung Ob ein Wort w in einer regulären Sprache L enthalten ist, lässt sich mit einem DFA A mit L(A) = L schnell bestimmen (O(|w|)) aber: (evtl. aufwendige) Vorbereitung notwendig (Konstruktion des DFA A mit L(A) = L) Vorbereitung lohnt sich für häufige Anwendung, z.B. in I Übersetzerbau einmal Konstruktion der DFA für Schlüsselwörter und Konstantendarstellungen (z.B. Gleitkomma-Darstellungen) Syntaxcheck und -analyse für viele Programme I Suchmaschinen einmal Konstruktion des DFA für Suchwort / Suchwörter Durchsuchen vieler Texte (schnell) 303 Ausblick Transformation von NFA in äquivalente DFA (Potenzmengenkonstruktion) ist Grundlage für I Automatenkonstruktionen für Sprachoperationen (Komplement, Schnitt) I eindeutige Darstellung regulärer Sprachen (Minimalautomat) notwendig zur algorithmischen Feststellung der Gleichheit zweier regulärer Sprachen I Transformation von DFA in reguläre Ausdrücke später: Grundideen der Potenzmengen-Konstruktion: I Zusammenfassung der Nachfolgermengen garantiert I Determinismus (und Vollständigkeit) und I Äquivalenz der Automaten I Endlichkeit der Menge aller möglichen Zustände Funktionieren ähnliche Ideen auch für andere Maschinenmodelle? Antworten (Vorschau): I nein für Kellerautomaten I ja für Turing-Maschinen 304 NFA für Komplement NFA-akzeptierbarer Sprachen Beispiel: vollständiger DFA A = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 3), (2, 2), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} allgemeines Verfahren: gegeben: vollständiger DFA A = (X , Q, δ, I, F ) gesucht: NFA B mit L(B) = L(A) Konstruktion: DFA B = (X , Q, δ, I, Q \ F ) Fakt Der oben definierte NFA B akzeptiert die Sprache L(A). 305 NFA für Vereinigung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0, 1}, δA , {0}, {0}) mit δA (a) = {(0, 1), (1, 0)} und δA (b) = ∅ NFA B = ({a, b}, {2, 3, 4}, δB , {2}, {4}) mit δB (a) = {(2, 3), (4, 3)} und δB (b) = {(3, 4)} allgemeines Verfahren: gegeben: NFA A = (X , QA , δA , IA , FA ) und NFA B = (X , QB , δB , IB , FB ) mit QA ∩ QB = ∅ (Zustände umbenennen, falls notwendig) gesucht: NFA C mit L(C) = L(A) ∪ L(B) Konstruktion: NFA C = (X , QA ∪ QB , δC , IA ∪ IB , FA ∪ FB ) mit ∀a ∈ X : δC (a) = δA (a) ∪ δB (a) Fakt Der oben definierte NFA C akzeptiert die Sprache L(A) ∪ L(B). Zu gegebenen Automaten A und B lässt sich damit auch ein Automat C mit L(C) = L(A) ∩ L(B) = L(A) ∪ L(B) (deMorgan) konstruieren. (Dazu existieren aber auch effektivere Methoden.) 306 NFA mit ε-Übergängen ε-NFA: NFA ohne Einschränkung δ(ε) = IQ , stattdessen δ(ε) ⊇ IQ (zusätzliche Kanten im Automatengraphen mit Beschriftung ε) ε-NFA vereinfachen oft die Modellierung von Sprachen und Abläufen. Beispiel: A = ({a, b, c}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0)}, δ(b) = {(1, 1)}, δ(c) = {(2, 2)} und δ(ε) = {(0, 1), (1, 2)} Akzeptanz von Wörtern analog zu NFA: ε-NFA A = (X , Q, δ, I, F ) akzeptiert ein Wort w ∈ X ∗ genau dann, wenn δ ∗ (w) ∩ (I × F ) 6= ∅. δ ∗ (w) = δ ∗ (ε) ◦ δ(w1 ) ◦ δ ∗ (ε) ◦ · · · ◦ δ ∗ (ε) ◦ δ(wn ) ◦ δ ∗ (ε) ε-NFA A im Beispiel oben akzeptiert die Sprache L(A) = a∗ b∗ c ∗ Fakt Zu jedem NFA A existiert ein äquivalenter ε-NFA B mit genau einem Startzustand und genau einem akzeptierenden Zustand. 307 NFA für Verkettung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0}, δA , {0}, {0}) mit δA (a) = ∅ und δA (b) = {(0, 0)} NFA B = ({a, b}, {1, 2, 3}, δB , {1, 3}, {2}) mit δB (a) = {(3, 2), (3, 3)} und δB (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X , QA , δA , IA , FA ) und NFA B = (X , QB , δB , IB , FB ) mit QA ∩ QB = ∅ gesucht: NFA C mit L(C) = L(A) ◦ L(B) Konstruktion: 1. (A0 ≡ A ∧ |FA0 | = 1): ε-NFA A0 = (X , QA ∪ {fA }, δA0 , IA , {fA }) mit ∀a ∈ X : δA0 (a) = δA (a) und δA0 (ε) = δA (ε) ∪ {(q, fA ) | q ∈ FA } 2. (B 0 ≡ B ∧ |IB 0 | = 1): ε-NFA B 0 = (X , QB ∪ {sB }, δB0 , {sB }, FB ) mit ∀a ∈ X : δB0 (a) = δB (a) und δB0 (ε) = δB (ε) ∪ {(sB , q) | q ∈ IB } 3. (◦): ε-NFA C = (X , QA ∪ QB ∪ {fA , sB }, δC , IA , FB ) mit ∀a ∈ X : δC (a) = δA0 (a) ∪ δB0 (a) und δC (ε) = δA0 (ε) ∪ δB0 (ε) ∪ {(fA , sB )} Fakt Der oben definierte ε-NFA C akzeptiert die Sprache L(A) ◦ L(B). 308 NFA für iterierte Verkettung Beispiel: NFA A = ({a, b}, {0, 1, 2, 3}, δA , {0}, {3}) mit δA (a) = {(0, 1), (2, 3)} und δA (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X , Q, δA , I, F ) gesucht: NFA B mit L(B) = L(A)∗ Konstruktion: 1. (A0 ≡ A ∧ |IA0 | = 1 ∧ |FA0 | = 1): ε-NFA A0 = (X , QA ∪ {sA , fA }, δA0 , {sA }, {fA }) mit ∀a ∈ X : δA0 (a) = δA (a) und δA0 (ε) = {(sA , q) | q ∈ IA } ∪ {(q, fA ) | q ∈ FA } 2. (∗ ): ε-NFA B = (X , QA ∪ {sA , fA }, δB , {sA }, {fA }) mit ∀a ∈ X : δB (a) = δA0 (a) und δB (ε) = δA0 (ε) ∪ {(sA , fA ), (fA , sA )} Fakt Der oben definierte ε-NFA B akzeptiert die Sprache L(A)∗ . 309 Abschlusseigenschaften von REC(NFA) Satz Sind L und L0 NFA-akzeptierbare Sprachen, dann sind auch die Sprachen I L ∪ L0 (Vereinigung) I L (Komplement) I L ∩ L0 (Schnitt) I L ◦ L0 (Verkettung) I Ln , L∗ (iterierte Verkettung) I LR (Spiegelung) NFA-akzeptierbar. dieselbe Aussage kürzer: Die Menge REC(NFA) ist abgeschlossen unter I Mengenoperationen: ∪, I Sprachoperationen ◦, ∗ , (und damit auch ∩ und \) R 310 Reguläre Ausdrücke und NFA Satz Eine Sprache L ⊆ X ∗ ist genau dann durch einen regulären Ausdruck definiert, wenn sie NFA-akzeptierbar ist. zu zeigen ist: 1. Jede durch einen regulären Ausdruck definierte Sprache ist NFA-akzeptierbar. (Für jeden regulären Ausdruck E existiert ein NFA A mit L(E) = L(A).) 2. Jede NFA-akzeptierbare Sprache ist durch einen regulären Ausdruck definiert. (Für jeden NFA A existiert ein regulärer Ausdruck E mit L(E) = L(A).) 311 Konstruktion: Regulärer Ausdruck → NFA zu zeigen: Für jeden regulären Ausdruck E existiert ein NFA A mit L(E) = L(A). Beispiel: E = ab∗ + b Induktive Konstruktion des NFA A (Induktion über die Struktur des regulären Ausdruckes E): IA L(∅), L(ε) und L(a) für alle a ∈ X sind NFA-akzeptierbar (Tafel) IS sind L(E) und L(F ) NFA-akzeptierbar, dann sind auch I I I L(E + F ) = L(E) ∪ L(F ), L(EF ) = L(E) ◦ L(F ) und L(E ∗ ) = L(E)∗ NFA-akzeptierbar (wegen Abgeschlossenheit von REC(NFA) unter ∪, ◦, ∗ ) 312 NFA und reguläre Grammatiken Beispiel: NFA A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1)} und δ(b) = {(1, 0), (1, 2)} reguläre Grammatik G = ({S, B}, {a, b}, P, S) mit P = {S → aB, B → bS, B → b} definieren beide die Sprache L(A) = L(G) = (ab)+ Satz Eine Sprache L ⊆ X ∗ ist genau dann NFA-akzeptierbar, wenn L \ {ε} von einer regulären Grammatik (Chomsky-Typ 3) erzeugt wird. 313 Konstruktion: reguläre Grammatik → NFA gegeben: reguläre Grammatik G = (N, X , P, S) (Chomsky 3) Konstruktion: NFA A = (X , Q, δ, I, F ) mit Q = N ∪ {f } mit f 6∈ N I = {S} F = {f } für jedes a ∈ X : δ(a) = {(A, B) | (A → aB) ∈ P} ∪{(A, f ) | (A → a) ∈ P} Beispiel: Zur regulären Grammatik G = ({S, B}, {0, 1}, P, S) mit P = {S → 0B, B → 0B, B → 1S, B → 0} wird der NFA A = ({0, 1}, {S, B, f }, δ, {S}, {f }) mit δ(0) = {(S, B), (B, B), (B, f )} und δ(1) = {(B, S)} konstruiert. Fakt Für den wie oben zur Grammatik G konstruierten NFA A gilt L(G) = L(A). 314 Konstruktion: NFA → reguläre Grammatik gegeben: NFA A = (X , Q, δ, I, F ) Konstruktion: reguläre Grammatik G = (N, X , P, S) mit N = Q ∪ {S} mit S 6∈ Q [ {p → aq | (p, q) ∈ δ(a)} P = a∈X ∪ [ {S → aq | ∃s ∈ I : (s, q) ∈ δ(a)} a∈X ∪ [ {p → a | ∃f ∈ F : (p, f ) ∈ δ(a)} a∈X Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 2)} und δ(b) = {(1, 1), (2, 1)} konstruierte Grammatik G = ({S, 0, 1, 2}, {a, b}, P, S) mit P = {0 → a1, 1 → b1, 1 → a2, 2 → b1, S → a1, 1 → a} Fakt Für die wie oben aus dem NFA A konstruierte Grammatik G gilt L(G) = L(A) \ {ε}. 315 Was bisher geschah I I Modellierung durch Zustandsübergangssysteme, z.B. Münzschließfach, Fahrkartenautomat, lineares Solitaire NFA A = (X , Q, δ, I, F ) (endlicher Automat) I I vollständig, Vervollständigung deterministisch (DFA), Potenzmengenkonstruktion I Akzeptanz von Wörtern durch NFA I von einem NFA A akzeptierte Sprache L(A) Verhalten, Semantik des NFA A I NFA-akzeptierbare Sprachen REC(NFA) REC(NFA) ist abgeschlossen unter den Operationen ∪, ∩, , ◦, ∗ , R 316 Algorithmische Lösungen für reguläre Sprachen alle Sprachen in Eingaben endlich beschrieben, z.B. als NFA Wortproblem Eingabe: (L, w), Ausgabe: ja, falls w ∈ L, sonst nein (Suche nach mit w markiertem Pfad im Automatengraphen) Leerheit Eingabe: L, Ausgabe: ja, falls L = ∅, sonst nein (Erreichbarkeit akzeptierender Zustände in NFA für L) Vollständigkeit Eingabe: L, Ausgabe: ja, falls L = X ∗ (also L = ∅), sonst nein (Erreichbarkeit im Automaten für L) Endlichkeit Eingabe: L, Ausgabe: ja, falls L endlich, sonst nein (Suche nach akzeptierendem Weg mit Schleife) Disjunktheit Eingabe: L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 = ∅, sonst nein Inklusion Eingabe: L1 , L2 , Ausgabe: ja, falls L1 ⊆ L2 , sonst nein ? (Test L1 ∩ L2 = ∅) Gleichheit Eingabe: L1 , L2 , Ausgabe: ja, falls L1 = L2 , sonst nein ? (Test (L1 ∩ L2 ) ∪ (L2 ∩ L1 ) = ∅) 317 Wiederholung: Chomsky-Hierarchie Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben. Warum? Für jedes endliche Alphabet X ist I die Menge aller Grammatiken G = (N, X , P, S) abzählbar, I die Menge 2(X ∗ ) aller Sprachen über X überabzählbar. 318 Charakterisierungen regulärer Sprachen Für jede Sprache L ⊆ X ∗ über einem endlichen Alphabet X sind die folgenden Aussagen äquivalent: I L ist regulär, I es existiert ein regulärer Ausdruck E ∈ RegExp(X ) mit L = L(E), I L ∈ L3 (L hat Chomsky-Typ 3), I es existiert eine reguläre Grammatik G = (N, X , P, S) mit L \ {ε} = L(G), I es existiert ein NFA A = (X , QA , δA , IA , FA ) mit L = L(A), I es existiert ein DFA B = (X , QB , δB , IB , FB ) mit L = L(B). Die Menge L3 aller regulären Sprachen ist abgeschlossen unter den Operationen ∪, ∩, , ◦, ∗ , R 319 Wiederholung: Kontextfreie Grammatiken Grammatik G = (N, T , P, S) vom Chomsky-Typ 2 Alle Regeln in P haben die Form l → r mit l ∈ N und r ∈ (N ∪ T )+ Grammatik G = (N, T , P, S) erzeugt die Sprache L(G) = {w ∈ T ∗ | S →∗P w} I Syntax regulärer (arithmetischer, logischer) Ausdrücke I Syntax von Programmiersprachen (zusammengesetzte Ausdrücke und Anweisungen) 320 Wiederholung: Beispiele kontextfreier Sprachen Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke, a für ( und b für ) erzeugt durch die Grammatik GD = ({S}, {a, b}, PD , S) mit PD = {S → ε, S → SS, S → aSb} (Chomsky-Typ 2 mit ε-Sonderregel) Palindrom-Sprache (über X = {a, b}) erzeugt durch Grammatik GP = ({S}, {a, b}, PP , S) mit PP = {S → ε, S → a, S → b, S → aSa, S → bSb} (Chomsky-Typ 2 mit ε-Sonderregel) Łukasiewicz-Sprache: Menge aller Preorder-Durchquerungen von Binärbäumen mit Markierungen der Blätter mit a und inneren Knoten mit b erzeugt durch Grammatik GL = ({S}, {a, b}, PL , S) mit PL = {S → b, S → aSS} Warum sind diese Sprachen nicht NFA-akzepzierbar? 321 Maschinenmodelle Definition (endliche Beschreibung) durch I interne Steuerung (z.B. endliche Menge von Zuständen) I externen Speicher mit speziellen Zugriffsmöglichkeiten I Typ des Speicherinhaltes (z.B. endliches Wort über endlichem Alphabet) I Zugriffsmethode (z.B. Lesen / Schreiben, einmal / wiederholt, feste Reihenfolge) Konfigurationen (Momentaufnahmen) und endlich beschriebene Menge zulässiger Übergänge zwischen Konfigurationen schrittweise Berechnung : Folge von Konfigurationen von einer Startkonfiguration über zulässige Konfigurationsübergänge Akzeptanz einer Eingabe durch akzeptierende Berechnung: endliche Konfigurationenfolge zu einer akzeptierenden Konfiguration 322 NFA als Maschinenmodell algorithmische Lösung des Wortproblems w ∈ L für reguläre Sprachen L (gegeben durch NFA A mit L = L(A)) NFA A = (X , Q, δ, I, F ) als abstrakte Maschine: externer Speicher Eingabeband aus einzelnen Speicherzellen (enthält ein Wort w ∈ X ∗ ) interner Speicher enthält einen Zustand aus Q Steuerelement Zugriff auf I Eingabeband (externer Speicher): Lesen Bewegung in jedem Schritt eine Zelle nach rechts I Zustand (interner Speicher): Lesen und Schreiben 323 Arbeitsweise des Maschinenmodells NFA Start Steuerelement (Lesekopf) in einem Startzustand über der ersten Zelle des Eingabewortes Schritt I I I NFA liest Zeichen in der Zelle unter dem Lesekopf Zustandsübergang im Steuerelement (entsprechend Übergangsrelation und gelesenem Symbol) Lesekopf bewegt sich zur rechten Nachbarzelle Ende Lesekopf auf Zelle ohne Eingabesymbol NFA akzeptiert das Eingabewort, falls akzeptierender Zustand im internen Speicher 324 Konfigurationen eines NFA NFA A = (X , Q, δ, I, F ) Konfiguration (q, w) mit aktuellem Zustand q ∈ Q und ungelesenem Teil des Eingabewortes w ∈ X ∗ Startkonfiguration (s, u) mit Startzustand s ∈ I und Eingabewort u ∈ X ∗ Akzeptierende Konfiguration (f , ε) mit akzeptierendem Zustand f ∈ F Folgekonfiguration zur Konfiguration (p, aw) mit a ∈ X und w ∈ X ∗ : Konfiguration (q, w) mit (p, q) ∈ δ(a) Notation: (p, aw) ` (q, w) Berechnung für Eingabewort w ∈ X ∗ in A: Folge ((q0 , u0 ), . . . , (qn , un )) von Konfigurationen, wobei für alle i ∈ {0, . . . , n − 1} gilt (qi , ui ) ` (qi+1 , ui+1 ) akzeptierende Berechnung für Eingabewort w ∈ X ∗ in A: Berechnung für w mit Endkonfiguration (qn , vn ) = (f , ε) (analog zu akzeptierendem Pfad für w in A) 325 Beispiel A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2)} und δ(b) = {(0, 1), (2, 2)} b a b 0 1 a 2 Eingabewort aabab Startkonfiguration (0, aabab) Endkonfiguration (2, ε) akzeptierende Berechnung für Eingabewort aabab in A: (0, aabab) ` (0, abab) ` (0, bab) ` (1, ab) ` (2, b) ` (2, ε) Man bemerke die Analogie zum akzeptierenden Pfad a a b a b 0→0→0→1→2→2 für aabab in A 326 Maschinenmodelle und Algorithmen Algorithmus: in Schritte geordnete Arbeitsvorschrift I endliche Beschreibung I eines schrittweise ausgeführten Verfahrens I in einer formalen Beschreibungssprache. Arbeitsweise abstrakter Maschinen: I endliche Beschreibung in einer formalen Sprache (Übergangsrelation, Programm) I schrittweise Bearbeitung I (Ergebnis nach endlich vielen Schritten) Jede abstrakte Maschine führt einen Algorithmus aus. (z.B. zur Lösung des Wortproblems (L, w) für reguläre Sprachen L) 327 Parameter abstrakter Maschinenmodelle Verschiedene Maschinenmodelle unterscheiden sich in I Art (Datentyp) und Kapazität des internen und externen Speichers I Art des Zugriffs auf internen und externen Speicher I Reihenfolge der Zugriffe (einmalig, wiederholt) I Determinismus Maschinen definieren (akzeptieren) Sprachen: Menge aller Eingaben mit akzeptierenden Berechnungen Maschinenmodelle definieren Sprachklassen: Menge aller durch eine solche Maschine definierten Sprachen 328 Kellerautomaten – Motivation L = {wcw R | w ∈ {a, b}∗ } ist kontextfrei, aber nicht regulär (NFA-akzeptierbar). gesucht: (einfaches) Maschinenmodell, welches die Sprache L akzeptiert Maschine benötigt Speicher für Folge von Symbolen, um auf diese in umgekehrter Reihenfolge zugreifen zu können passender ADT für den internen Speicher mit dieser Eigenschaft: Stack (Keller) mit seinen Operationen zum I Einfügen (push) I Lesen des „oberen “ Symbols (top) I Entfernen des „oberen “ Symbols (pop) Kellerautomat (pushdown automaton, PDA): Erweiterung von NFA (mit ε-Übergängen) um internen Speicher (Keller, Stack) 329 Kellerautomaten – Definition nichtdeterministischer Kellerautomat (PDA) A = (X , Q, Γ, δ, q0 , F , ⊥) mit X Alphabet (endlich, nichtleer) Q Menge von Zuständen (endlich, nichtleer) Γ Kelleralphabet (endlich, nichtleer) q0 ∈ Q Startzustand F ⊆ Q Menge der akzeptierenden Zustände δ : (X ∪ {ε}) → (Q × Q × Γ × Γ∗ ) Übergangsrelationen mit Änderung des Kellerinhaltes ⊥ ∈ Γ Kellerboden-Symbol 330 PDA – Beispiel PDA A = ({a, b, c}, {q0 , p, q}, {⊥, A, B}, δ, q0 , {q}, ⊥) mit δ(a) = {(q0 , q0 , K , AK ), (p, p, A, ε)} mit K ∈ {⊥, A, B} δ(b) = {(q0 , q0 , K , BK ), (p, p, B, ε)} mit K ∈ {⊥, A, B} δ(c) = {(q0 , p, K , K )} mit K ∈ {⊥, A, B} δ(ε) = {(p, q, ⊥, ⊥)} a: b: K | AK K | BK q0 a: b: c:K |K A|ε B|ε p ε:⊥|⊥ q mit K ∈ {⊥, A, B} 331 PDA – Konfigurationen Konfiguration (q, w, k ) ∈ Q × X ∗ × Γ∗ mit I Zustand q ∈ Q I (noch zu lesendes) Eingabewort w ∈ X ∗ I Kellerinhalt k ∈ Γ∗ I Startkonfigurationen (q0 , w, ⊥) mit w ∈ X ∗ beliebig I Übergang zwischen Konfigurationen: (p, aw, Gk ) ` (q, w, k 0 k ) mit (p, q, G, k 0 ) ∈ δ(a) für k ∈ Γ∗ und (p, w, Gk ) ` (q, w, k 0 k ) mit (p, q, G, k 0 ) ∈ δ(ε) für k ∈ Γ∗ I akzeptierende Konfigurationen (q, ε, k ) mit q ∈ F , k ∈ Γ∗ akzeptierende Berechnung (Konfigurationenfolge) für w in A: Folge (q0 , w0 , k0 ) ` · · · ` (qn , wn , kn ) von Konfigurationen mit 1. (q0 , w0 , k0 ) ist eine Startkonfiguration mit w0 = w. 2. (qn , wn , kn ) ist eine akzeptierende Konfiguration mit wn = ε. 3. Für jedes i ∈ {1, . . . , n} gilt (qi−1 , wi−1 , ki−1 ) ` (qi , wi , ki ). 332 Von PDA akzeptierte Sprachen PDA A = (X , Q, Γ, δ, q0 , F , ⊥) akzeptiert das Wort w ∈ X ∗ gdw. eine akzeptierende Berechnung (Konfigurationenfolge) mit der Startkonfiguration (q0 , w, ⊥) existiert. PDA A = (X , Q, Γ, δ, q0 , F , ⊥) akzeptiert die Sprache L(A) = {w ∈ X ∗ | A akzeptiert w} Sprache L heißt PDA-akzeptierbar gdw. ein PDA A mit L = L(A) existiert. PDA A und B heißen äquivalent gdw. L(A) = L(B) 333 PDA-Akzeptanz – Beispiel PDA A = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , {q}, ⊥) mit δ(a) = {(q0 , q0 , K , xK )} für K ∈ {x, ⊥} δ(b) = {(p, p, x, ε)} δ(ε) = {(q0 , p, K , K ), (p, q, ⊥, ⊥)} mit K ∈ {x, ⊥} a : K | xK q0 b:x |ε ε:K |K p ε:⊥|⊥ q für K ∈ {x, ⊥} A akzeptiert das Wort aabb über die Konfigurationenfolge (q0 , aabb, ⊥) ` (q0 , abb, x⊥) ` (q0 , bb, xx⊥) ` (p, bb, xx⊥) ` (p, b, x⊥) ` (p, ε, ⊥) ` (q, ε, ⊥) und ε über die Konfigurationenfolge (q0 , ε, ⊥) ` (p, ε, ⊥) ` (q, ε, ⊥) aber nicht abb, aba Es gilt L(A) = {an bn | n ∈ } Damit ist die Sprache {an bn | n ∈ } PDA-akzeptierbar. N N 334 Deterministische PDA PDA A = (X , Q, Γ, δ, q0 , F , ⊥) heißt deterministisch (DPDA) gdw. ∀a ∈ X ∀q ∈ Q ∀K ∈ Γ : |{(p, B) | (q, p, K , B) ∈ δ(a) ∪ δ(ε)}| ≤ 1 Sprache L heißt deterministisch kontextfrei gdw. ein deterministischer PDA A mit L = L(A) existiert. Beispiele: N} ist deterministisch kontextfrei, I L = {an bn | n ∈ I L0 = {wcw R ∈ {a, b}∗ | w ∈ {a, b}∗ } ist deterministisch kontextfrei, I L00 = {waw R ∈ {a, b}∗ | w ∈ {a, b}∗ } nicht. Die Menge aller durch deterministische PDA akzeptierbaren Sprachen ist eine echte Teilmenge der Menge aller durch PDA akzeptierbaren Sprachen. 335 Was bisher geschah abstrakte Maschinenmodelle: I Definition: I I I Steuerelement externer Speicher (Ein- und Ausgabe) interner Speicher I Konfiguration (Start-, akzeptierend, Übergänge) I Berechnung I akzeptierte Sprache einer Maschine I akzeptierte Sprachklasse eines Maschinenmodells PDA (Kellerautomat) A = (X , Q, Γ, δ, q0 , F , ⊥) I nichtdeterministisch (PDA) I deterministisch (DPDA) Menge aller durch DPDA akzeptierbaren Sprachen ist eine echte Teilmenge der Menge aller durch PDA akzeptierbaren Sprachen. Beispiel: L = {waw R | w ∈ {a, b}∗ } ∈ REC(PDA) \ REC(DPDA) 336 Schnitt PDA-akzeptierbarer mit regulären Sprachen Satz I Sind L eine PDA-akzeptierbare und L0 eine reguläre Sprache, dann ist die Sprache L ∩ L0 PDA-akzeptierbar. I Sind L eine durch einen DPDA-akzeptierbare und L0 eine reguläre Sprache, dann ist die Sprache L ∩ L0 durch einen DPDA akzeptierbar. gegeben: PDA A = (X , QA , Γ, δA , iA , FA , ⊥) mit L = L(A) DFA B = (X , QB , δB , {iB }, FB ) mit L0 = L(B) N Beispiel: Dyck-Sprache ∩ a∗ b∗ = {an bn | n ∈ } Produktkonstruktion: PDA C = (X , QA × QB , Γ, δ, (iA , iB ), FA × Fb , ⊥) mit (pA , qA , G, k ) ∈ δA (a) ∀a ∈ X : δ(a) = ((pA , pB ), (qA , qB ), G, k ) | ∧(pB , qB ) ∈ δB (a) δ(ε) = {((pA , pB ), (qA , pB ), G, k ) | (pA , qA , G, k ) ∈ δA (ε)} Für den oben konstruierten PDA C gilt L(C) = L(A) ∩ L(B). 337 Spezialfall: Schnitt regulärer Sprachen schon bekannt: REC(NFA) ist unter ∩ abgeschlossen. gegeben: DFA A = (X , QA , δA , {iA }, FA ) DFA B = (X , QB , δB , {iB }, FB ) Beispiel: (ab)∗ ∩ a∗ b∗ a∗ Produktkonstruktion: DFA C = (X , QA × QB , δ, {(iA , iB )}, FA × Fb ) mit (pA , qA ) ∈ δA (a) ∀a ∈ X : δ(a) = ((pA , pB ), (qA , qB )) | ∧(pB , qB ) ∈ δB (a) Für den oben konstruierten DFA C gilt L(C) = L(A) ∩ L(B). 338 PDA – Akzeptanz durch leeren Keller alternative Akzeptanzbedingung akzeptierende Konfigurationen: (q, ε, ε) mit q ∈ Q beliebig Angabe akzeptierender Zustände überflüssig Beispiel: L = {an bn | n ∈ } ist PDA-akzeptierbar durch PDA A = ({a, b}, {q0 , p}, {⊥, x}, δ, q0 , ⊥) mit δ(a) = {(q0 , q0 , K , xK )} für K ∈ Γ δ(b) = {(p, p, x, ε)} δ(ε) = {(q0 , p, K , K ), (q0 , p, ⊥, ε), (p, p, ⊥, ε)} für K ∈ {x, ⊥} N b: ε: a : K | xK q0 ε: ε: K |K ⊥|ε x |ε ⊥|ε p für K ∈ {x, ⊥} 339 Akzeptanzbedingungen für PDA zwei Möglichkeiten zur Definition akzeptierender Konfigurationen: 1. Akzeptanz durch akzeptierenden Zustand (analog NFA): (q, ε, k ) mit q ∈ F und k ∈ Γ∗ beliebig 2. Akzeptanz durch leeren Keller: (q, ε, ε) mit q ∈ Q beliebig Beispiel: Die Sprache L = {an bn | n ∈ durch akzeptierende Zustände akzeptiert durch den PDA A = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , {q}, ⊥) mit a : K | xK q0 b:x |ε ε:K |K p ε:⊥|⊥ q N} wird mit leerem Keller akzeptiert durch den PDA B = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , ⊥) mit a : K | xK ε: ε: q0 b: ε: K |K ⊥|ε x |ε ⊥|ε p für K ∈ {x, ⊥} 340 Äquivalenz beider Akzeptanzbedingungen Satz 1. Zu jedem PDA mit akzeptierenden Zuständen existiert ein äquivalenter PDA, der mit leerem Keller akzeptiert. 2. Zu jedem PDA, der mit leerem Keller akzeptiert, existiert ein äquivalenter PDA mit akzeptierenden Zuständen. Idee (PDA-Transformationen): 1. PDA mit akzeptierenden Zuständen → PDA mit leerem Keller: neues Kellerboden-Symbol und neuen Endzustand hinzufügen, ursprünglicher Automat arbeitet „darüber“, nach Übergang in einen akzeptierenden Zustand ε-Übergänge in diesem akzeptierenden Zustand zum Entfernen aller restlichen Kellersymbole 2. PDA mit leerem Keller → PDA mit akzeptierenden Zuständen: neuen (einzigen) akzeptierenden Zustand hinzufügen, für jeden Übergang in eine Konfiguration mit leerem Keller einen Übergang in diesen akzeptierenden Zustand hinzufügen. 341 Kontextfreie Grammatiken und PDA schon bekannt: L3 = REC(NFA) Die Menge aller regulären (Chomsky-Typ 3) Sprachen ist genau die Menge aller NFA-akzeptierbaren Sprachen. Nachweis durch Übersetzungen I reguläre Grammatik G → NFA A mit L(A) = L(G) I NFA A → reguläre Grammatik G mit L(A) = L(G) Satz L2 = REC(PDA) Die Menge aller kontextfreien (Chomsky-Typ 2) Sprachen ist genau die Menge aller PDA-akzeptierbaren Sprachen. 342 Kontextfreie Grammatik → PDA Lemma Zu jeder kontextfreien Grammatik G existiert ein PDA A mit L(A) = L(G). Beispiel: Łukasiewicz-Sprache erzeugt durch die Grammatik G = ({S}, {a, b}, P, S) mit P = {S → b, S → aSS} gegeben: kontextfreie Grammatik G = (N, X , P, S) Idee: Tiefensuche im Ableitungsbaum (Linksableitung) PDA A = (X , {q}, N ∪ X , δ, q, S) mit δ(ε) ∀a ∈ X : δ(a) = {(q, q, B, w) | B → w ∈ P} = {(q, q, a, ε)} akzeptiert mit leerem Keller Für den so konstruierten PDA A gilt L(A) = L(G). Nachweis: Eindeutige Zuordnung zwischen Linksableitungen S → u 1 A1 v 1 → u 1 u 2 A2 v 2 → · · · → u 1 . . . u m−1 Am−1 v m−1 → w = u 1 . . . u m und akzeptierenden Berechnungen für w = u 1 . . . u m (q, w, S) ` (q, u 1 . . . u m , u 1 A1 v 1 ) ` · · · ` (q, u 2 . . . u m , A1 v 1 ) ` (q, u 2 . . . u m , u 2 A2 v 2 ) ` · · · ` (q, u m , u m ) ` · · · ` (q, ε, ε) 343 PDA → kontextfreie Grammatik Beispiel: PDA A = ({a, b}, {q}, {X , ⊥}, δ, q, ⊥} (LK-Akzeptanz) mit δ(a) = {(q, q, X , XX )(q, q, ⊥, X ⊥)}, δ(b) = {(q, q, X , ε)} und δ(ε) = {(q, q, ⊥, ε)} Lemma Zu jedem PDA A existiert eine kontextfreie Grammatik G mit L(A) = L(G). Nacheinanderausführung der Konstruktionen PDA → kontextfreie Grammatik → PDA führt zur folgenden Aussage: Folgerung Zu jedem PDA existiert ein äquivalenter PDA mit einem Zustand, der mit leerem Keller akzeptiert. 344 PDA → kontextfreie Grammatik (Vorbereitung) Fakt Jeder PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) ist äquivalent zu einem PDA B = (X , Q 0 , Γ0 , δ 0 , q00 , ⊥0 ) (LK-Akzeptanz) mit der Eigenschaft ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ 0 (a) : |w| ≤ 2 Konstruktion: für jedes a ∈ x ∪ {ε} Ersetzung jedes Überganges (p, q, G, w) ∈ δ(a) für w = w1 . . . wn mit n > 2 durch die Regeln (p, p1 , G, wn−1 wn ) ∈ δ(a) (p1 , p2 , wn−1 , wn−2 wn−1 ) ∈ δ(ε) .. . (pn−1 , q, w2 , w1 w2 ) ∈ δ(ε) mit neu hinzugefügten Zuständen p1 , . . . , pn−1 345 PDA → kontextfreie Grammatik (Idee) gegeben: PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) mit ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ(a) : |w| ≤ 2 Ziel: Konstruktion einer kontextfreien Grammatik G = (N, X , P, S), so dass die Linksableitungen in G genau den akzeptierenden Berechnungen in A entsprechen. akzeptierende Berechnung für w in A: (q0 , w, ⊥) ` · · · ` (q, ε, ε) mögliche Konfigurationsübergänge in A: I oberes Kellersymbol löschen (p, q, A, ε) ∈ δ(a) für a ∈ X ∪ {ε} entspricht Grammatikregel (p, A, q) → a I oberes Kellersymbol durch genau ein neues ersetzen (p, q, A, B) ∈ δ(a) für a ∈ x ∪ {ε} entspricht Grammatikregel (p, A, q 0 ) → a(q, B, q 0 ) für alle q 0 ∈ Q I oberes Kellersymbol durch genau zwei neue ersetzen (p, q, A, BC) ∈ δ(a) für a ∈ x ∪ {ε} entspricht Grammatikregel (p, A, q 0 ) → a(q, B, r )(r , C, q 0 ) für alle q0, r ∈ Q 346 PDA → kontextfreie Grammatik (Konstruktion) gegeben: PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) mit ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ(a) : |w| ≤ 2 Konstruktion kontextfreier Grammatik G = (N, X , P, S) mit N = (Q × Γ × Q) ∪ {S} P = {S → (q0 , ⊥, q) | q ∈ Q} ∪ {(p, B, q) → a | (p, q, B, ε) ∈ δ(a)} ∪ {(p, B, q) → a(p0 , C, q) | (p, p0 , B, C) ∈ δ(a) ∧ q ∈ Q} ∪ {(p, B, q) → a(p0 , C, q)(q, D, q 0 ) | (p, p0 , B, CD) ∈ δ(a) ∧ q, q 0 ∈ Q} Für die so konstruierte Grammatik G gilt L(A) = L(G). 347 PDA → kontextfreie Grammatik (Beispiel) PDA A = ({a, b}, {q}, {X , ⊥}, δ, q, ⊥} (LK-Akzeptanz) mit δ(a) = {(q, q, X , XX )(q, q, ⊥, X ⊥)}, δ(b) = {(q, q, X , ε)}, δ(ε) = {(q, q, ⊥, ε)} G = (N, X , P, S) zu A mit N = {S, (q, ⊥, q), (q, X , q)} S → (q, ⊥, q) (q, X , q) → b (q, ⊥, q) → ε P = (q, X , q) → a(q, X , q)(q, X , q) (q, ⊥, q) → a(q, X , q)(q, ⊥, q) wegen (q, q, X , ε) ∈ δ(b) wegen (q, q, ⊥, ε) ∈ δ(ε) wegen (q, q, X , XX ) ∈ δ(a) wegen (q, q, ⊥, X ⊥) ∈ δ(a) 348 Abschlusseigenschaften von CF Sind L1 und L2 kontextfreie Sprachen, dann sind auch I L1 ∪ L2 I L1 ◦ L2 I L∗1 I L1 ∩ L0 für jede reguläre Sprache L0 kontextfreie Sprachen. Die Menge aller kontextfreien Sprachen ist nicht abgeschlossen unter I Schnitt Beispiel: L1 = {ai bi c k | i, k > 0} ∈ CF und L2 = {ai bk c k | i, k > 0} ∈ CF, aber L1 ∩ L2 = {ai bi c i | i > 0} 6∈ CF nicht. I Komplement (Warum ?) 349 Algorithmische Lösungen für kontextfreie Sprachen algorithmisch entscheidbar sind Wortproblem: Eingabe (L, w) (durch PDA A mit L = L(A)) Ausgabe: ja, falls w ∈ L, sonst nein (Akzeptanz durch A) I Leerheit: Eingabe L (durch CFG G mit L = L(G)), Ausgabe: ja, falls L(G) = ∅, sonst nein (ja, falls Startsymbol der Grammatik kein Terminalwort erzeugt) I Endlichkeit: Eingabe L, Ausgabe: ja, falls L endlich, sonst nein (Pumping-Lemma, hier nicht gezeigt) I nicht algorithmisch entscheidbar sind Inklusion: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ⊆ L2 , sonst nein I Gleichheit: Eingabe L1 , L2 , Ausgabe: ja, falls L1 = L2 , sonst nein I Disjunktheit: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 = ∅, sonst nein I Kontextfreiheit des Schnittes: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 kontextfrei, sonst nein I 350 Was bisher geschah Reguläre Sprachen (REG): erzeugt durch reguläre Grammatik (Chomsky-Typ 3), akzeptiert von NFA, DFA abgeschlossen unter ∪, ∩, , ◦, ∗ , R Anwendungen z.B. Suchen von Zeichenketten in Texten, Darstellung von Bezeichnern, Konstanten nicht-reguläre Sprachen , z.B. {an bn | n ∈ }, Dyck-Sprachen, 2 {w ∈ {a, b}∗ | w = w R }, {an | n ∈ } N N Kontextfreie Sprachen (CF): erzeugt durch kontextfreie Grammatik (Chomsky-Typ 2) akzeptiert von PDA abgeschlossen unter ∪, ◦, ∗ , R Anwendungen z.B. Syntax regulärer und arithmetischer Ausdrücke, Formeln, Programmier- und Beschreibungssprachen, (natürlichen Sprachen), nicht-kontextfreie Sprachen , z.B. {an bn c n | n ∈ }, 2 {ww | w ∈ {a, b}∗ }, {an | n ∈ } N N 351 Wiederholung: Maschinenmodelle Definition (endliche Beschreibung) durch I interne Steuerung (z.B. endliche Menge von Zuständen) I externen und internen Speicher mit speziellen Zugriffsmöglichkeiten I Typ des Speicherinhaltes (z.B. endliches Wort über endlichem Alphabet) I Zugriffsmethode (z.B. Lesen / Schreiben, einmal / wiederholt, feste Reihenfolge) Konfigurationen (Momentaufnahmen) und endliche Menge zulässiger lokaler Übergänge zwischen Konfigurationen schrittweise Berechnung : Folge von Konfigurationen von einer Startkonfiguration über zulässige Konfigurationsübergänge Akzeptanz einer Eingabe durch akzeptierende Berechnung: endliche Konfigurationenfolge zu einer akzeptierenden Konfiguration 352 Unendliche Konfigurationsfolgen Jede Instanz eines Maschinenmodells (gegebener NFA, DFA, PDA, DPDA, TM) definiert ein Zustandsübergangssystem (gerichteter Graph): Knoten: Konfigurationen (Zustände) darunter Start- und akzeptierende Konfigurationen Kanten: zulässige Konfigurationsübergänge Beispiel: PDA B = ({a}, {0, 1}, {⊥, X }, δB , 0, {0}, ⊥) mit δA (a) = {(0, 1, ⊥, ⊥), (0, 1, X , X )}, δA (ε) = {(0, 1, ⊥, X ⊥), (1, 0, X , ε)} Beobachtung: In PDA mit ε-Übergängen können unendliche Konfigurationsfolgen existieren. Aber: Akzeptierende Konfigurationsfolgen für endliche Wörter sind immer endlich. Deshalb sind unendliche Konfigurationsfolgen für die Definition von Sprachen und Sprachklassen endlicher Wörter irrelevant. 353 Wiederholung – Sprachen vom Chomsky-Typ 0 Regeln der Form l → r mit l ∈ (N ∪ T )+ und r ∈ (N ∪ T )∗ Beispiel: G = ({A, B, C}, {a, b, c}, P, A) mit A → aABC A → aBC CB → BC aB → ab P= bB → bb bC → bc cC → cc (sogar Chomsky-Typ 1) definiert die Sprache L(G) = {an bn c n | n ∈ N \ {0}} 354 Turing-Maschine – Idee Ziel: Maschinenmodell für Sprachen vom Chomsky-Typ 0 (und 1) Komponenten des Maschinenmodells: I Steuereinheit: Lese/Schreib-Kopf I interner Speicher: 1. endliche Menge von Zuständen (Lesen / Schreiben) 2. beidseitig unendliches Arbeitsband aus Zellen I I I Typ des Speicherinhaltes: endliches Wort über endlichem Alphabet (Arbeitsalphabet) Zugriffsmethode: Lesen / Schreiben Bewegung des Lese/Schreib-Kopfes auf ein Nachbarfeld externer Speicher: 3. beidseitig unendliches Eingabeband aus Zellen I I Typ des Speicherinhaltes: endliches Wort über endlichem Alphabet (Eingabealphabet) Zugriffsmethode: Lesen Bewegung des Lese-Kopfes auf ein Nachbarfeld übliche Vereinfachung der Struktur: Zusammenfassen der Bänder im internen und externen Speicher zu einem Eingabe- und Arbeitsband (2,3) mit Lese/Schreib-Zugriff 355 Turing-Maschine – Definition Turing-Maschine (TM) M = (X , Q, Γ, δ, q0 , F , ) mit X endliches Eingabealphabet Q endliche Menge von Zuständen Γ ⊃ X endliches Arbeitsalphabet δ ⊆ (Γ × Q × Γ × Q × {L, R, N}) Übergangsrelation q0 Startzustand F akzeptierende Zustände ∈ Γ \ X Leere-Zelle-Symbol TM M heißt deterministisch gdw. ∀a ∈ Γ∀q ∈ Q : | {(a, q, b, p, x) | p ∈ Q, b ∈ Γ, x ∈ {L, R, N}}∩δ| ≤ 1 356 Beispiele für Turing-Maschinen I TM M1 = ({a, b}, {q0 , f }, {a, b, }, δ, q0 , {f }, ) mit δ = {(a, q0 , a, q0 , L), (b, q0 , b, q0 , L), (, q0 , , f , R)} I TM M2 = ({a, b}, {q0 , qa , qb , f }, {a, b, }, δ, q0 , {f }, ) mit (a, q0 , , qa , R), (b, q0 , , qb , R), (a, qa , a, qa , R), (b, qa , b, qa , R), δ= (a, qb , a, qb , R), (b, qb , b, qb , R), (, q0 , , f , R), (, qa , a, f , R), (, qb , b, f , R) I TM M3 = ({1}, {q0 , q1 , q2 , q3 , q4 , f }, {1, x, }, δ, q0 , {f }, ) mit δ = {(1, q0 , 1, q1 , R), (1, q1 , x, q2 , R), (1, q2 , 1, q3 , R)} ∪ {(1, q3 , x, q2 , R), (1, q4 , 1, q4 , L), (x, q1 , x, q1 , R)} ∪ {(x, q2 , x, q2 , R), (x, q3 , x, q3 , R), (x, q4 , x, q4 , L)} ∪ {(, q1 , , f , L), (, q2 , , q4 , L), (, q4 , , q0 , R)} 357 Konfigurationen einer TM TM M = (X , Q, Γ, δ, q0 , F , ) Konfiguration (u, q, v ) ∈ (Γ∗ × q × Γ∗ ) bedeutet: I I I aktueller Bandinhalt: w = uv aktueller Zustand der TM: q Schreib-/Lesekopf der TM zeigt auf erstes Symbol von v (Leere-Zelle-Symbol, falls v = ε) Startkonfigurationen (, q0 , w) mit w ∈ X ∗ akzeptierende Konfigurationen (u, q, v ) mit q ∈ F Konfigurationsübergänge von (ua, p, bv ): für (b, p, c, q, R) ∈ δ : (ua, p, bv ) ` (uac, q, v ) für (b, p, c, q, L) ∈ δ : (ua, p, bv ) ` (u, q, acv ) für (b, p, c, q, N) ∈ δ : (ua, p, bv ) ` (ua, q, cv ) 358 Akzeptanz durch TM TM M = (X , Q, Γ, δ, q0 , F , ) M akzeptiert das Wort w ∈ X ∗ gdw. eine Folge k0 , . . . , kn von Konfigurationen ki ∈ Γ∗ × Q × Γ∗ exisiert, so dass gilt: 1. k0 = (, q0 , w) ist die Startkonfiguration mit Eingabe w 2. kn ∈ Γ∗ × F × Γ∗ ist eine akzeptierende Konfiguration 3. für jedes i ∈ {1, . . . , n} ist ki−1 ` ki ein zulässiger Konfigurationsübergang Beispiele: n L(M1 ) = L(M2 ) = {a, b}∗ , L(M3 ) = {1(2 ) | n ∈ N} M akzeptiert die Sprache L(M) = {w ∈ X ∗ | M akzeptiert w} L ⊆ X ∗ heißt Turing-akzeptierbar gdw. eine TM M mit L = L(M) existiert. 359 Was bisher geschah Maschinenmodelle: endliche Automaten: alle regulären Sprachen (Chomsky-Typ 3) durch nichtdeterministisches (NFA) und deterministisches (DFA) Maschinenmodell akzeptierbar. (Transformation von NFA in äquivalente DFA möglich.) REC(NFA) = REG abgeschlossen unter ∪, ∩, , ◦, ∗ , R PDA : alle kontextfreien Sprachen (Chomsky-Typ 2) durch nichtdeterministisches Maschinenmodell (PDA) akzeptierbar, aber nicht durch deterministisches Maschinenmodell (keine Transformation möglich) REC(PDA) = CF abgeschlossen unter ∪, ◦, ∗ , R und Schnitt mit REG, aber nicht unter ∩, TM : REC(TM) entspricht Chomsky-Typ ? akzeptieren deterministisches und nichtdeterministisches Modell dieselbe Sprachklasse ? abgeschlossen unter ? 360 NFA (X , Q, δ, I, F ) I I Eingabeband (externer Speicher) enthält w ∈ X ∗ Zugriff durch Lesekopf auf einer Zelle des Eingabebandes, Bewegung auf rechte Nachbarzelle interner Speicher: q ∈ Q, Zugriff Lesen / Schreiben PDA (X , Q, Γ, δ, q0 , F , ⊥) I I Eingabeband (externer Speicher) enthält w ∈ X ∗ Zugriff durch Lesekopf auf einer Zelle des Eingabebandes keine Bewegung oder Bewegung auf rechte Nachbarzelle interner Speicher: I I q ∈ Q, Zugriff Lesen / Schreiben Stack k ∈ Γ∗ (Zugriff mit push, pop, top) TM (X , Q, Γ, δ, q0 , F , ) I I (Eingabe- und Arbeits-)Band (externer und interner Speicher) enthält zu Beginn w ∈ X ∗ Zugriff durch Lese/Schreibkopf auf eine Zelle keine, Rechts- oder Links-Bewegung auf Nachbarzelle interner Speicher: q ∈ Q, Zugriff Lesen / Schreiben 361 Turing-Maschine – Beispiel TM M = ({a, b, c}, {q0 , q1 , q2 , q3 , f }, {a, b, x, }, δ, q0 , {f }, ) mit (, q0 , , f , N), (, q3 , , q0 , R), (a, q , x, q , R), 0 1 (a, q , a, q , R), 1 1 (a, q , a, q , L), 3 3 (b, q1 , x, q2 , R), (b, q2 , b, q2 , R), δ= (b, q3 , b, q3 , L), (c, q , x, q , L), 2 3 (x, q , x, q , R), 0 0 (x, q , x, q , R), 1 1 (x, q , x, q , R), 2 2 (x, q3 , x, q3 , L) akzeptiert L(M) = {an bn c n | n ∈ N} 362 Berechnung einer Turing-Maschine Möglichkeiten für Berechnungen einer TM M für ein Eingabewort w: 1. Berechnung endet in einer akzeptierenden Konfiguration (u, p, v ) (d.h. p ∈ F ), 2. Berechnung endet in einer nicht-akzeptierenden Konfiguration (u, p, v ) (d.h. p 6∈ F ), 3. Berechnung endet nicht (unendliche Berechnung). Im Fall 1 akzeptiert M das Eingabewort w, in Fall 2 und 3 nicht. Zu jeder TM M existiert eine TM M 0 , so dass L(M) = L(M 0 ) und in M 0 jede endliche nicht-fortsetzbare Berechnung in einer akzeptierenden Konfiguration endet. (d.h. Fall 2 kommt in M 0 nicht vor) 363 Alternative Akzeptanzbedingung für TM TM M = (X , Q, Γ, δ, q0 , F , ) hält in einer Konfiguration (u, q, v ) ∈ Γ∗ × Q × Γ∗ gdw. aus (u, q, v ) kein Konfigurationsübergang in M möglich ist. Zu jeder TM M existiert eine TM M 0 mit L(M) = L(M 0 ) ohne Nachfolgekonfigurationen aus akzeptierenden Konfigurationen. (evtl. neuen akzeptierenden Zustand hinzufügen) Fakt Zu jeder TM M existiert eine TM M 0 mit L(M) = L(M 0 ), die nur in akzeptierenden Konfigurationen hält. (Schleifen in nicht-akzeptierenden Zuständen hinzufügen) Fakt Zu jeder TM M existiert eine TM M 0 , so dass für jedes w ∈ M akzeptiert w gdw. M 0 bei Eingabe von w hält. X∗ : Akzeptierende Zustände sind bei Akzeptanz durch Halt irrelevant (analog PDA-Akzeptanz durch leeren Keller). 364 TM für Verschiebung TM M = ({0, •, 1}, {q0 , q1 , q2 , q3 , q4 , q5 , f }, {0, 1, •, }, δ, q0 , {f }, ) mit (, q1 , , q4 , L), (0, q0 , 0, q0 , R), (0, q , •, q , L), 1 2 (1, q , 1, q , R), 0 0 (1, q1 , •, q3 , L), δ= (•, q0 , •, q1 , R), (•, q , 0, q , R), 5 2 (•, q , 1, q , R), 5 3 (•, q4 , , f , N), (•, q5 , •, q1 , R) akzeptiert jedes Eingabewort aus (0 + 1)∗ • (0 + 1)∗ , verschiebt dabei den Teil nach dem • um eine Zelle nach links 365 Operationen auf TM-akzeptierbaren Sprachen gegeben: TM A, TM B (Akzeptanz durch Halt) gesucht: TM C mit ∩: L(C) = L(A) ∩ L(B) ∪: L(C) = L(A) ∪ L(B) ◦: L(C) = L(A) ◦ L(B) ∗: L(C) = L(A)∗ R: L(C) = L(A)R Skizzen zu Konstruktionen der TM C (Tafel) mit Turing-Maschinen für „Hilfsarbeiten“, z.B. Verschieben, Kopieren, Zerlegen von Wörtern, Steuerung der abwechselnden Ausführung mehrerer TM 366 Was bisher geschah Turing-Maschine (X , Q, Γ, δ, q0 , F , ) I akzeptiert Sprache L ⊆ X ∗ (durch akzeptierende Zustände oder Halt) I ändert i.A. während der Berechnung den Inhalt (w ∈ Γ∗ ) des Arbeitsbandes I Menge REC(TM) der TM-akzeptierbaren Sprachen ist abgeschlossen unter ∪, ∩, ◦,∗ ,R , aber nicht unter I Akzeptieren deterministische und nichtdeterministische TM dieselbe Sprachklasse? I REC(TM) entspricht Chomsky-Typ ? 367 Nichtdeterministische TM TM M = ({0, 1}, {p, q, f }, {0, 1, }, δ, p, {f }, ) mit (0, p, 1, p, R), (1, p, 1, p, R), (1, p, 1, q, R), δ= (1, q, 1, q, R), (, q, , f , N) akzeptiert z.B. das Wort 11011 mit (u.A.) folgender Berechnung (, p, 11011) ` (1, p, 1011) ` (11, p, 011) ` (111, p, 11) ` (1111, q, 1) ` (11111, q, ) ` (11111, f , ) 368 Simulation nichtdeterministischer TM Satz Zu jeder nichtdeterministischen TM M existiert eine deterministische TM M 0 mit L(M) = L(M 0 ). Beweisidee: Menge aller möglichen Berechnungen von M für Eingabe w bilden einen Baum (evtl. mit unendlichen Pfaden): Knoten : Konfigurationen Wurzel : Startkonfiguration (Startzustand, Eingabewort) Blätter : akzeptierende Konfigurationen Kanten : zulässige Konfigurationsübergänge in M M0 führt Breitensuche in diesem Baum durch (simuliert parallele Berechnung aller Möglichkeiten), Bandinhalt von M 0 sind Konfigurationen aus M M 0 akzeptiert, sobald eine akzeptierende Konfiguration von M auf dem Band steht. 369 Beispiel - Sprache vom Chomsky-Typ 0 Regeln l → r mit l ∈ (T ∪ N)+ , r ∈ (T ∪ N)∗ G = ({S, T , }, {0, 1}, P, S) mit S → 1S101 S → 01S00 S → 110S11 0S0 → T P= 0T 0 → T 1S1 → T 1T 1 → T T → ε Gilt ε ∈ L(G) ? S → 110S11 → 11001S0011 → 11001110S110011 → 110011101S101110011 → 11001110T 01110011 →∗ 110T 011 → 11T 11 → 1T 1 → T → ε 370 TM und Sprachen vom Chomsky-Typ 0 Satz Die Menge aller Sprachen, die von einer TM akzeptiert werden, ist genau die Menge aller Sprachen vom Chomsky-Typ 0. Idee der Konstruktionen: I Grammatik → TM: M berechnet für das Eingabewort w (letztes Wort einer Ableitung) eine Ableitung in der Grammatik „rückwärts“. (Evtl. wird dabei der Bandinhalt geeignet verschoben.) TM akzeptiert, wenn Bandinhalt = Startsymbol I TM → Grammatik: Grammatik erzeugt für jedes mögliche Eingabewort w einen „Kandidaten“ w 0 (Startkonfiguration der TM mit Eingabe w). Grammatik-Regeln beschreiben die lokalen Änderungen bei Konfigurationsübergängen der TM (Simulation der Berechnung der TM auf w durch Ableitung in der Grammatik). Wird in der Ableitung eine akzeptierende Konfiguration errreicht, „Übersetzung“ des Kandidaten w 0 in Terminalwort w. 371 Beispiel - Sprache vom Chomsky-Typ 1 (monotone, kontextsensitive Grammatik) Regeln l → r mit l, r ∈ (T ∪ N)+ mit |l| ≤ |r | G = ({S, R, T , A, B}, {a, b}, P, S) mit S → RT R → RB BT → AA P= BA → AA RA → ba aA → aa Ableitung für das Wort baaaa S → RT → RBT → RBBT → RBBBT → RBBAA → RBAAA → RAAAA → baAAA → baaAA → baaaA → baaaa 372 TM mit linear beschränktem Band (LBA) TM M = (X , Q, Γ, δ, q0 , F , ) heißt linear beschränkt (LBA) gdw. 1. M nichtdeterministisch und 2. für jede bei Eingabe von w in M erreichbare Konfiguration upv ∈ Γ∗ × Q × Γ∗ gilt |uv | ≤ |w|. Satz Die Menge aller Sprachen, die von einer TM mit linear beschränktem Band akzeptiert werden, ist genau die Menge aller Sprachen vom Chomsky-Typ 1. 373 Abschlusseigenschaften von L0 und L1 Die Menge L0 aller Turing-akzeptierbaren Sprachen (Chomsky-Typ 0) ist abgeschlossen unter: I ∩ (sequentieller Akzeptanztest durch beide TM) I ∪ ((pseudo-)paralleler Akzeptanztest durch beide TM) I ◦, I R ∗ (nichtdeterministische Zerlegung und Test) Die Menge aller Turing-akzeptierbaren Sprachen ist nicht unter Komplement abgeschlossen. (Nachweis durch Gegenbeispiel später) Die Menge L1 aller Sprachen vom Chomsky-Typ 1 ist abgeschlossen unter ∪, ∩, , ◦, ∗ , R Abschluss unter : Immerman, Szelepcsényi (1987) 374 Zusammenfassung: Turing-akzeptierbare Sprachen I Deterministische TM akzeptieren dieselbe Sprachklasse wie nichtdeterministische TM, und zwar genau alle Sprachen vom Chomsky-Typ 0 I Die Menge aller TM-akzeptierbaren Sprachen ist abgeschlossen unter ∪, ∩, ◦, ∗ , aber nicht unter (Gegenbeispiel später) I Wortproblem, Leerheit, Endlichkeit und Gleichheit sind für TM-akzeptierbare Sprachen nicht algorithmisch entscheidbar alternative Bezeichnung: Die Menge aller TM-akzeptierbaren Sprachen ist genau die Menge aller aufzählbaren Sprachen. 375 Zusammenfassung: LBA-akzeptierbare Sprachen I (Nichtdeterministische) linear beschränkte TM (LBA) akzeptieren genau alle Sprachen vom Chomsky-Typ 1 (kontextsensitiv) I Ob deterministische und nichtdeterministische LBA dieselbe Sprachklasse akzeptieren, ist noch unbekannt (LBA-Problem) I Die Menge aller von LBA akzeptierten Sprachen (Chomsky-Typ 1) ist abgeschlossen unter ∪, ∩, , ◦, ∗ , R I Wortproblem ist für LBA-akzeptierbare Sprachen ist algorithmisch entscheidbar. (schon früher gezeigt: Wortproblem für nichtverlängernde Wortersetzungssysteme) I Leerheit, Endlichkeit und Gleichheit kontextsensitiver Sprachen sind nicht algorithmisch entscheidbar. 376 Beispiel - Berechnung einer TM M = ({a, b}, {q0 , q1 , q2 , q3 }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , , q1 , R), (b, q0 , , q2 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , R), (, q1 , a, q3 , N)} ∪{(a, q2 , a, q2 , R), (b, q2 , b, q2 , R), (, q2 , b, q3 , N)} (deterministisch, Akzeptanz durch Halt) akzeptiert die Sprache L(M) = (a + b)+ für Eingabewort I w = aw 0 : Bandinhalt bei Halt w 0 a I w = bw 0 : Bandinhalt bei Halt w 0 b 377 TM zur Berechnung von Funktionen Idee: deterministische TM M berechnet eine Funktion fM : X ∗ → Γ∗ Eingabe w ∈ X ∗ : Inhalt des Arbeitsbandes bei Start der Berechnung (Eingabewort) Ausgabe v ∈ Γ∗ : Inhalt des Arbeitsbandes nach Halt der TM Wenn M bei Eingabe von w nicht hält, ist der Wert fM (w) nicht definiert. TM M berechnet i.A. nur eine partielle Funktion fM : X ∗ → Γ∗ da fM nur für durch Halt akzeptierte Wörter w ∈ X ∗ definiert ist 378 Turing-berechenbare Funktionen Jede deterministische TM M definiert die (partielle) Funktion fM : X ∗ → Γ∗ , wobei ∀w ∈ X ∗ ( v falls Bandinhalt v , nachdem M hält fM (w) = nicht definiert falls M nicht hält Beispiel: M = ({a, b}, {q0 , q1 , q2 , q3 }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , , q1 , R), (b, q0 , , q2 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , R), (, q1 , a, q3 , N)} ∪{(a, q2 , a, q2 , R), (b, q2 , b, q2 , R), (, q2 , b, q3 , N)} definiert die Funktion ( vx falls w = xv mit x ∈ {a, b} und v ∈ {a, b}∗ fM (w) = nicht definiert falls w = ε Eine Funktion f : X ∗ → X ∗ heißt Turing-berechenbar gdw. eine deterministische TM M mit f = fM existiert. 379 Beispiele I I g : {1}∗ → {1}∗ mit g(w) für alle w ∈ {1}∗ undefiniert ist berechenbar durch die TM M = ({1}, {q0 }, {1, }, δ, q0 , ) mit δ = {(q0 , 1, q0 , 1, N), (q0 , , q0 , , N)} f : {a, b}∗ → {a, b}∗ mit für alle w ∈ {a, b}∗ gilt ( am+n falls w = am ban f (w) = nicht definiert sonst ist berechenbar durch die TM M = ({a, b}, {q0 , q1 , q2 , f }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , a, q0 , R), (b, q0 , a, q1 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , N), (, q1 , , q2 , L)} ∪{(a, q2 , , f , N)} 380 Turing-berechenbare Funktionen auf Codierung natürlicher Zahlen, z.B. in I I N N → {1}∗ Binärcodierung c2 : N → {0, 1}∗ Unärcodierung c1 : Beispiele: I M = ({1}, {q0 , q1 }, {1, }, δ, q0 , ) mit δ = {(q0 , 1, q0 , 1, R), (q0 , , q1 , 1, N)} berechnet die Funktion fM (x) = x + 1 in Unärcodierung I M = ({0, 1}, {q0 , q1 , q2 , q3 , f }, {0, 1, }, δ, q0 , ) mit δ = {(0, q0 , 0, q0 , R), (1, q0 , 1, q0 , R), (, q0 , , q1 , L)} ∪{(0, q1 , 1, q3 , L), (1, q1 , 0, q2 , L), (, q1 , , q1 , N)} ∪{(0, q2 , 1, q3 , L), (1, q2 , 0, q2 , L), (, q2 , 1, f , R)} ∪{(0, q3 , 0, q3 , L), (1, q3 , 1, q3 , L), (, q3 , , f , R)} berechnet die Funktion fM (x) = x + 1 in Binärcodierung (ohne führende 0) 381 Was bisher geschah NFA, DFA, PDA und Turing-Maschinen können I Sprachen L ⊆ X ∗ akzeptieren. deterministische Turing-Maschinen können außerdem I (partielle) Funktionen f : X ∗ → X ∗ berechnen (Zahlen, Tupel von Zahlen,. . . codiert als Wörter in X ∗ , z.B. für X = {1} oder X = {0, 1} ) 382 Beispiel: Unärcodierung → Binärcodierung f : {1}∗ → {0, 1}∗ Transformation Unär- → Binärcodierung wird (z.B.) berechnet von TM M = ({1}, {q0 , q1 , q2 , q3 , q4 , f }, {1, 0, x, y , }, δ, q0 , {f }, ) mit (1, q , x, q , R), (, q , , q , L), 0 0 0 1 (x, q , x, q , L), (, q , , q , R), 1 1 1 2 (x, q , y , q , L), (, q , , q , L), 2 3 2 4 (y , q2 , y , q2 , R), (1, q2 , 1, q2 , R), (0, q2 , 0, q2 , R), δ= (, q3 , 1, q2 , R), (0, q3 , 1, q2 , R), (1, q , 0, q , L), (y , q , y , q , L) 3 3 3 3 (y , q4 , , q4 , L), (0, q4 , 0, q4 , L), (1, q4 , 1, q4 , L), (, q4 , , f , R) 383 Mehrstellige Turing-berechenbare Funktionen auf Codierung von Tupeln (x1 , . . . , xk ) ∈ c(x1 ) • c(x2 ) • · · · • c(xk ) N k N durch mit Trennzeichen • Beispiel: TM M = ({1, •}, {q0 , q1 , q2 , f }, {1, •, }, δ, q0 , ) mit δ = {(1, q0 , 1, q0 , R), (•, q0 , 1, q1 , R), (, q0 , , q0 , N)} ∪{(1, q1 , 1, q1 , R), (•, q1 , •, q1 , N), (, q1 , , q2 , L)} ∪{(1, q2 , , f , N)} berechnet die Funktion fM (x, y ) = x + y (in Unärcodierung) N N Eine Funktion f : k → heißt Turing-berechenbar gdw. eine deterministische TM M existiert, so dass für jede Eingabe (x1 , . . . , xk ) ∈ k gilt N f (x1 , . . . , xk ) = y gdw. fM (c(x1 ) • · · · • c(xk )) = c(y ) 384 Codierung von TM (Gödelnummer) (Kurt Gödel 1906 - 1978) Darstellung jeder TM M = (X , Q, Γ, δ, q0 , ) als (endliches) Wort über dem endlichen Alphabet X 0 = X ∪ Γ ∪ Q ∪ {L, R, N}∪ Klammern ∪ Trennzeichen möglich Menge aller Codierungen von TM ist Sprache über X 0 Codierung als {0, 1}-Folge: I Alphabet, Zustände, Richtungen in Unärcodierung (∈ 1∗ ) I Trennzeichen, Klammern als Folgen ∈ 0∗ Gödelnummer einer TM M: Darstellung von M in maschinenlesbarer Form, z.B. ∈ {0, 1}∗ (als Eingabe für eine TM geeignet) Die Menge aller {0, 1}-Folgen, die korrekten Codierungen von TM sind, ist I abzählbar I TM-akzeptierbar (sogar regulär). 385 Beispiel: Gödelnummer einer TM Codierung einer TM als Wort aus {0, 1}∗ Beispiel: TM M = (X , Q, Γ, δ, q1 , ) in {0, 1}∗ mit I X = {1, } mit c(1) = 1, c() = 11 I Q = {q0 , q1 } mit Startzustand q0 : c(q0 ) = 1, c(q1 ) = 11 I B = {L, R, N} mit c(L) = 1, c(R) = 11, c(N) = 111 I δ = {(q0 , , q1 , 1, R), (q1 , , q0 , 1, L), (q0 , 1, q1 , 1, L)} (busy beaver) für jeden Übergang u = (p, a, q, b, r ) ∈ δ: Codierung : c(u) = c(p)0c(a)0c(q)0c(b)0c(r ) c(q0 , , q1 , 1, R) = 101101101011 c(q1 , , q0 , 1, L) = 11011010101 c(q0 , 1, q1 , 1, L) = 1010110101 Codierung der TM M: c(M) = 000c(q0 , , q1 , 1, R)00c(q1 , , q0 , 1, L)00c(q0 , 1, q1 , 1, L)000 386 Nicht Turing-berechenbare Funktionen Ist jede partielle Funktion f : X ∗ → X ∗ (f : X ∗ → Y ∗ , f : → , f : n → ) Turing-berechenbar? N N N N Nein (Gegenbeispiel später) Begründung: (Aussage für X = {0, 1} zu zeigen, genügt) 1. Wieviele Turing-Maschinen über einem endlichen Alphabet gibt es? abzählbar viele (weil TM endlich codiert werden können, nach erstem Diagonalverfahren von Cantor) 2. Wieviele partielle Funktionen f : X ∗ → X ∗ gibt es? überabzählbar viele (zweites Diagonalverfahren von Cantor) Damit existieren sogar sehr viel mehr (überabzählbar viele) partielle Funktionen f : X ∗ → X ∗ (f : X ∗ → Y ∗ , f : → , f : n → ), die nicht von TM berechnet werden können. N N N N Warum sind TM als Berechnungsmodell trotzdem interessant? 387 Intuitiver Berechenbarkeitsbegriff Eine partielle Funktion f : X ∗ → X ∗ ist berechenbar, falls I eine Rechenvorschrift oder I ein Algorithmus oder I ein Programm (in beliebiger Programmiersprache) oder I eine deterministische Turingmaschine N existiert, welche für jedes x ∈ bei Eingabe von x den Wert f (x) ausgibt, falls f (x) definiert ist. weitere Berechnungsmodelle: Registermaschinen, while-Programme, partiell rekursive Funktionen, λ-Kalkül, . . . 388 These von Church (Alonzo Church 1903-1995) Für alle bisher vorgeschlagenen intuitiven Definitionen für berechenbare Funktionen lässt sich beweisen, dass sie dieselbe Klasse von Funktionen bestimmen. These von Church: Die Menge aller Turing-berechenbaren Funktionen ist genau die Menge aller intuitiv berechenbaren Funktionen. (unbeweisbar, weil Definition durch „Intuition“ zu ungenau) 389 Programmierung Bisher: Jede TM löst eine spezielles Problem (Wortproblem für eine Sprache, Berechnung einer Funktion) üblicher Computer kann (theoretisch, bei beliebiger Rechenzeit und Speicherplatz) I beliebige Algorithmen (Programme) ausführen, d.h. I jede berechenbare Funktion berechnen (nach These von Church) I ist also universell (programmierbar). Gibt es programmierbare TM? 390 Universelle TM TM U heißt universelle TM, falls für I jede TM M und I jedes Eingabewort v gilt fU (c(M) • v ) = fM (v ) d.h. falls die TM M bei Eingabe v hält , dann hält auch U bei Eingabe (c(M) • v ) mit Ausgabe fM (v ), nicht hält , dann hält auch U bei Eingabe (c(M) • v ) nicht. TM U kann die Berechnung jeder TM M simulieren. TM U interpretiert die Codierung (das Programm) c(M). U ist also eine programmierbare Turing-Maschine. 391 Arbeitsweise einer universellen TM Universelle TM U speichert die I Codierung der Machine M und I Startkonfiguration q0 w auf dem Arbeitsband und berechnet I die Folge der Konfigurationen von M (durch Zugriff auf die Übergangsrelation von M). Codierung c(M) ist also beides: 1. Beschreibung einer speziellen TM M 2. Programm für eine universelle TM 392 Entscheidbarkeit von Sprachen charakteristische Funktion einer Menge (Sprache) L ⊆ X ∗ : ( 1 falls w ∈ L χL : X ∗ → {0, 1}, wobei ∀w ∈ X ∗ : χL (w) = 0 sonst Sprache (Menge) L ∈ X ∗ heißt entscheidbar gdw. die Funktion χL berechenbar ist. (Entscheidende TM muss also bei jeder Eingabe halten.) Sprache (Menge) L ∈ X ∗ heißt semi-entscheidbar gdw. die „halbe“ charakteristische Funktion χ0L : X ∗ → {0, 1} berechenbar ist: ( 1 falls w ∈ L ∗ 0 ∀w ∈ X : χL (w) = nicht definiert sonst Fakt Eine Sprache ist genau dann semi-entscheidbar, wenn sie Turing-akzeptierbar (aufzählbar) ist. 393 Beispiele entscheidbarer Sprachen I jede endliche Sprache L = {w1 , . . . , wn } (für jedes i nacheinander Test, ob Eingabe = wi ) I jede Sprache vom Chomsky-Typ 1 (Wortproblem für monotone Grammatiken), I {an | n ∈ I Menge aller Primzahlen (z.B. in Unärdarstellung), I Menge aller Primzahlzwillinge, d.h. Paare (p, p + 2) mit Primzahlen p und p + 2 2 N}, {a2 n |n∈ N}, 394 Was bisher geschah Deterministische Turingmaschinen M können (partielle) Funktionen f : X ∗ → X ∗ berechnen, d.h. bei Eingabe w I falls f (w) nicht definiert ist, nicht halten, I falls f (w) = v , mit Bandinhalt v halten. Sprachen L ⊆ X ∗ akzeptieren durch Halt oder durch akzeptierende Zustände, entscheiden , d.h. χL berechnen. I intuitiver Berechenbarkeitsbegriff I These von Church 395 Beispiel TM M = ({0, 1}, {q0 , q1 , q2 , q3 }, {0, 1, }, δ, q0 , {q3 }, ) mit (0, q0 , , q1 , R), (1, q0 , , q2 , R), (, q0 , , q0 , N), (0, q1 , , q1 , R), (1, q1 , , q2 , R), (, q1 , 1, q3 , N), δ= (0, q2 , , q1 , R), (1, q2 , , q2 , R), (, q2 , 0, q3 , N) akzeptiert die Sprache LH (M) = (0 + 1)+ durch Halt (und durch akzeptierende Zustände), berechnet die Funktion fM : ∀x ∈ N → N (binärcodiert) mit N : fM (x) = 1−(x mod 2) = entscheidet die Sprache LE (M) = (0 + 1)∗ 0 1 , falls x gerade 0 , sonst N (Menge 2 ) 396 Menge aller entscheidbaren Sprachen – Abschlusseigenschaften Satz Eine Sprache L ist genau dann entscheidbar, wenn sowohl L als auch L TM-akzeptierbar sind. Idee: „parallele“ Ausführung der Maschinen M mit L(M) = L und N mit L(N) = L auf Eingabe w, genau eine dieser beiden TM hält: M, falls w ∈ L, sonst N Die Menge aller entscheidbaren Sprachen ist abgeschlossen unter Vereinigung wegen χL∪L0 (w) = max(χL (w), χL0 (w)) berechenbar Schnitt wegen χL∩L0 (w) = min(χL (w), χL0 (w)) berechenbar Komplement wegen χL (w) = 1 − χL (w) berechenbar Achtung (Unterschied zu TM-akzeptierbaren Sprachen): Aus der TM-Akzeptierbarkeit von L folgt i.A. nicht die TM-Akzeptierbarkeit von L. 397 Spezielles Halteproblem für TM Wiederholung: Gödelnummer einer TM M: endliche Codierung c(M) von M (z.B. als Binärwort) 1. endliche Beschreibung einer speziellen TM 2. Eingabe (Programm) für eine universelle TM (Simulator) Das spezielle Halteproblem für TM ist die Sprache S = {c(M) | TM M hält bei Eingabe c(M)} Satz Die Sprache S ist Turing-akzeptierbar. Warum? Ist die Sprache S entscheidbar? 398 Unentscheidbarkeit des speziellen Halteproblems Satz Es existiert keine TM, welche das spezielle Halteproblem (die Sprache S) entscheidet, d.h. die folgende Funktion berechnet: 1 falls w = c(M) für eine TM M und M hält bei Eingabe von w χS (w) = 0 sonst indirekter Beweis: (analog Barbier-Problem) Annahme: N ist TM mit fN = χS Konstruktion einer TM N 0 aus N, so dass für jede TM M gilt: ( nicht definiert falls M bei Eingabe von c(M) hält fN 0 (c(M)) = 1 falls M bei Eingabe von c(M) nicht hält Ist fN 0 (c(N 0 )) definiert? Widerspruch, eine solche TM N kann also nicht existieren. 399 Komplement des speziellen Halteproblems Spezielles HP: S = {c(M) | TM M hält bei Eingabe c(M)} Komplement des speziellen HP: w ist keine Codierung einer TM oder S = w| w = c(M) und M hält bei Eingabe c(M) nicht Folgerung Die Sprache S ist nicht Turing-akzeptierbar. Beweisidee (indirekt): I bekannt: 1. S ist TM-akzeptierbar. 2. S ist nicht entscheidbar. 3. S TM-akzeptierbar ∧ S TM-akzeptierbar → S entscheidbar I Annahme: S ist TM-akzeptierbar. dann ist S entscheidbar wegen 1. und 3. Widerspruch zu 2., also Annahme falsch, also S nicht TM-akzeptierbar. 400 Folgerungen aus der Unentscheidbarkeit von S Keine der folgenden Probleme (Sprachen) ist entscheidbar: A = {c(M) • w | M hält bei Eingabe w} allgemeines Halteproblem E = {c(M) | M hält bei Eingabe ε} Halteproblem mit leerer Eingabe T = {c(M) | M hält für jede beliebige Eingabe} Totalitätsproblem I = {c(M) | M hält für irgendeine Eingabe} N = {c(M) | M hält für keine Eingabe} 401 Praktische Bedeutung nach These von Church: Das Halteproblem ist für kein intuitives Berechnungsmodell entscheidbar. Es existiert kein Programm, welches für jedes beliebige Programm P feststellt, ob P immer (für jede Eingabe) hält. (Unentscheidbarkeit des Totalitätsproblems) Es existiert kein Programm, welches für jedes beliebige Paar (P, v ) feststellt, ob das Programm P bei Eingabe von v anhält. (Unentscheidbarkeit des allgemeinen Halteproblems) Solche negativen Aussagen sind nützlich, z.B. um Ressourcenverschwendung (z.B. Arbeitskraft, -zeit) zu vermeiden. 402 Spezialfälle Für spezielle Programme P und Eingaben w lässt sich häufig automatisch feststellen, ob P bei Eingabe von w anhält. realistische Ziele: Anwendung: Programme verwenden, für die Termination für alle (relevanten) Eingaben bewiesen wurde (z.B. als Gerätetreiber) Forschung: möglichst viele und große Klassen von Programmen und Eingaben finden, für die sich Termination (oder Nicht-Termination) beweisen lässt, (Weiter-)Entwicklung von Verfahren zum Nachweis der Termination von Programmen 403 Probleme und Instanzen Problem: Sprache P ⊆ X ∗ (Codierungen einer Klasse von verwandten Aufgaben) Instanz eines Problems: Wort w ∈ X ∗ (Codierung einer speziellen Aufgabe aus dieser Klasse) Lösungsverfahren für das Problem P: Entscheidungsverfahren für P, d.h. Verfahren, welches für jede Instanz (Wort) w ∈ X ∗ bestimmt, ob w ∈ P Beispiel: Wortproblem für reguläre Sprachen Problem: WP-REG = {(c(L), w) | w ∈ L} mit endlicher Darstellung c(L) der Sprache L z.B. c(L) = A für einen NFA A mit L = L(A) Instanz: (c(A), aba) mit A = ({a, b}, {p, q}, δ, {p}, {p, q}) und δ(a) = {(p, p)}, δ(b) = {(p, q), (q, q)} Frage: Gilt (A, aba) ∈ WP-REG? wahr gdw. aba ∈ L(A) Lösungsungsverfahren (Entscheidungsverfahren), z.B. Pfadsuche im Automatengraphen 404 Probleme und Instanzen – Beispiele Enthaltensein in einer Folge (von Elementen des Typs E) Problem: F = {((x1 , . . . , xn ), y ) ∈ E ∗ × E | ∃k ∈ {1, . . . , n} : xk = y } Menge aller Paare ((x1 , . . . , xn ), y ) mit y ∈ {x1 , . . . , xn } Instanz: ((1, 3, 4, 3), 4) (Gilt ((1, 3, 4, 3), 4) ∈ F ? ) Ja, ((1, 3, 4, 3), 4) ∈ F , weil 4 ∈ {1, 3, 4} Lösungsverfahren (Entscheidungsverfahren): (beliebiges) Suchverfahren in Folgen I SAT (Erfüllbarkeitsproblem der Aussagenlogik) Problem: SAT = {ϕ ∈ AL(P) | Mod(ϕ) 6= ∅}, Menge aller erfüllbaren aussagenlogischen Formeln Instanz: ¬a ∧ (a ∨ b ∨ c) ∧ ¬c ∧ ¬b (Gilt (¬a ∧ (a ∨ b ∨ c) ∧ ¬c ∧ ¬b) ∈ SAT ?) Nein, weil Mod(ϕ) = ∅ Lösungsverfahren (Entscheidungsverfahren): I semantisch: Wahrheitswerttabellen I syntaktisch: Kalküle, z.B. natürliches Schließen, äquivalente Umformungen I 405 Probleme und Entscheidungsverfahren Problem P ist unentscheidbar gdw. kein Entscheidungsverfahren (TM, Programm, Algorithmus, . . . ) für P existiert, z.B. spezielles Halteproblem entscheidbar gdw. wenigstens ein Entscheidungsverfahren für P existiert (i.A. existieren mehrere) z.B. SAT, Suche in Folgen, Sortieren von Folgen durch verschiedene Such- und Sortierverfahren (mehr dazu in LV Algorithmen und Datenstrukturen) Entscheidbarkeit eines Problems (Sprache) P wird i.A. durch Angabe eines Entscheidungsverfahrens für P gezeigt. Unentscheidbarkeit eines Problems P wird oft durch Reduktion bekannter unentscheidbarer Probleme (oft HP) auf P gezeigt. 406 Reduktion Reduktion des Problems P auf Problem Q: Transformation der Sprache P ⊆ X ∗ in die Sprache Q ⊆ Y ∗ , d.h. berechenbare Funktion f : X ∗ → Y ∗ mit ∀w ∈ X ∗ : w ∈ P ↔ f (w) ∈ Q (Übersetzung jeder Instanz des Problems P in eine Instanz des Problems Q) Problem P heißt genau dann reduzierbar auf Problem Q (P ≤ Q), wenn eine Reduktion f von P auf Q mit existiert. Reduzierbarkeit zwischen Problemen ist reflexiv , denn Identität ist Reduktion transitiv , denn Nacheinanderausführung zweier Reduktionen ist Reduktion 407 Postsches Korrespondenzproblem (PCP) gegeben: endliche Folge {(xi , yi ) | i ∈ {1, . . . , n}} mit xi , yi ∈ X ∗ Frage: Existiert ein Wort u ∈ {1, . . . , n}∗ mit xu1 · · · xuk = yu1 · · · yuk ? Problem: PCP = {((x1 , y1 ), . . . , (xn , yn )) | ∃w ∈ {1, . . . , n}+ : xw1 ◦ · · · ◦ xw|w| = yw1 ◦ · · · ◦ yw|w| } Menge aller „lösbaren“ PCP-Instanzen Instanz: x1 = 1, y1 = 101, x2 = 10, y2 = 00, x3 = 011, y3 = 11 (Gilt ((1, 101), (10, 00), (011, 11)) ∈ PCP ?) Ja, (((1, 101), (10, 00), (011, 11)), 1321) ∈ PCP, weil w = (1, 3, 2, 3) eine Lösung dieser Instanz ist wegen w = 101110011 = x1 x3 x2 x3 = y1 y3 y2 y3 PCP unentscheidbar, Nachweis durch Reduktion des HP auf PCP Idee: Übersetzung von Berechnungen von TM in PCP, so dass Berechnung nicht haltender TM auf PCP ohne Lösung abgebildet werden. HP unentscheidbar → PCP unentscheidbar 408 Parkettierungsproblem Überdeckung der unendlichen Ebene mit gleichgroßen quadratischen Kacheln (festgelegter Orientierung) mit farbigen Seiten (2-dimensionales Domino) n 2 Problem: Parkett = (D1 , . . . , Dn ) | ∃M ∈ D (Z ) ∀(i, j) ∈ 2 : Z (s(Mi,j ) = n(Mi+1,j ) ∧ o(Mj,i ) = w(Mj+1,i ))} (Menge aller Kachelmengen, mit denen sich die unendliche Ebene korrekt überdecken lässt) Instanz: C = {R, G}, D = {D0 , D1 } mit o(D0 ) = s(D0 ) = R, n(D0 ) = w(D0 ) = G o(D1 ) = s(D1 ) = G, n(D1 ) = w(D1 ) = R Gilt D ∈ Parkett, d.h. lässt sich die unendliche Ebene mit Kacheln aus D überdecken? Ja, ∀(i, j) ∈ 2 : Mj,i = D(i+j) mod 2 Z Parkett unentscheidbar, Nachweis durch Reduktion des HP darauf Idee: Übersetzung von TM in Kachelmengen D, so dass Berechnung nicht haltender TM auf unendliche Parkettierung der Ebene abgebildet werden (Zeile i: Konfiguration zum Zeitpunkt i). HP unentscheidbar → Parkettierungsproblem unentscheidbar 409 Entscheidungsproblem der Prädikatenlogik FOL(Σ, X) klassische Prädikatenlogik (der ersten Stufe) Erfüllbarkeitsproblem Problem: E = {ϕ ∈ FOL(Σ, ) | Mod(ϕ) 6= ∅} Instanz , z.B. ∀x(P(x, f (y ))) Frage: Gilt ∀x(P(x, f (y ))) ∈ E ? X Unerfüllbarkeitsproblem Problem: U = {ϕ ∈ FOL(Σ, ) | Mod(ϕ) = ∅} Instanz , z.B. ∃x(¬p(x) ∧ p(x)) Frage: Gilt ∃x(¬p(x) ∧ p(x)) ∈ U ? X (Allgemein-)Gültigkeitsproblem Problem: A = {ϕ ∈ FOL(Σ, ) | Mod(¬ϕ) = ∅} Instanz , z.B. ∀x(P(x, f (y ))) Frage: Gilt ∀x(P(x, f (y ))) ∈ A ? X Entscheidungsproblem der Prädikatenlogik (Hilbert): algorithmische Lösung eines dieser Probleme 410 Unentscheidbarkeit der Prädikatenlogik Satz Erfüllbarkeits- Unerfüllbarkeits und Gültigkeitsproblem für FOL(Σ, ) sind TM-akzeptierbar. X Beweisidee: Akzeptanz durch Herleitung in einem Beweiskalkül Satz (Gödel, Turing, 1936/37) Erfüllbarkeits- Unerfüllbarkeits und Gültigkeitsproblem für FOL(Σ, ) sind unentscheidbar. X Nachweis durch Reduktion des PCP auf das Gültigkeitsproblem: Konstruktion einer Formel ϕp ∈ FOL(Σ, ) zu jeder PCP-Instanz p, so dass ϕp genau dann allgemeingültig, wenn p lösbar. PCP unentscheidbar → Gültigkeitsproblem für FOL(Σ, ) unentscheidbar X X 411 Organisatorisches Modul Theoretische Grundlagen der Informatik I I vorgesehener Zeitaufwand laut Modulbeschreibung: 90 h für Präsenzstudium als 4+2 SWS = 6h jede Woche + 120 für Selbststudium, verteilt z.B. 90h (= 6h jede Woche) + 30h Prüfungsvorbereitung Bedingung für Prüfungszulassung: I I I Autotool: ≥ 24 Punkte Vorrechnen: ≥ 3 Punkte Auswertung Studentenfragebögen 412 Prüfung Wann? am 11. 2. 2014 um 12:00 - 14:00 Uhr Wo? in den Räumen GuH101, GuH116, LNW006 Treffpunkt zur Raumverteilung (Pläne): vor LNW006 (ab 11:30 Uhr) Wie? Klausur 120 min (einzige) zugelassene Hilfsmittel: ein A4-Blatt handbeschrieben Was? Inhalt der LV Aufgabentypen aus Übungsserien bekannt Viel Erfolg! 413 TGI WS 2013/14 – Lernziele (nach Modulbeschreibung) I theoretischen Grundbegriffe zur der Modellierung praktischer Aufgabenstellungen anwenden I wichtige Klassen formaler Sprachen als Grundlage von Programmier- und Beschreibungssprachen einordnen I die passenden abstrakten Maschinenmodelle zur Darstellung und Lösung praktischer Aufgabenstellungen einsetzen I praktische Aufgabenstellungen durch prädikatenlogische Formeln beschreiben I wissen, dass die Korrektheit von Programmen mit logischen Methoden nachweisbar ist 414 TGI WS 2013/14 – Inhalt I Modellierung: Grundbegriffe und -techniken der Informatik mit praktischen Beispielen I Klassische Logiken: Formalisierung praktischer Aufgabenstellungenstellungen in Aussagen- und Prädikatenlogik (Spezifikation von Algorithmen, abstrakte Datentypen), syntaktische und sematische Lösungsverfahren, Ausdrucksstärke, Grenzen I Terme, strukturelle Induktion I Formale Sprachen: Modellierung durch Wörter und Sprachen, Operationen auf Wörtern und Sprachen, Sprachklassen, Chomsky-Hierarchie, reguläre Ausdrücke I Abstrakte Maschinen: Modellierung durch verschiedene Automatentypen (endliche Automaten, Kellerautomaten, Turing-Maschinen), Operationen auf Automaten, Akzeptanz durch Automaten, Zusammenhang mit formalen Sprachen, Ausdrucksstärke I Berechenbarkeit, These von Church, Entscheidbarkeit, unentscheidbare Probleme 415 Modellierung Ziel: maschinelle Darstellung und Verarbeitung von Informationen Weg: Formalisierung in maschinenlesbaren Sprachen Formalisierung von Daten durch Mengen (mit Mengenoperationen), Folgen Datentypen (abstrakt, konkret) Eigenschaften (Semantik) in klassischer Aussagen und Prädikatenlogik Abläufen als Zustandsübergangssysteme (Graphen mit Knoten- und Kantenmarkierungen) abstrakten Maschinen durch Maschinenmodelle NFA (DFA), PDA (DPDA), TM (LBA) Zusammenhänge mit formalen Sprachen Berechnungen abstrakter Maschinen (Spezialfall von Zustandsübergangssystemen) Beschreibungen von Daten und Abläufen (Syntax) in formalen Sprachen 416 Modellierung von Aufgaben (Problemen) gegeben: informale Aufgabenstellung Identifikation und formale Darstellung von I Menge der Objekte und Typen I Zusammenhänge (Funktionen, Relationen) zwischen Objekten I Typen der Eingaben I Typen der Ausgaben I Eigenschaften der gewünschten Lösung (Zusammenhang zwischen Ein- und Ausgaben) erst danach: Suche nach oder Entwurf von Lösungsverfahren 417 Anwendung: Datentypen Abstrakter Datentyp: Spezifikation von Klassen von (meist mehrsortigen) Σ-Strukturen durch Syntax (Deklaration der Operationen) I I S Menge von Sorten, -sortige Signatur S Semantik Axiome (Menge Φ ∈ FOL(Σ, X ) von Sätzen) (oft allquantifizierte Gleichungen zwischen Termen) beschreiben Eigenschaften und Zusammenhängen der Funktionen und Relationen der Signatur Konkreter Datentyp: I Σ-Stuktur (Menge von Werten mit zugeordneten Operationen), die I Modell der Spezifikation Φ (Axiome) ist Interface: Implementierung: Signatur im abstrakten Datentyp konkreter Datentyp 418 Abstrakter Datentyp – Beispiel stack Sorten E: Elementtyp, ShEi: Stapel (stack) von Elementtyp E, B: {t, f} Signatur Σ: push top pop new empty : ShEi × E : ShEi : ShEi : : ShEi → ShEi →E → ShEi ShEi → SB (Beispiele für) Axiome: ∀s ∈ ShEi∀z ∈ E ∀s ∈ ShEi∀z ∈ E ∀s ∈ ShEi∀z ∈ E empty(new) empty(push(s, z)) top(push(s, z)) pop(push(s, z)) = = = = t 0 z s 419 Diagramme (Tafel) Syntax, Semantik Entscheidbarkeit von FOL und AL Prominente Klassen formaler Sprachen I regulär I (deterministisch) kontextfrei I kontextsensitiv (Chomsky-Typ 1) I Turing-akzeptierbar (aufzählbar) I entscheidbar mit I Inklusionsbeziehungen dazwischen I typische Vertreter der Sprachklasse I Chomsky-Typ I passenden Maschinenmodellen I Abschlusseigenschaften 420