Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Ähnliche Dokumente
Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Theorie der Informatik

Beweisidee: 1 Verwende den Keller zur Simulation der Grammatik. Leite ein Wort. 2 Problem: der Keller darf nicht beliebig verwendet werden, man kann

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

FORMALE SYSTEME. 10. Vorlesung: Grenzen regulärer Sprachen / Probleme für Automaten. TU Dresden, 14. November 2016.

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Abschlusseigenschaften

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Satz (Abschluß unter der Stern-Operation)

Adventure-Problem. Vorlesung Automaten und Formale Sprachen Sommersemester Adventure-Problem

2.2 Reguläre Sprachen Endliche Automaten

2.2 Nichtdeterministische endliche Automaten

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit. Zugangsnummer: 9201

FORMALE SYSTEME. Der Satz von Myhill und Nerode. Automaten verkleinern mit Quotientenbildung. Verschiedene Äquivalenzrelationen

Das Pumping Lemma: Ein Anwendungsbeispiel

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

a b b a Alphabet und Wörter - Zusammengefasst Formale Grundlagen der Informatik 1 Kapitel 2 Endliche Automaten und reguläre Sprachen

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Einführung in die Theoretische Informatik

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Beispiel Produktautomat

Homomorphismen. Defnition: Σ und Γ seien zwei endliche Alphabete, und h sei eine Abbildung h : Σ Γ. Wir definieren die folgenden Sprachen:

Seien M 1,M 2 NFAs f. die Sprachen L 1 und L 2. Konstruktion eines NFAs für L 1 L 2 : Erzeuge Kopien von M 1 und M 2. p 1

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 19.

Formale Grundlagen der Informatik 1 Kapitel 5 Abschlusseigenschaften

DisMod-Repetitorium Tag 4

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf

Theorie der Informatik

Model Checking mit Büchi Automaten

Formale Sprachen und endliche Automaten

Potenzmengenkonstruktion. Vergleich DFAs NFAs. NFA DFA ohne überflüssige Zust. Ansatz nicht praktikabel

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 20.

Theoretische Informatik Mitschrift

Unentscheidbare Probleme bei formalen Sprachen

Berechenbarkeitstheorie 1. Vorlesung

Informatik IV. Pingo Sommersemester Dozent: Prof. Dr. J. Rothe. J. Rothe (HHU Düsseldorf) Informatik IV 1 / 13

Theoretische Informatik Kap 1: Formale Sprachen/Automatentheorie

Grundlagen der Theoretischen Informatik, SoSe 2008

Turingmaschinen Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen

2.3 Abschlusseigenschaften

Automaten und Formale Sprachen ε-automaten und Minimierung

11.1 Kontextsensitive und allgemeine Grammatiken

Grundlagen der theoretischen Informatik

Informatik III. Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit. Zugangsnummer: 3288

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 2. Mai HA-Lösung. TA-Lösung

Worterkennung in Texten speziell im Compilerbau 20. April Frank Heitmann 2/64

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme

1 Eliminieren von ɛ-übergängen

Software Engineering Ergänzung zur Vorlesung

Wie man eine Sprache versteht

5.2 Endliche Automaten

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen. Wintersemester 2011/12

Nachklausur zur Vorlesung

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Die Nerode-Relation und der Index einer Sprache L

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Einführung in die Theoretische Informatik

Theoretische Grundlagen der Informatik

Berechenbarkeits- und Komplexitätstheorie

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat

Maike Buchin 18. Februar 2016 Stef Sijben. Probeklausur. Theoretische Informatik. Bearbeitungszeit: 3 Stunden

Einführung in die Theoretische Informatik

Herzlich willkommen!!!

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Die mathematische Seite

Grundlagen der Programmierung (Vorlesung 24)

Formale Sprachen. Script, Kapitel 4. Grammatiken

Informatik 3 Theoretische Informatik WS 2015/16

Carlos Camino Einführung in die Theoretische Informatik SS 2015

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Einführung in die Computerlinguistik Chomskyhierarchie

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Grundlagen der theoretischen Informatik

Endliche Automaten Jörg Roth 101

Einführung in die Theoretische Informatik

Automaten und Formale Sprachen SoSe 2013 in Trier

Lexikalische Programmanalyse der Scanner

