Automaten und Coinduktion

Philipps-Univestität Marburg Fachbereich Mathematik und Informatik Seminar: Konzepte von Programmiersprachen Abgabedatum 02.12.03 Betreuer: Prof. D...
Author: Hilke Schuler
17 downloads 0 Views 141KB Size
Philipps-Univestität Marburg Fachbereich Mathematik und Informatik

Seminar: Konzepte von Programmiersprachen

Abgabedatum 02.12.03

Betreuer: Prof. Dr. H. P. Gumm Referentin: Olga Andriyenko

Automaten und Coinduktion

Basierend auf „Automata and Coinduction“ von J.J.M.M. Rutten

1

Inhaltsverzeichnis:

1. Einführung

3

2. Deterministische Automaten

3

3. Sprachen

5

4. Reguläre Ausdrücke

5

5. Coinduktionsbeweisprinzip

6

6. Finalität und Minimalisierung

7

7. Kleen’s Theorem

8

8. Nichtreguläre Sprachen

9

9. Coinduktives Definitionsprinzip

10

10. Schlussbemerkung

11

2

1 Einführung Die Kapitel 1 bis 4 beschäftigen sich mit deterministischen Automaten, regulären Sprachen und Ausdrücken. Es werden Begriffe aus der klassischen Theorie deterministischer Automaten, wie Homomorphismus und Bisimulation, erklärt. Es wird gezeigt, dass die Menge aller Sprachen

über einen Alphabet Σ zu einem deterministischen Automaten konvertiert

werden kann. Die Zustände dieses Automaten sind dann genau die Sprachen aus . Bei der Konstruktion des Sprachenautomaten spielt der Begriff der a-Ableitung eine grundlegende Rolle. Der Sprachenautomat hat zwei wichtige Eigenschaften, nämlich 1) der Sprachenautomat ist ein finaler Automat; 2) zwei Zustände des Automaten sind genau dann gleich, wenn sie bisimilar zu einander sind. Die erste Eigenschaft spielt eine entscheidende Rolle bei der Formulierung und Verwendung von Kleene’s Theorem in Kapitel 7 und des coinduktiven Definitionsprinzips in Kapitel 9. Auf der zweiten Eigenschaft basiert das in Kapitel 5 beschriebene Coinduktionsprinzip, mit dessen Hilfe zwei Sprachen auf Gleichheit geprüft werden können.

2 Deterministische Automaten Definition  Sei Σ die Menge von Eingabesymbolen. Ein deterministischer Automat S über Σ wird durch ein 3-Tupel S = S, o, t  spezifiziert. Hierbei sind: - S eine Menge von Zustände - o : S  2 = {0, 1} die Ausgabefunktion - δ : S x Σ  S die Überführungsfunktion. Die Ausgabefunktion o gibt an, ob ein Zustand s ∈ S ein Endzustand ist (o(s) = 1, falls ja, o(s) = 0 sonst). Schreibweise: s  falls o(s) = 1, s  falls o(s) = 0, und s a s’ falls δ (s, a) = s’. Im Gegensatz zu der Standarddefinition von deterministischen Automaten können bei obiger Definition die Mengen Σ und S unendlich groß sein. Ein weiterer Unterschied besteht darin, dass die oben definierten Automaten keinen Startzustand haben  Definition: Seien S = S, o, δ und S’ = S’, o’, δ’ deterministische Automaten. Eine Relation R S × S’ heißt Bisimulation, falls für alle a ∈ Σ, (s, s’) ∈ R gilt: i) o (s) = o' (s') ii) δ (s, ) R δ’ (s’, ) für alle s ∈ S und ∈ Σ. Eine Bisimulation zwischen S und S heißt Bisimulation auf S. Schreibweise: s s’, falls es eine Bisimulation R existiert, so dass s R s’ gilt. Die Bisimulationen sind unter Vereinigung und Komposition abgeschlossen. Die Relation ist die Vereinigung von allen Bisimulationen, und gleichzeitig die größte Bisimulation. Die größte Bisimulation auf einem und dem selben Automaten, wieder bezeichnet mit , heißt Bisimilarität. Diese ist eine Äquivalenzrelation. Definition: Seien S = S, o, δ und S’ = S’, o’, δ’ deterministische Automaten. Eine Funktion f : S  S’ heißt Homomorphismus, falls gilt: ∀ s ∈ S : o (s) = o’ (f (s)) und ∀ a ∈ Σ : f (δ (s, a)) = δ’(f (s), a).