Einführung in die Computerlinguistik Chomskyhierarchie

Vorlesungsmitschrift zur Vorlesung Theoretische Informatik I vom 23. Juni Christian Franz

Diskrete Mathematik. Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl

Formale Methoden 1. Gerhard Jäger 23. Januar Uni Bielefeld, WS 2007/2008 1/18

Informatik III. Arne Vater Wintersemester 2006/ Vorlesung

Transkript:

Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1

Abgeschlossenheit (Definition) Gegeben sei eine Menge M und ein n-ärer Operator f : M M M. Man sagt, eine Menge M M ist unter f abgeschlossen, wenn für n beliebige Elemente m 1,..., m n M gilt: f (m 1,..., m n ) M. Beispiel: Sei M = N und M = {i i N und i ist gerade}. Sei f der Multiplikationsoperator, d.h. f (x, y) = x y. M ist abgeschlossen unter f, denn das Produkt zweier gerader Zahlen ist wieder eine gerade Zahl. Sei nun g die Operation: g(x) = x/2, wobei / der Ganzzahldivision entspricht. M ist nicht unter der Operation g abgeschlossen. Ein Gegenbeispiel ist: g(6) = 6/2 = 3. Sander Bruggink Automaten und Formale Sprachen 169

Wir betrachten hier für die Menge aller regulären Sprachen. Die interessante Frage ist: Falls L 1, L 2 regulär sind, sind dann auch L 1 L 2, L 1 L 2, L 1 L 2, L 1 = Σ \L 1 (Komplement) und L 1 regulär? Kurze Antwort: Die regulären Sprachen sind unter allen diesen Operationen abgeschlossen. Sander Bruggink Automaten und Formale Sprachen 170

Abschluss unter Vereinigung Wenn L 1 und L 2 reguläre Sprachen sind, dann ist auch L 1 L 2 regulär. Beweis: Da L 1 und L 2 nach Annahme regulär sind, gibt es reguläre Ausdrücke α 1 und α 2 mit L(α 1 ) = L 1 und L(α 2 ) = L 2. Der reguläre Ausdruck α 1 α 2 erzeugt nun die Sprache L 1 L 2 und von daher ist sie regulär. Sander Bruggink Automaten und Formale Sprachen 171

Abschluss unter Produkt/Konkatenation Wenn L 1 und L 2 reguläre Sprachen sind, dann ist auch L 1 L 2 = {w 1 w 2 w 1 L 1, w 2 L 2 } regulär. Beweis: Da L 1 und L 2 nach Annahme regulär sind, gibt es reguläre Ausdrücke α 1 und α 2 mit L(α 1 ) = L 1 und L(α 2 ) = L 2. Der reguläre Ausdruck α 1 α 2 erzeugt nun die Sprache L 1 L 2 und von daher ist sie regulär. Sander Bruggink Automaten und Formale Sprachen 172

Abschluss unter der Stern-Operation Wenn L eine reguläre Sprache ist, dann ist auch L regulär. Beweis: Da L nach Annahme regulär ist, gibt es einen regulären Ausdruck α mit L(α) = L. Der reguläre Ausdruck α erzeugt dann die Sprache L. Da es einen regulären Ausdruck für die Sprache gibt, ist sie regulär. Sander Bruggink Automaten und Formale Sprachen 173

Abschluss unter Komplement Wenn L eine reguläre Sprache ist, dann ist auch L = Σ \L regulär. Bemerkung: bei Bildung des Komplements muss immer festgelegt werden, bezüglich welcher Obermenge das Komplement gebildet werden soll. Hier ist das die Menge Σ aller Wörter über dem Alphabet Σ, das gerade betrachtet wird. Sander Bruggink Automaten und Formale Sprachen 174

Beweis: Da L nach Annahme regulär ist, gibt es einen DFA M = (Z, Σ, δ, z 0, E) mit T (M) = L. Dieser Automat wird einfach in einen Automaten M für L umgewandelt, indem man die End- und Nicht-Endzustände vertauscht. D.h. M = (Z, Σ, δ, z 0, Z\E). Dann gilt: w L ˆδ(z 0, w) E ˆδ(z 0, w) Z\E w L. Weil es einen DFA M für L gibt, ist L regulär. Sander Bruggink Automaten und Formale Sprachen 175

Abgeschlossenheit unter Komplement b z 0 c z 1 a z 2 c z E a b b, c a b a, b, c z 0 c z 1 a z 2 c z E a b b, c a a, b, c Sander Bruggink Automaten und Formale Sprachen 176

Abschluss unter Schnitt Wenn L 1 und L 2 reguläre Sprachen sind, dann ist auch L 1 L 2 regulär. Beweis: Es gilt L 1 L 2 = L 1 L 2 und wir wissen bereits, dass reguläre Sprachen unter Komplement und Vereinigung abgeschlossen sind. Sander Bruggink Automaten und Formale Sprachen 177

Kreuzproduktkonstruktion Es gibt noch eine direkte Konstruktion. Dabei werden die zwei Automaten für L 1 und L 2 miteinander synchronisiert und quasi parallelgeschaltet. Dies erfolgt durch das Bilden des Kreuzprodukts. Seien M 1 = (Z 1, Σ, δ 1, s 1, E 1 ) und M 2 = (Z 2, Σ, δ 2, s 2, E 2 ) DFAs mit T (M 1 ) = L 1 und T (M 2 ) = L 2. Dann akzeptiert folgender Automat M die Sprache L 1 L 2 : M = (Z 1 Z 2, Σ, δ, (s 1, s 2 ), E 1 E 2 ), wobei δ((z 1, z 2 ), a) = (δ 1 (z 1, a), δ 2 (z 2, a)). M akzeptiert ein Wort w genau dann, wenn sowohl M 1 als auch M 2 das Wort w akzeptieren. Sander Bruggink Automaten und Formale Sprachen 178

Warum sind interessant? Zeigen, dass eine Sprache regulär ist. Kompliziertere reguläre Sprachen können aus einfacheren zusammengebaut werden. Zeigen, dass eine Sprache nicht regulär ist. Manchmal ist es z.b. einfacher zu beweisen, dass das Komplement oder der Schnitt einer Sprache mit einer regulären Sprachen nicht regulär ist. Sander Bruggink Automaten und Formale Sprachen 179

Algorithmen Algorithmen für Probleme Wir diskutieren nun, ob es Verfahren bzw. Algorithmen gibt, um Fragestellungen bzw. Probleme für reguläre Sprachen zu lösen. Die allgemeine Form der Fragestellungen ist: Gegeben seien reguläre Sprachen L 1, L 2. Gilt für diese Sprachen, dass...? Dabei nehmen wir an, dass reguläre Sprachen als DFAs, NFAs, Grammatiken oder reguläre Ausdrücke gegeben sind. Sander Bruggink Automaten und Formale Sprachen 178

Algorithmen für Probleme Algorithmen Probleme Wortproblem: Gegeben eine reguläre Sprache L und w Σ. Gilt w L? Leerheitsproblem: Gegeben eine reguläre Sprache L. Gilt L =? Endlichkeitsproblem: Gegeben eine reguläre Sprache L. Ist L endlich? Schnittproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 L 2 =? Inklusionsproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 L 2? Äquivalenzproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 = L 2? Sander Bruggink Automaten und Formale Sprachen 179

Algorithmen für Probleme Algorithmen Wortproblem (w L?) Gegeben sind L und w Σ. Lösung: Bestimme einen DFA M für L und verfolge die Zustandsübergänge von M, wie durch w vorgegeben. Endzustand wird erreicht w L Nicht-Endzustand wird erreicht w L Sander Bruggink Automaten und Formale Sprachen 180

Algorithmen für Probleme Algorithmen Leerheitsproblem (L =?) Gegeben ist L. Lösung: Bestimme einen NFA M für L. L = es gibt keinen Pfad von einem Start- zu einem Endzustand. Sander Bruggink Automaten und Formale Sprachen 181

Algorithmen für Probleme Algorithmen Endlichkeitsproblem (Ist L endlich?) Gegeben ist L. Lösung: Bestimme einen NFA M für L. L ist unendlich in M gibt es unendlich viele Pfade von einem Start- zu einem Endzustand es gibt einen erreichbaren Zyklus in M, von dem aus wiederum ein Endzustand erreichbar ist. Sander Bruggink Automaten und Formale Sprachen 182