3

Definition: Ein Automat S’ = S’, o’, δ’ heißt ein Subautomat von S = S, o, δ, falls gilt: - S’  S und - die Inklusionsfunktion i : S’  S ist ein Homomorphismus. Für einen Zustand s ∈S bezeichnet s  den durch s erzeugten Subautomaten von S. Es gilt: = {s’ ∈ S | ∃      =w ∈ Σ* : s a1 s1 a2 . . . an s’ } und ist der kleinste Subautomat von S, der s enthält. Sei f : S T Homomorphismus und S’ S ein Subautomat von S, dann ist f(S’) ein Subautomat von T. Für jedes s ∈ S gilt: f ( s ) = f (s) . Die Begriffe „Automat“, „Homomorphismus“ und „Bisimulation“ sind eng verbunden. Jede Bisimulation ist selber ein Automat: sei R S × S’ eine Bisimulation, dann ist R, oR, δR mit: - oR ((s, s’)) = o (s) = o’ (s’) und - δR ((s, s’), a) = (δ (s, a), δ’ (s’, a)) ein deterministischer Automat. Satz 1: Eine Funktion f : S S’ ist genau dann ein Homomorphismus, wenn ihre GraphRelation { (s, f (s)) s ∈ S} eine Bisimulation ist. Beweis: „⇒”: f Homomorphismus, dann für alle a ∈ Σ, s ∈ S gilt: ( o (s) = o’ (f (s)) und f (δ (s, a)) = δ’ (f (s), a) ) Also für alle a ∈ Σ, (s, f (s)) ∈ R gilt: ( o (s) = o’ (f (s)) und o (δ (s, a)) = o’ (f (δ (s, a)) = o’ (δ’ (f (s), a)) ) ⇒ ( o (s) = o’ (f (s)) und o (δ (s, a)) = o’ (δ’ (f (s), a)) ) ⇒ ( o (s) = o’ (f (s)) und δ (s, a) R δ’ (f (s), a) ) ⇒ R Bisimulation

„⇐“: Sei R = { (s, f (s)) s ∈ S} eine Bisimulation, definieren wir noch zwei Abbildungen: π1 : R  S mit π1 ( (s, f (s)) ) = s ∀ (s, f (s) ) ∈ R und π2 : R  S’ mit π2 ( (s, f (s)) ) = f(s) ∀ (s, f (s) ) ∈ R. Die Abbildung π1 ist bijektiv, folglich existiert eine inverse Abbildung π1-1: S  R, die auch bijektiv ist. Weiter zeigen wir, dass π1-1 ein Homomorphismus ist: ∀ s ∈ S : oR ((s, f(s))) = o (s) = o’ (f (s)) und ∀ a ∈ Σ : π1-1 (δ (s, a)) = ( δ (s, a), f (δ (s, a)) ) = δR ((s, f (s)), a) = δR (π1-1 (s), a). Ähnlich kann gezeigt werden, dass π2 auch ein Homomorphismus ist: ∀ (s, f (s)) ∈ R : oR ((s, f(s))) = o (s) = o’ (f (s)) und ∀ a ∈ Σ : π2 (δR ((s, f (s)), a) = π2 (δ (s, a), δ’ (f (s), a)) = δ’ (f (s), a) = δ’ (π2 (s, f (s)), a). Es gilt : f = π2 °π1-1 , also ist f ein Homomorphismus

ª

Beispiel: Sei Σ = {a, b} der Eingabealphabet, S = {s1, s2, s3} und T = {t1, t2} die Automaten mit: 

s1 s2 s3

s2 s2 s2

b s3 s3 s3

 

t1 t2



t2 t2

b t2 t2

 



Dann gilt: {s1, s1, s2, s2, s3, s3} und {s2, s3, s2, s2, s3, s3} sind Bisimulationen auf S; {s2, s3} = s2 = s3 ist ein Subautomat von S;

und f : S W T mit f (s1) = t1 und f (s2) = f (s3) = t2 ist ein Homomorphismus. 4

3 Sprachen Definition: Sei Σ* die Menge aller endlichen Wörter über Σ. Eine Sprache ist jede Teilmenge von Σ*. Seien K, L Sprachen, dann gelten folgende regulären Operatoren: K+L = K L KL = {vw | v ∈ K, und w ∈ L} K* = Kn, mit K0 = {0} und Kn+1 = KKn.

 n ≥1

Definition: Sei Σ* die Menge aller endlichen Wörter über Σ, sei S = S, o, δ ein Automat und s ein beliebiger Zustand aus S. Dann heißt lS (s) = {       s a1 s1 a2 . . . ansn } Σ* die durch s akzeptierte Sprache. Definition: Seien = { L  L Σ*} die Menge aller Sprachen über Σ* und w ∈ Σ*. Dann heißt Lw = { v ∈ Σ*  wv ∈ L} die w-Ableitung von L. Ein Spezialfall davon ist die a-Ableitung von L: für ein  ∈ Σ ist La = {v ∈ Σ*  v ∈ L}. Die a-Ableitung wird bei der Konstruktion von Sprachenautomaten  o , δ  benutzt, wobei



die Menge aller Sprachen über Σ* ist. Der Automat wird folgendermaßen definiert: - o (L  IDOOV0∈ L = 0, sonst

- δ (L, a) = La , für L ∈  a ∈ Σ. Es gilt: L  ⇔ 0∈ L, und L a L’ ⇔ L’ = La. Dieser Automat hat folgende Eigenschaft: die durch ein Zustand L ∈  akzeptierte Sprache, ist genau die Sprache L selbst. Diese Aussage wird erst im Kapitel 6 bewiesen, kann aber jetzt durch folgenden Beispiel verdeutlicht werden. Beispiel: Sei L = {a, ab, ac} eine Sprache aus , dann ist = { {a, b, ac}, {0 c}, {0`}mit folgenden Transitionen: - {a, b, ac} a  {0c}  c  {0` , - {a, b, ac} b  {0`  ein Subautomat von . Nach Definition enthält die Sprache l nur die Wörter a, b und ac. Also giltt: l (L) = L.

   4 Reguläre Ausdrücke Definition: Sei  die Menge der regulären Ausdrücken, gegeben durch folgende Regel: E::= 0 | 1 |  ∈ Σ | E + F | EF | E* Sei  :    die Funktion, die einen Ausdruck E ∈  auf die Sprache (E), die er beschreibt, abbildet. Die Funktion wird induktiv über die Aufbau von E definiert: (0) = ∅ #  1 ) = !" #( $) = { $} # # (E+F) = (E)+ (F)

5

( EF ) = (E) (F) E* ) = ( ( E ))*. Dann heißen die Sprachen L = (E) reguläre Sprachen. Schreibweise: E statt (E), folglich 0, 1 und  statt ∅, 0 und { D }. Folgenden Regeln gelten für die a-Ableitung L von einer Sprache L: 0 = 0 1 = 0

1, falls b = a 0, sonst

b = 

(K + L) = K + L (KL) = K L falls K  K L + L falls K  (K*) = KK* Es gelten auch folgende Terminierungsregeln: 0 , 1 ,  , (K + L)  ⇔ (K  oder L ), KL  ⇔ (K  und L ), K* .

5 Coinduktionsbeweisprinzip Satz 2: Für alle Sprachen K, L ∈ , die durch den Automaten = o , δ akzeptiert werden, gilt: K  L ⇔ K = L. Beweis: „⇒“ : Man zeigt mit der Induktion über die Länge n eines Wortes w aus K: K ~ L ⇒ K  L. n = 0: ε ∈ K ⇔ K↓ ⇔ L↓ ⇔ ε ∈ L. n→n+1: w = aw’ , |w| = n+1, |w’| = n ( K ~ L ⇒ Ka ~ La ) ⇒ ( w’ ∈ Ka ⇒ w’ ∈ La ) [nach I.V.] ⇒ (w∈K ⇒ w∈L) Es gilt also: K ~ L ⇒ K  L und da die Bisimulation ~ eine Äquivalenzrelation ist, gilt auch K  L ⇒ L  K ⇒ L  K, also folgt K ~ L ⇒ K = L. 

„⇐“: gilt trivial.

Auf der obigen Eigenschaft basiert folgendes Coinduktionsbeweisprinzip: um zwei Sprachen K, L ∈  auf Gleichheit zu prüfen, reicht es zu zeigen, dass eine Bisimulationsrelation auf  existiert, die das Tupel (K, L) enthält. Das Coinduktionsbeweisprinzip hat immer die gleiche Vorgehenswiese: es wird eine Relation definiert, die zuerst nur die Tupeln von Sprachen enthält, die man auf Gleichheit prüfen möchte; dann geht man alle möglichen Transitionen durch und führt die resultierenden Tupeln von Sprachen hinzu, falls diese nicht bereits vorhanden sind. Die Gleichheit gilt genau dann, wenn die auf diese Weise konstruierte Relation eine Bisimulation ist. Für die regulären Sprachen ist der Beweis durch Coinduktion besonders effektiv. Falls die Eingabesprachen regulär sind, wird die Konstruktion von Bisimulationrelation nach endlich vielen Schritten terminieren. Der Beweis folgt später. Beispiele: 1) Zu zeigen: K + L = L + K

6

Sei R = { ( K’ + L’ , L’ + K’ ) | K’, L’ ∈ ? } eine Relation. Es gilt: - (K’ + L’)↓ ⇔ (L’ + K’)↓ - ∀ a ∈ Σ: ( K + L)a = ( Ka + La) R ( La + Ka) = (L + K)a. ⇒ R ist eine Bisimulation. Es folgt mit Coinduktion, dass die Gleichheit gilt. 2) Zu zeigen: K (L + M) = KL + KM Voraussetzung: Assoziativität und Kommutativität gelten.

Betrachte die Relation { ( K’ (L’ + M’), K’L’ + K’M’ ) | K’, L’, M’ ∈ ? }. Da die für die a-Ableitungen von den obigen Sprachen im Falle K’↓ gilt: (K’ (L’ + M’) )a = K’a (L’ + M’) + (L’ + M’)a = K’a (L’ + M’) + L’a + M’a und (K’L’ + K’M’)a = (K’L’)a + (K’M’)a = K’aL’ + L’a + K’aM’ + M’a ,

ist es sinnvoll eine größere Relation R = { ( (K’ + M’) + N, K’L’ + K’M’ +N ) | K’, L’, M’, N ∈ ? } zu wählen. Wir zeigen, dass R eine Bisimulation ist: - (K’ (L’ + M’) + N) ⇔ (K’L’ + K’M’ +N) 1. Fall: K’ (K’ (L’ + M’) + N) = (K’ (L’ + M’))a + N = K’a (L’ + M’) + L’a + M’a + N R K’ L’ + K’ M’ + L’ + M’ + N = K’ L’ + L’ + K’ M’ + M’ + N’ = (K’L’) + (K’M’) + N = (K’L’ + K’M’ +N) - 2. Fall: K’↑ (K’ (L’ + M’) + N) = (K’ (L’ + M’))a + N = K’a (L’ + M’) + N R K’ L’ + K’ M’ + N = (K’L’) + (K’M’) + N = (K’L’ + K’M’ +N) ⇒ R ist eine Bisimulation. Und es folgt mit Coinduktion, dass die Gleichheit K (L + M) + N = KL + KM +N für beliebige Sprachen K, L, M, N aus Ergebnis.



gilt. Wir setzen nun N = ∅ und erhalten das gewünschte

6 Finalität und Minimalisierung Mittels Coinduktion kann gezeigt werden, dass der Automat  ein finaler Automat ist. Satz 3: Für jeden Automat S = S, o, δ  existiert genau ein Homomorphismus S  . Beweis: - Existenz: Die Funktion lS : S   , die einen Zustand auf die Sprache, die er akzeptiert abbildet, ist ein Homomorphismus, da gilt: i) s  ⇔ ε ∈ lS (s) ⇔ lS (s)  ii) δ (lS (s) , a) = ( lS (s) )a = lS (δS (s, a)) , (gilt da S ein deterministischer Automat ist) - Eindeutigkeit: Seien f, g : S   Homomorphismen. Sei R = { ( f (s) , g (s) ), | s∈S} eine Relation. Da f und g Homomorhismen, gilt: i) ∀ s ∈ S : ( oS (s) = o (f (s)) ∧ oS (s) = o (g (s) )

7

ii) ∀ a ∈ Σ : ( f (δS (s, a)) = δ (f (s), a) ∧ g (δS (s, a)) = δ (g (s), a) ). Also gilt: i) ∀ s ∈ S : ( o (f (s)) = o (g (s) ) ii) ∀ a ∈ Σ : ( δ (f (s), a) = f (δS (s, a)) R g (δS (s, a)) = δ (g (s), a) ). Damit ist R eine Bisimulation und es folgt mit Coinduktion: f = g.

Mittels eindeutigen Homomorphismus lS : S   Zuständen aus S feststellen.



kann man Paare von bisimilaren

Satz: Sei S = S, o, δ  ein Automat und lS : S   der eindeutige Homomorphismus, dann gilt: ∀ s, s’ ∈ S : s ~ s’ ⇔ lS (s) = lS (s’). Beweis: „ ⇒ “: R = { ( lS (s) , lS (s’) ) | s ~ s’, s, s’ ∈ S } ist eine Relation auf . Wir zeigen, dass R eine Bisimulation ist. Es gilt: - s ~ s’ ⇒ (s↓ ⇔ s’↓) ⇒ ( ε ∈ lS (s) ⇔ ε ∈ lS (s’) ) ⇒ ( lS (s)↓ ⇔ lS (s’)↓ ); - δ (lS (s), a) = lS (δS (s, a)) R lS (δS (s’, a)) = δ (lS (s’), a). Also ist R eine Bisimulation und mit Coinduktion folgt: lS (s) = lS (s’). „ ⇐ “: Sei R = {( s, s’ ) | lS (s) = lS (s’) } eine Relation auf S, dann gilt: - ( lS (s) = lS (s’) ) ⇒ ( ε ∈ lS (s) ⇔ ε ∈ lS (s’) ) ⇒ (s↓ ⇔ s’↓); - ( lS (s) = lS (s’) ) ⇒ ( lS (δS (s, a)) = lS (δS (s’, a)) ) ⇒ (δS (s, a) R δS (s’, a) ). Also ist R eine Bisimulation auf S.

Aus der Finalität von  folgt, dass die Identitätsfunktion l Homomorphismus auf  ist.

:   



der einzige

Dann ist nach dem Satz1 die Graph-Relation von l

eine

Bisimulation. Mit Coinduktion bekommen wir l (L) = L für alle L ∈ . Also ist die Sprache, die durch ein Zustand L aus  akzeptiert wird, L selber. Der Subautomat = {Lw | w ∈ Σ*} ⊆  ist außerdem ein minimaler Automat für L im folgenden Sinn. Sei S =  S, o, δ  ein Automat und s ∈ S ein Zustand, für den gilt: lS (s) = L. Da lS ein Homomorphismus ist, gilt: lS () = < lS (s)> = . Dann enthält höchstens so viele Elemente, wie die Zustandsmenge S. Da S und s beliebig waren, ist minimal. Es folgt, dass für jeden Automat S und jeden Zustand s ∈ S, der Automat < lS (s) > die Minimalisierung von dem Automaten ist. Außerdem gilt: L wird durch endlichen Automaten akzeptiert ⇔ ist endlicher Subautomat von . Begründung: Ist ein unendlicher Subautomat von , dann folgt aus der Minimalität von , dass der Automat, der die Sprache L erkennt auch nicht endlich ist. Und umgekehrt, wird die Sprache L durch einen nicht endlichen Automaten akzeptiert, so ist = = lS () ein nicht endlicher Subautomat von . Das ist äquivalent zum folgenden klassischen Myhill/Nerode Theorem: L wird durch endlichen Automaten akzeptiert ⇔ Index RL endlich. Wobei RL eine Äquivalenzrelation auf Σ* , die wie folgt definiert ist: ∀ v, w ∈ Σ* : v RL w ⇔ ( ∀ u ∈ Σ*, vu ∈ L ⇔ wu ∈ L) , und Index von RL wird definiert als die Anzahl von Äquivalenzklassen von RL. Die Äquivalenz von den obigen Aussagen folgt aus der Bijektivität von der Abbildung ϕ : Äquivalenzklassen von RL  Elemente von  L 

8

[w]RL  Lw, für w aus Σ* . Da für v und w ∈ Σ*, gilt: [v] RL = [w] RL ⇔ v RL w ⇔ ( ∀ u ∈ Σ*, vu ∈ L ⇔ wu ∈ L ) ⇔ ( ∀ u ∈ Σ*, u ∈ Lv ⇔ u ∈ Lw ) ⇔ Lv = Lw.

7 Kleene’s Theorem Laut Kleene’s Theorem ist eine Sprache dann und nur dann regulär, wenn sie durch einen endlichen Automaten erkannt werden kann. Also kann man jetzt das Kleene’s Theorem wie folgt umformulieren. Kleene’s Theorem: Sei Σ endlich. Für jede Sprache L ⊆ Σ* gilt: (19)

L regulär ⇔ < L > endlicher Subautomat von

.

Als Korollar zur Kleene’s Theorem wird unten gezeigt, dass Coinduktionsbeweisprinzip effektiv auf reguläre Sprachen anwendbar ist. Beweis: Nach Definition von regulären Sprachen gilt: L regulär „ ⇒ “ : (Induktion über die Struktur von E) I.A.: E = 0 ⇒  ( E ) = ∅ ⇒ # = 1 < ∞ E = 1 ⇒  ( E ) = {ε} ⇒ # = 1 < ∞ E = a ∈ Σ ⇒  ( E ) = {a} ⇒ # = 2 < ∞



∃ E ∈  :  (E) = L.

I.V.: Für die Ausdrücke E mit #  ( E ) = m ≥ 1 gilt:  ( E ) regulär ⇒ <  ( E ) > endlicher Subautomat von

.

I.S.: #  ( E ) = m +1. 1. Fall: E = S + T ⇒  (S + T) =  ( S ) +  ( T ) . Im allgemeinen Fall ist aus dem Zustand  (S + T) nur ein Zustand der Form  (S)w +  (T)w für jedes w ∈ Σ* erreichbar. Daraus folgt: <  (S + T) > ⊆ {K’ + M’ | K’∈<  (S)>, M’∈ } =: F. Nach I.V. sind <  ( S ) > und <  ( T ) > endliche Subautomaten, also ist F eine endliche Menge, dann ist <  ( S + T ) > ein endlicher Subautomat. von

.

2. Fall: E = ST ⇒  (ST) =  ( S )  ( T ) . Sei w = a1 . . . an ein beliebiges Wort aus Σ*. Im allgemeinen Fall ist aus dem Zustand nur ein Zustand der Form  (S)w  (T) +  1 +. . . +  n erreichbar, wobei  i = ∅, falls  (S)a1…ai ↑ =  (T)ai…an , sonst, für alle i ∈ [1, n]. Daraus folgt:

9

 (ST)

< (ST) > ⊆ { K’ M1 + M2 +...+ Mk | K’∈< (S)>, M1, M2 ,..., Mk ∈ < (T)>, k = #< (T)> } =: F’. Nach I.V. sind < ( S ) > und < ( T ) > endliche Subautomaten, also ist F’ eine endliche Menge, dann ist < (ST)> ein endlicher Subautomat von . 3. Fall: E = S* ⇒ (S*) = (S)* . Sei w = a1 . . . an ein beliebiges Wort aus Σ*. Im allgemeinen Fall ist aus dem Zustand (S*) nur ein Zustand der Form (S)w (T) + 1 +. . . + n-1 erreichbar, wobei (S)a1…ai ↑ ∧ (S)a2…ai ↑ ∧ . . . (S)ai↑ i = ∅, falls = (S)ai…an (S*), sonst, für alle i ∈ [1, n-1]. Daraus folgt: < (S*) > ⊆ { K1 (S*) + K2 (S*) +...+ Kk (S*) | K1, K2 ,..., Kk ∈ < (S)>, k = #< (S)> } =: F’’. Nach I.V. ist < ( S ) > endlicher Subautomat, also ist F’’ eine endliche Menge, dann ist < (S*) > ein endlicher Subautomat von . „ ⇐ “: bekannt aus der Vorlesung zur Theoretischen Informatik.



Korollar: der Beweis durch Coinduktion ist für reguläre Sprachen effektiv. Begründung: Seien  (E) und  (F) reguläre Sprachen. Da <  (E) > und <  (F) > endliche Subautomaten von  sind, gilt: nach endlich vielen Schritten wird entweder eine Bisimulation R mit <  (E), (F)> konstruiert (also ( E ) = ( F)), oder steht fest, dass keine solche Bisimulation existiert (also ( E ) ≠ ( F )).

8 Nichtreguläre Sprachen Das im Kapitel 7 formulierte Kleene’s Theorem kann benutzt werden, um zu beweisen, dass eine Sprache L nichtregulär ist. Dafür reicht es zu zeigen, dass nicht endlich ist. Diese Methode ist äquivalent zu dem traditionellem Beweis, bei dem geprüft wird, ob der Index RL endlich ist. Weiter wird die neue Methode an zwei klassischen Beispiele angewandt. Es wird dabei folgende Abkürzung benutzt: für eine Sprache K und k ≥ 0 bezeichnet Kk : = K a k die Sprache bzw. den Zustand der nach k-vielen a-Transitionen erreicht wurde, Beispiel 1: Sei L = {anbn | n ≥ 0 }. Dann ist Lk = {an-kbn | n ≥ k} und es gilt: Lk ≠ Lm , falls k ≠ m. Daraus folgt, dass nicht endlich ist, also L nichtregulär. Beispiel 2: Sei M = {w ∈ Σ* | #a(w) = #b(w)}. Alle Sprachen Mk sind verschieden, weil für alle n und k gilt: bn ∈ Mk ⇔ k = n. Also nicht endlich ist, also M nichtregulär. Beispiel 3: 2 Sei N = {a 2n | n ≥ 0 } . Es gilt: für alle n ist die Länge von kleinstem Wort aus N n 2 + 1 2 |a ( n + 1) - n - 1| = |a2n| = 2n. Also N n 2 und N m 2 sind verschieden, fall n ≠ m gilt. Folgt  N  ist nicht endlich, also N nichtregulär.

10

9 Coinduktives Definitionsprinzip Ausgehend aus der Finalität von

kann man die Sprachen aus

coinduktiv definieren.

Coinduktives Definitionsprinzip: Sei S eine Menge. Um eine Funktion S→ zu definieren, wird die Menge S, durch die Angabe einer Ausgabefunktion o und einer Transitionsfunktion δ, zu einem Automaten S =  S, o, δ  konvertiert. Dann ist die gesuchte Funktion, die Funktion lS : S  , die gleichzeitig ein eindeutiger Homomorphismus zwischen S und ist. Der Vorteil von coinduktiver Definition gegenüber der induktiver Definition wird an folgendem Beispiel verdeutlicht. Beispiel: Mischung von zwei Sprachen. Induktiv wird die Mischung zweier Sprachen wie folgt definiert: seien K, L ∈ , dann gilt: K || L = v || w,

  ∈∈

mit :

-

v || w = v || w ∪ w || v ε || v = { v } ( av ) || w = a ( v || w )

Um K || L coinduktiv definieren zu können, betrachten wir die Menge die durch folgende Regeln gegeben sind:

von Ausdrücken E,

) | E + F | E || F . Man kann die Menge zu einem Automaten < , o , δ > konvertieren, dessen Ausgabeund Überführungsfunktion wie folgt gegeben sind:

+ F)↓ ⇔

(E↓ oder F↓),

(E || F)↓ ⇔ (E↓ und F↓) L↓ ⇔ ε ∈ L, (E ( →(

) →)  ( →

( ) →)  L → La , , (+) →( +)

(||) →( ||)+(||)

 Nach dem coinduktiven Definitionsprinzip existiert ein eindeutiger Homomorphismus l: , E ::= L (L ∈

der jeden Ausdruck E auf die Sprache, die er beschreibt, abbildet.



Die Mischung zweier Sprachen K, L ∈ kann jetzt coinduktiv definiert werden: K || L = l (K || L). Die a-Ableitung von der Sprache K || L kann jetzt wie folgt berechnet werden: (K || L)a = (l (K || L))a = δ (l (K || L), a) = l (δ (K || L, a))

= l (Ka || L + K || La) = Ka || L + K || La = l (Ka || L) + l (K || La) = K a || L + K || L a

[da l Homomorphismus]

[nach Definition von δ]

 [da final]

Jetzt kann man leicht mit Coinduktion nachweisen, dass die Mischung zweier Sprachen beispielsweise assoziativ ist, also dass K || (L || M) = (K || L) || M gilt. Ausgehend aus induktiver Definition wäre der Beweis von Assoziativität dagegen sehr aufwendig.

11

10 Schlussbemerkung Die meist verbreitete Methode um zwei Ausdrücke auf Gleichheit zu prüfen beinhaltet folgende Schritte. Erstens wird zu jedem Ausdruck ein Automat konstruiert, der genau die Sprache akzeptiert, die durch den Ausdruck beschrieben wird. Danach werden die beiden Automaten minimiert. Die Gleichheit von den Ausdrücken gilt genau dann, wenn die resultierenden Automaten isomorph zu einander sind. In dem Kapitel 5 wurde gezeigt, wie man die Gleichheit von zwei Ausdrücken bzw. Sprachen mit Coinduktion beweisen kann. Dieses Prinzip hat den Vorteil, dass man nur mit einem Automaten für beide Ausdrücke auskommt. Außerdem braucht der Automat nicht minimiert zu werden. Eine wichtige Rolle spielt auch das coinduktive Definitionsprinzip, da die auf diese Weise definierten Sprachen besonders effektiv mit Coinduktion auf Gleichheit geprüft werden können, wie man das an dem Beispiel im Kapitel 9 sehen konnte. Das im Kapitel 7 formulierte Kleene’s Theorem bietet eine alternative zum Nachweis durch das Pumping Lemma Methode an, mit der gezeigt werden kann, dass gewisse Sprachen nicht regulär sind.

12