Algorithmen für Probleme Algorithmen Schnittproblem (L 1 L 2 =?) Gegeben sind L 1, L 2. Lösung: Bestimme DFAs M 1, M 2 für L 1, L 2 und bilde das Kreuzprodukt von M 1, M 2. Wende dann den Leerheitstest auf das Kreuzprodukt an. Sander Bruggink Automaten und Formale Sprachen 183

Algorithmen für Probleme Algorithmen Inklusionsproblem (L 1 L 2?) Gegeben sind L 1, L 2. Lösung: Es gilt L 1 L 2 genau dann, wenn L 1 L 2 =. Da Schnitt und Komplement konstruktiv bestimmbar sind und ein Leerheitstest existiert, kann damit das Inklusionsproblem gelöst werden. Sander Bruggink Automaten und Formale Sprachen 184

Algorithmen für Probleme Algorithmen Äquivalenzproblem (L 1 = L 2?) Gegeben sind L 1, L 2. Lösung 1: Bestimme jeweils zu L 1 und L 2 die minimalen DFAs. Wenn die DFAs gleich sind (evtl. nach Umbenennung der Zuständen), dann sind L 1 und L 2 gleich. Lösung 2: Es gilt L 1 = L 2 genau dann, wenn L 1 L 2 und L 1 L 2. Das Inklusionsproblem ist wie wir vorher gesehen haben lösbar. Sander Bruggink Automaten und Formale Sprachen 185

Algorithmen für Probleme Algorithmen Effizienzgesichtspunkte: Je nach dem in welcher Darstellung eine Sprache L gegeben ist, kann die Komplexität der oben beschriebenen Verfahren sehr unterschiedlich ausfallen. Beispiel Äquivalenzproblem: L 1, L 2 gegeben als DFAs Komplexität O(n 2 ) (d.h., quadratisch viele Schritte in der Größe der Eingabe) L 1, L 2 gegeben als Grammatiken, reguläre Ausdrücke oder NFAs Komplexität NP-hart Das bedeutet unter anderem: es ist nicht bekannt, wie dieses Problem effizient gelöst werden kann. Mehr zum Thema Komplexität in der Vorlesung Berechenbarkeit und Komplexität im Wintersemester. Sander Bruggink Automaten und Formale Sprachen 186

Anwendung: Modellverifikation Programmverifikation mit regulären Sprachen System Spezifikation Modellierung Modellierung endliche Automaten Systemmodell Spezifikationsmodell Model Checker Yes No Sander Bruggink Automaten und Formale Sprachen 187

Programmverifikation mit regulären Sprachen Anwendung: Modellverifikation In unserem Fall: Das Systemmodell ist ein NFA Sys, der alle möglichen Systemabläufe akzeptiert. Das Spezifikationsmodell ist ein NFA Spec, der alle erlaubten Systemabläufe akzeptiert. Wir verifizieren eine Sicherheitseigenschaft. Das heißt, das Spec die erlaubte Abläufe des Systems angibt. Wir ermitteln also, ob: L(Sys) L(Spec) Sander Bruggink Automaten und Formale Sprachen 188

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Beispiel: wechselseitiger Ausschluss (eng.: mutual exclusion) Wir betrachten zwei Prozesse P 1, P 2, die auf eine gemeinsame Ressource zugreifen wollen. Jeder Prozess hat einen sogenannten kritischen Bereich, in dem auf die Ressource zugegriffen wird. Es darf sich jeweils nur ein Prozess im kritischen Bereich befinden. Es stehen gemeinsame Variable zur Verfügung, über die sich die Prozesse synchronisieren können. Diese Variablen sind jedoch keine Semaphore, d.h., eine atomare Operation, bei der gleichzeitig gelesen und geschrieben wird, ist nicht möglich. Wir möchten zeigen, dass der wechselseitige Ausschluss gewährleistet ist und dass gewisse Fairnessbedingungen (jeder Prozess kommt irgendwann an die Reihe) eingehalten werden. Sander Bruggink Automaten und Formale Sprachen 189

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Versuch 1: Beide Prozesse P 1, P 2 verwenden eine gemeinsame Boolesche Variable f, die mit false initialisiert wird. Programmcode für P 1, P 2 while true do 1: if (f = false?) then 2: f := true 3: Betrete kritischen Bereich... 4: Verlasse kritischen Bereich 5: f := false end end Sander Bruggink Automaten und Formale Sprachen 190

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Vorgang: Gebe Automaten P 1 und P 2 für die beiden Prozesse an. Gebe einen Automaten F für den Wert der Variable an. Berechne das Kreuzprodukt M Sys der obigen drei Automaten (dieser Automat modelliert das Gesamtverhalten des Systems). Gebe einen Automaten M Spec für die Spezifikation an. Finde heraus, ob L(M Sys ) L(M Spec ). Sander Bruggink Automaten und Formale Sprachen 191

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Wir verwenden folgendes Alphabet, bestehend aus den Programm-Befehlen und den Abfragen der Booleschen Variablen: Σ = {(f := true) i, (f := false) i, (f = true?) i, (f = false?) i i {1, 2}} (Synchronisation von Prozess i mit Variable f ) {BkB i, VkB i i {1, 2}} (Prozess i betritt/verläßt kritischen Bereich). Der Index i {1, 2} gibt an, ob die jeweilige Aktion vom ersten oder vom zweiten Prozess ausgeführt wird. Sander Bruggink Automaten und Formale Sprachen 192

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Beschreibung der Abläufe eines Prozesses i als endlicher Automat: (f = true?) i i P i 1 (f = false?) i 2 (f := true) i i (f := false) i 3 i 5 VkB i 4 BkB i i mit i = {(f :=true) i, (f :=false) i, (f =true?) i, (f =false?) i BkB j, VkB j } wobei j = 2, falls i = 1, und j = 1, falls i = 2. i Sander Bruggink Automaten und Formale Sprachen 193

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Beschreibung der Booleschen Variable f durch einen Automaten: f F (f = false?) 1 (f := false) 1 (f = false?) 1 2 (f := false) 2 (f := true) 1 (f := true) 2 (f := false) 1 (f := false) 2 (f = true?) 1 (f = true?) 2 2 (f := true) 1 (f := true) 2 f mit f = {BkB 1, VkB 1, BkB 2, VkB 2 }. Sander Bruggink Automaten und Formale Sprachen 194

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Die Sprache aller Abläufe des Gesamtsystems ist T (P 1 ) T (P 2 ) T (F ). Der Automat WA, der alle Abläufe beschreibt, die den wechselseitigen Ausschluß erfüllen (beide Prozesse sind nicht gleichzeitig im kritischen Bereich) sieht folgendermaßen aus: WA BkB 1 VkB 2 Σ\{VkB 1, BkB 2 } 2 1 3 Σ\{BkB 1, VkB 2 } VkB 1 BkB 2 Σ\{BkB 1, BkB 2 } Damit ist zu zeigen T (P 1 ) T (P 2 ) T (F ) T (WA). Sander Bruggink Automaten und Formale Sprachen 195

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Kodierung für Grail: (f := true) 1 a (f := true) 2 A (f := false) 1 b (f := false) 2 B (f = true?) 1 c (f = true?) 2 C (f = false?) 1 d (f = false?) 2 D BkB 1 x BkB 2 X VkB 1 y VkB 2 Y Sander Bruggink Automaten und Formale Sprachen 196

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Automaten-Dateien: p1.aut, p2.aut, f.aut, wa.aut. Benutzte Grail-Werkzeuge: fmcross aut1 < aut2 > res erzeugt das Kreuzprodukt von aut1 und aut2 und speichert das Ergebnis in res. fmcment aut > res erzeugt das Komplement des aut und speichert es in res. fmenum aut zählt die Wörter in der vom Automaten aut akzeptierten Sprache auf. Sander Bruggink Automaten und Formale Sprachen 197

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Die entstehende Sprache ist nicht leer! Es gibt also Abläufe, die die Bedingung des wechselseitigen Ausschluss verletzen. Einer davon ist DdAXax. Übersetzt ins ursprüngliche Alphabet: (f = false?) 2 (f = false?) 1 (f := true) 2 BkB 2 (f := true) 1 BkB 1. Grund für die Verletzung des wechselseitigen Ausschlusses: Es gibt keine atomare Schreib- und Leseoperation. Daher können beide Prozessen nacheinander die Variable auslesen, anschließend setzen beide die Variable und betreten den kritischen Bereich. Der Algorithmus ist also falsch! Sander Bruggink Automaten und Formale Sprachen 198

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Versuch 2: Wir betrachten nun das Verfahren zum wechselseitigen Ausschluss von Lamport. Dabei betrachten wir: zwei Prozesse P 1, P 2 mit unterschiedlichem Programmcode und zwei Boolesche Variable f 1, f 2 (beide initialisiert mit false). Sander Bruggink Automaten und Formale Sprachen 199

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Prozess P 1 : while true do 1: f 1 := true 2: while (f 2 = true?) do skip end 3: Betrete kritischen Bereich... 4: Verlasse kritischen Bereich 5: f 1 := false end skip : Null-Operation (hat keine Auswirkungen) Sander Bruggink Automaten und Formale Sprachen 200

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Prozess P 2 while true do 1: f 2 := true 2: if (f 1 = true?) then do 3: f 2 := false 4: while (f 1 = true?) do skip end else 5: Betrete kritischen Bereich... 6: Verlasse kritischen Bereich 7: f 2 := false end end Sander Bruggink Automaten und Formale Sprachen 201

Programmverifikation mit regulären Sprachen Anwendung: Verifikation In diesem Fall betrachten wir folgendes Alphabet Σ: Σ = {(f 1 := false) i, (f 2 := false) i, (f 1 = false?) i, (f 2 = false?) i, (f 1 := true) i, (f 2 := true) i, (f 1 = true?) i, (f 2 = true?) i, BkB i, VkB i i {1, 2}} Sander Bruggink Automaten und Formale Sprachen 202

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Automat für den Prozess P 1 : 1 (f 1 := true) 1 (f 2 = false?) 1 2 3 (f 2 = true?) 1 BkB 1 P 1 (f 1 := false) 1 5 VkB 1 4 Dabei gilt, dass all mögliche Aktionen von Prozess 2 enthält. Sander Bruggink Automaten und Formale Sprachen 203

Anwendung: Verifikation Programmverifikation mit regulären Sprachen Automat für den Prozess P 2 : (f 1 = true?) 2 (f 1 = false?) 2 4 (f 2 := false) 2 1 (f 2 := true) 2 2 (f 1 = true?) 2 3 (f 2 := false) 2 7 6 VkB 2 BkB 2 5 (f 1 = false?) 2 P 2 Dabei gilt, dass all mögliche Aktionen von Prozess 1 enthält. Sander Bruggink Automaten und Formale Sprachen 204

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Automaten für die beiden Variablen: 1 2 F 1 F 2 (f 1 = false?) 2 1 (f 1 := false) 1 (f 2 = false?) 1 1 (f 2 := false) 2 (f 1 := true) 1 (f 1 := false) 1 (f 2 := true) 2 (f 2 := false) 2 (f 1 = true?) 2 2 (f 1 := true) 1 (f 2 = true?) 1 2 (f 2 := true) 2 1 2 1 = {(f 2 := true) 2, (f 2 := false) 2, (f 2 = true?) 1, (f 2 = false?) 1 BkB 1, BkB 2, VkB 1, VkB 2 Analog für 2. Sander Bruggink Automaten und Formale Sprachen 205

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Kodierung für Grail: (f 1 := true) 1 a (f 2 := true) 2 A BkB 1 x (f 1 := false) 1 b (f 2 := false) 2 B BkB 2 X (f 2 = true?) 1 c (f 1 = true?) 2 C VkB 1 y (f 2 = false?) 1 d (f 1 = false?) 2 D VkB 2 Y Jetzt sind die Systemabläufe in den erlaubten Systemabläufe enthalten. Das Protokoll ist also korrekt. Sander Bruggink Automaten und Formale Sprachen 206

Programmverifikation mit regulären Sprachen Anwendung: Verifikation Zusammenfassung Verifikation: Wir haben mit Hilfe von endlichen Automaten zwei Protokolle modelliert, die wechselseitigen Ausschluss realisieren sollen. Mit Hilfe der Lösungsverfahren für das Inklusionsbzw. Schnittproblem konnten wir überprüfen, ob diese Protokolle tatsächlich wechselseitigen Ausschluss realisieren. Das bedeutet: die vorgestellten Verfahren können zur Programmverifikation eingesetzt werden. Sander Bruggink Automaten und Formale Sprachen 207