Lemma von Arden

Das Lemma von Arden trifft eine Aussage über Mengen von Zeichenreihen, welche im Rahmen der formalen Sprachen Gegenstand der theoretischen Informatik, spezieller der Automatentheorie sind.

Formulierung

Es sei Σ {\displaystyle \Sigma } ein beliebiges Alphabet; {\displaystyle *} stehe für den Kleene-Stern, + {\displaystyle +} für die positive transitive Hülle, {\displaystyle \cdot } für die Konkatenation zweier Zeichenreihen-Mengen und {\displaystyle \cup } für deren gewöhnliche Vereinigung (in dieser Priorität – Klammerung wird entsprechend vernachlässigt). Dann gilt folgende Äquivalenz:

( Y Σ + ) ( Z Σ ) ( ( X = Y X Z ) ( X = Y Z ) ) {\displaystyle \left(\forall Y\subseteq \Sigma ^{+}\right)\left(\forall Z\subseteq \Sigma ^{*}\right)\left(\left(X=Y\cdot X\cup Z\right)\leftrightarrow \left(X=Y^{*}\cdot Z\right)\right)}

bzw. folgende Gleichung:

( Y Σ + ) ( Z Σ ) ( { X Σ X = Y X Z } = { Y Z } ) {\displaystyle \left(\forall Y\subseteq \Sigma ^{+}\right)\left(\forall Z\subseteq \Sigma ^{*}\right)\left(\left\{X\subseteq \Sigma ^{*}\mid X=Y\cdot X\cup Z\right\}=\left\{Y^{*}\cdot Z\right\}\right)}

In Worten: Für eine beliebige Zeichenreihen-Menge Z {\displaystyle Z} und eine Zeichenreihen-Menge Y {\displaystyle Y} , welche das leere Wort ϵ {\displaystyle \epsilon } nicht enthält, hat die Gleichung X = Y X Z {\displaystyle X=Y\cdot X\cup Z} nur die eine Lösung X = Y Z {\displaystyle X=Y^{*}\cdot Z} .

Beweis

Auf die Quantisierung sei in beiden Beweisteilen der besseren Lesbarkeit halber weg verzichtet, was bei Allquantifizierung nicht weiter problematisch ist, solange keine Spezifikationen für die betreffenden Variablen vorgenommen werden. Entsprechende Stellen werden speziell behandelt.

Hinrichtung

Es sei S {\displaystyle S} eine Lösung für X {\displaystyle X} in der Gleichung X = Y X Z {\displaystyle X=Y\cdot X\cup Z} .

Obermenge

Zunächst wird die Definition des Kleene-Sternes angewendet und die Distributivität der Konkatenation über Vereinigungen genutzt:

S ( Y Z = ( n 0 Y n ) Z = n 0 Y n Z ) {\displaystyle S\supseteq \left(Y^{*}\cdot Z=\left(\bigcup _{n\geq 0}Y^{n}\right)\cdot Z=\bigcup _{n\geq 0}Y^{n}\cdot Z\right)}

Nun lässt sich durch vollständige Induktion über n {\displaystyle n} zeigen, dass S Y n Z {\displaystyle S\supseteq Y^{n}\cdot Z} für alle n 0 {\displaystyle n\geq 0} gilt:

  • Induktions-Hypothese

S Y n Z {\displaystyle S\supseteq Y^{n}\cdot Z}

  • Induktions-Anfang

( S Z ) ( S { ε } Z ) ( S Y 0 Z ) {\displaystyle \left(S\supseteq Z\right)\rightarrow \left(S\supseteq \left\{\varepsilon \right\}\cdot Z\right)\rightarrow \left(S\supseteq Y^{0}\cdot Z\right)}

  • Induktions-Schritt

( S Y S Z ) ( S Y S ) ( S Y Y n Z ) ( S Y n + 1 Z ) {\displaystyle \left(S\supseteq Y\cdot S\cup Z\right)\rightarrow \left(S\supseteq Y\cdot S\right)\rightarrow \left(S\supseteq Y\cdot Y^{n}\cdot Z\right)\rightarrow \left(S\supseteq Y^{n+1}\cdot Z\right)}

Da für verschiedene n alle Y n {\displaystyle Y^{n}} paarweise disjunkt sind, folgt aus ( n 0 ) ( S Y n ) {\displaystyle \left(\forall n\geq 0\right)\left(S\supseteq Y^{n}\right)} auch die ursprüngliche Obermengen-Beziehung S Y Z {\displaystyle S\supseteq Y^{*}\cdot Z} .

Untermenge

Hier wird der Beweis indirekt geführt: Man nimmt an, S Y Z {\displaystyle S\subseteq Y^{*}\cdot Z} gilt nicht, womit es mindestens ein Wort w {\displaystyle w} mit ( w S ) ( w Y Z ) {\displaystyle \left(w\in S\right)\wedge \left(w\notin Y^{*}Z\right)} geben muss. Weil S = Y S Z {\displaystyle S=Y\cdot S\cup Z} ist, muss w {\displaystyle w} auch Element von Y S Z {\displaystyle Y\cdot S\cup Z} sein oder anders formuliert ( w Y S ) ( w Z ) {\displaystyle \left(w\in Y\cdot S\right)\vee \left(w\in Z\right)} . Im ersten Fall setzt sich w {\displaystyle w} aus zwei Teilwörtern y Y {\displaystyle y\in Y} und s S {\displaystyle s\in S} zusammen, also w = y s {\displaystyle w=ys} . Da y {\displaystyle y} nicht das leere Wort sein kann (die Quantifizierung fordert Y Σ + {\displaystyle Y\subseteq \Sigma ^{+}} ), folgt | s | < | w | {\displaystyle \left|s\right|<\left|w\right|} . Betrachtet man das kleinste der als existierenden angenommenen w {\displaystyle w} , dann müsste außerdem s Y Z {\displaystyle s\in Y^{*}Z} gelten, was aber im Widerspruch zur Annahme w Y Z {\displaystyle w\notin Y^{*}Z} steht. Im anderen Fall, also w Z {\displaystyle w\in Z} , ergibt sich ebenfalls der Widerspruch w Y Z {\displaystyle w\in Y^{*}Z} . Da beide Fälle in Widersprüchen enden, muss die Annahme falsch gewesen sein, dass S Y n Z {\displaystyle S\subseteq Y^{n}\cdot Z} nicht gilt.

Rückrichtung

Diese Beweisrichtung ist trivial, da es reicht zu zeigen, dass Y Z {\displaystyle Y^{*}Z} die Gleichung X = Y X Z {\displaystyle X=Y\cdot X\cup Z} überhaupt löst:

( X = Y Z ) ( X = ( Y + { ε } ) Z ) ( X = ( Y Y { ε } ) Z ) ( X = Y Y Z { ε } Z ) ( X = Y X Z ) {\displaystyle \left(X=Y^{*}\cdot Z\right)\rightarrow \left(X=\left(Y^{+}\cup \left\{\varepsilon \right\}\right)\cdot Z\right)\rightarrow \left(X=\left(Y\cdot Y^{*}\cup \left\{\varepsilon \right\}\right)\cdot Z\right)\rightarrow \left(X=Y\cdot Y^{*}\cdot Z\cup \left\{\varepsilon \right\}\cdot Z\right)\rightarrow \left(X=Y\cdot X\cup Z\right)}

Anwendung

Die zentrale Bedeutung des Arden-Lemmas ist seine Anwendung in der Automatentheorie. Es erleichtert das Ermitteln der mengentechnischen Beschreibung, der von einem Nichtdeterministischen endlichen Automaten (NEA) akzeptierten Sprache:

Betrachtet wird ein NEA A = ( Q , Σ , Δ , i , F ) {\displaystyle {\mathcal {A}}=\left(Q,\Sigma ,\Delta ,i,F\right)} , dessen Zustände mit den natürlichen Zahlen von 1 {\displaystyle 1} bis n {\displaystyle n} bezeichnet sein sollen (also Q = { 1 , 2 , , n } {\displaystyle Q=\left\{1,2,\ldots ,n\right\}} ). Zusätzlich werden folgende Definitionen herangezogen:

A q , r = { σ Σ ( q , σ , r ) Δ } {\displaystyle A_{q,r}=\left\{\sigma \in \Sigma \mid \left(q,\sigma ,r\right)\in \Delta \right\}}

B q = { { ε } q F { } q F {\displaystyle B_{q}={\begin{cases}\left\{\varepsilon \right\}&q\in F\\\left\{\right\}&q\notin F\end{cases}}}

Mit Hilfe dieser Mengen lässt sich die Teilsprache jedes Zustands q Q {\displaystyle q\in Q} angeben:

L q = ( r Q A q , r L r ) B q {\displaystyle L_{q}=\left(\bigcup _{r\in Q}A_{q,r}\cdot L_{r}\right)\cup B_{q}}

Durch die Definition von L q {\displaystyle L_{q}} erhält man ein Gleichungs-System mit n {\displaystyle n} Gleichungen:

L 1 = A 1 , 1 L 1 A 1 , 2 L 2 A 1 , n L n B 1 L 2 = A 2 , 1 L 1 A 2 , 2 L 2 A 2 , n L n B 2 L n = A n , 1 L 1 A n , 2 L 2 A n , n L n B n {\displaystyle {\begin{array}{c}L_{1}=A_{1,1}\cdot L_{1}\cup A_{1,2}\cdot L_{2}\cup \ldots \cup A_{1,n}\cdot L_{n}\cup B_{1}\\L_{2}=A_{2,1}\cdot L_{1}\cup A_{2,2}\cdot L_{2}\cup \ldots \cup A_{2,n}\cdot L_{n}\cup B_{2}\\\vdots \\L_{n}=A_{n,1}\cdot L_{1}\cup A_{n,2}\cdot L_{2}\cup \ldots \cup A_{n,n}\cdot L_{n}\cup B_{n}\end{array}}}

Nun bringt man eine Teilsprache auf eine geeignete Form, welche eine Anwendung des Lemmas ermöglicht:

L q = A q , q L q ( ( r Q { q } A q , r L r ) B q ) {\displaystyle L_{q}=A_{q,q}\cdot L_{q}\cup \left(\left(\bigcup _{r\in Q\setminus \left\{q\right\}}A_{q,r}\cdot L_{r}\right)\cup B_{q}\right)}

Laut Arden’s Lemma ist diese Aussage äquivalent zu folgender:

L q = A q , q ( ( r Q { q } A q , r L r ) B q ) {\displaystyle L_{q}=A_{q,q}^{*}\cdot \left(\left(\bigcup _{r\in Q\setminus \left\{q\right\}}A_{q,r}\cdot L_{r}\right)\cup B_{q}\right)}

Diese Lösung ist eindeutig. Setzt man nun L q {\displaystyle L_{q}} in alle anderen Gleichungen ein, so erhält man ein Gleichungs-System mit einer Variable weniger und kann so auf diese Weise immer weiter bis zum trivialen Fall vereinfachen, bei dem nur noch eine Gleichung übrig ist, welche man unabhängig von allen anderen Teilsprachen lösen kann. Durch Rückwärts-Einsetzen erhält man dann auch die übrigen Teilsprachen um schlussendlich die eindeutige Lösung des gesamten Gleichungs-Systems zu ermitteln und mit L i {\displaystyle L_{i}} die vom Automaten A {\displaystyle {\mathcal {A}}} akzeptierte Sprache L ( A ) {\displaystyle L({\mathcal {A}})} zu identifizieren.

Algebraische Betrachtung

Aus Sicht der abstrakten Algebra stellt ( P ( Σ ) , , ) {\displaystyle \left({\mathcal {P}}\left(\Sigma ^{*}\right),\cup ,\cdot \right)} die Struktur eines Dioids dar, was heißt, dass sowohl ( P ( Σ ) , ) {\displaystyle \left({\mathcal {P}}\left(\Sigma ^{*}\right),\cup \right)} als auch ( P ( Σ ) , ) {\displaystyle \left({\mathcal {P}}\left(\Sigma ^{*}\right),\cdot \right)} einen Monoiden bilden und {\displaystyle \cdot } distributiv über {\displaystyle \cup } ist. Das neutrale Element bezüglich der Vereinigung ist die leere Menge und das neutrale Element bezüglich der Konkatenation ist { ε } {\displaystyle \left\{\varepsilon \right\}} . Aufgrund der fehlenden Invertierbarkeit ist es im Allgemeinen nicht möglich Gleichungen über dieser Struktur zu lösen. Das Lemma von Arden ermöglicht es aber zumindest die Lösungen einiger spezieller Gleichungen zu ermitteln und das sogar eindeutig.

Beispiele

Einfache Beispiele

( X = { a } X { b } ) ( X = { a } { b } = { a n b n 0 } = { b , a b , a a b , a a a b } ) {\displaystyle \left(X=\left\{a\right\}\cdot X\cup \left\{b\right\}\right)\quad \leftrightarrow \quad \left(X=\left\{a\right\}^{*}\cdot \left\{b\right\}=\left\{a^{n}b\mid n\geq 0\right\}=\left\{b,ab,aab,aaab\ldots \right\}\right)}

( X = { 0 , 1 } X { u , v } ) ( X = { 0 , 1 } { u , v } = { u , v , 0 u , 0 v , 1 u , 1 v , 00 u , 00 v , 01 u , 01 v , 10 u , 10 v , } ) {\displaystyle \left(X=\left\{0,1\right\}\cdot X\cup \left\{u,v\right\}\right)\quad \leftrightarrow \quad \left(X=\left\{0,1\right\}^{*}\cdot \left\{u,v\right\}=\left\{u,v,0u,0v,1u,1v,00u,00v,01u,01v,10u,10v,\ldots \right\}\right)}

Komplexes Beispiel

A = ( { S 0 , S 1 , S 2 , S 3 , S 4 } , { 0 , 1 } , Δ , S 0 , { S 1 , S 3 } ) {\displaystyle {\mathcal {A}}=\left(\left\{S_{0},S_{1},S_{2},S_{3},S_{4}\right\},\left\{0,1\right\},\Delta ,S_{0},\left\{S_{1},S_{3}\right\}\right)}

Δ = { ( S 0 , ε , S 1 ) , ( S 0 , ε , S 3 ) , ( S 1 , 0 , S 2 ) , ( S 1 , 1 , S 1 ) , ( S 2 , 0 , S 1 ) , ( S 2 , 1 , S 2 ) , ( S 3 , 0 , S 3 ) , ( S 3 , 1 , S 4 ) , ( S 4 , 0 , S 4 ) , ( S 4 , 1 , S 3 ) } {\displaystyle \Delta =\left\{(S_{0},\varepsilon ,S_{1}),(S_{0},\varepsilon ,S_{3}),(S_{1},0,S_{2}),(S_{1},1,S_{1}),(S_{2},0,S_{1}),(S_{2},1,S_{2}),(S_{3},0,S_{3}),(S_{3},1,S_{4}),(S_{4},0,S_{4}),(S_{4},1,S_{3})\right\}}

Man erhält damit das folgende Gleichungs-System:

L S 0 = { } L S 0 { ε } L S 1 { } L S 2 { ε } L S 3 { } L S 4 = L S 1 L S 3 L S 1 = { } L S 0 { 1 } L S 1 { 0 } L S 2 { } L S 3 { } L S 4 { ε } = { 1 } L S 1 { 0 } L S 2 { ε } L S 2 = { } L S 0 { 0 } L S 1 { 1 } L S 2 { } L S 3 { } L S 4 = { 0 } L S 1 { 1 } L S 2 L S 3 = { } L S 0 { } L S 1 { } L S 2 { 0 } L S 3 { 1 } L S 4 { ε } = { 0 } L S 3 { 1 } L S 4 { ε } L S 4 = { } L S 0 { } L S 1 { } L S 2 { 1 } L S 3 { 0 } L S 4 = { 1 } L S 3 { 0 } L S 4 {\displaystyle {\begin{array}{lclcl}L_{S_{0}}&=&\{\,\}\cdot L_{S_{0}}\cup \left\{\varepsilon \right\}\cdot L_{S_{1}}\cup \{\,\}\cdot L_{S_{2}}\cup \left\{\varepsilon \right\}\cdot L_{S_{3}}\cup \{\,\}\cdot L_{S_{4}}&=&L_{S_{1}}\cup L_{S_{3}}\\L_{S_{1}}&=&\{\,\}\cdot L_{S_{0}}\cup \left\{1\right\}\cdot L_{S_{1}}\cup \left\{0\right\}\cdot L_{S_{2}}\cup \{\,\}\cdot L_{S_{3}}\cup \{\,\}\cdot L_{S_{4}}\cup \left\{\varepsilon \right\}&=&\left\{1\right\}\cdot L_{S_{1}}\cup \left\{0\right\}\cdot L_{S_{2}}\cup \left\{\varepsilon \right\}\\L_{S_{2}}&=&\{\,\}\cdot L_{S_{0}}\cup \left\{0\right\}\cdot L_{S_{1}}\cup \left\{1\right\}\cdot L_{S_{2}}\cup \{\,\}\cdot L_{S_{3}}\cup \{\,\}\cdot L_{S_{4}}&=&\left\{0\right\}\cdot L_{S_{1}}\cup \left\{1\right\}\cdot L_{S_{2}}\\L_{S_{3}}&=&\{\,\}\cdot L_{S_{0}}\cup \{\,\}\cdot L_{S_{1}}\cup \{\,\}\cdot L_{S_{2}}\cup \left\{0\right\}\cdot L_{S_{3}}\cup \left\{1\right\}\cdot L_{S_{4}}\cup \left\{\varepsilon \right\}&=&\left\{0\right\}\cdot L_{S_{3}}\cup \left\{1\right\}\cdot L_{S_{4}}\cup \left\{\varepsilon \right\}\\L_{S_{4}}&=&\{\,\}\cdot L_{S_{0}}\cup \{\,\}\cdot L_{S_{1}}\cup \{\,\}\cdot L_{S_{2}}\cup \left\{1\right\}\cdot L_{S_{3}}\cup \left\{0\right\}\cdot L_{S_{4}}&=&\left\{1\right\}\cdot L_{S_{3}}\cup \left\{0\right\}\cdot L_{S_{4}}\end{array}}}


Durch die Anwendung des Lemmas erhält man schrittweise die Lösung:

L S 2 = { 0 } L S 1 { 1 } L S 2 {\displaystyle L_{S_{2}}=\left\{0\right\}\cdot L_{S_{1}}\cup \left\{1\right\}\cdot L_{S_{2}}}

L S 2 = { 1 } { 0 } L S 1 {\displaystyle \rightarrow \quad L_{S_{2}}=\left\{1\right\}^{*}\cdot \left\{0\right\}\cdot L_{S_{1}}}


L S 1 = { 1 } L S 1 { 0 } L S 2 { ε } = { 1 } L S 1 { 0 } { 1 } { 0 } L S 1 { ε } = ( { 1 } { 0 } { 1 } { 0 } ) L S 1 { ε } {\displaystyle L_{S_{1}}=\left\{1\right\}\cdot L_{S_{1}}\cup \left\{0\right\}\cdot L_{S_{2}}\cup \left\{\varepsilon \right\}=\left\{1\right\}\cdot L_{S_{1}}\cup \left\{0\right\}\cdot \left\{1\right\}^{*}\cdot \left\{0\right\}\cdot L_{S_{1}}\cup \left\{\varepsilon \right\}=\left(\left\{1\right\}\cup \left\{0\right\}\cdot \left\{1\right\}^{*}\cdot \left\{0\right\}\right)\cdot L_{S_{1}}\cup \left\{\varepsilon \right\}}

L S 1 = ( { 1 } { 0 } { 1 } { 0 } ) {\displaystyle \rightarrow \quad L_{S_{1}}=\left(\left\{1\right\}\cup \left\{0\right\}\cdot \left\{1\right\}^{*}\cdot \left\{0\right\}\right)^{*}}


L S 4 = { 1 } L S 3 { 0 } L S 4 {\displaystyle L_{S_{4}}=\left\{1\right\}\cdot L_{S_{3}}\cup \left\{0\right\}\cdot L_{S_{4}}}

L S 4 = { 0 } { 1 } L S 3 {\displaystyle \rightarrow \quad L_{S_{4}}=\left\{0\right\}^{*}\cdot \left\{1\right\}\cdot L_{S_{3}}}


L S 3 = { 0 } L S 3 { 1 } L S 4 { ε } = { 0 } L S 3 { 1 } { 0 } { 1 } L S 3 { ε } = ( { 0 } { 1 } { 0 } { 1 } ) L S 3 { ε } {\displaystyle L_{S_{3}}=\left\{0\right\}\cdot L_{S_{3}}\cup \left\{1\right\}\cdot L_{S_{4}}\cup \left\{\varepsilon \right\}=\left\{0\right\}\cdot L_{S_{3}}\cup \left\{1\right\}\cdot \left\{0\right\}^{*}\cdot \left\{1\right\}\cdot L_{S_{3}}\cup \left\{\varepsilon \right\}=\left(\left\{0\right\}\cup \left\{1\right\}\cdot \left\{0\right\}^{*}\cdot \left\{1\right\}\right)\cdot L_{S_{3}}\cup \left\{\varepsilon \right\}}

L S 3 = ( { 0 } { 1 } { 0 } { 1 } ) {\displaystyle \rightarrow \quad L_{S_{3}}=\left(\left\{0\right\}\cup \left\{1\right\}\cdot \left\{0\right\}^{*}\cdot \left\{1\right\}\right)^{*}}


L S 0 = L S 1 L S 3 = ( { 1 } { 0 } { 1 } { 0 } ) ( { 0 } { 1 } { 0 } { 1 } ) {\displaystyle L_{S_{0}}=L_{S_{1}}\cup L_{S_{3}}=\left(\left\{1\right\}\cup \left\{0\right\}\cdot \left\{1\right\}^{*}\cdot \left\{0\right\}\right)^{*}\cup \left(\left\{0\right\}\cup \left\{1\right\}\cdot \left\{0\right\}^{*}\cdot \left\{1\right\}\right)^{*}}


Da S 0 {\displaystyle S_{0}} der Startzustand von A {\displaystyle {\mathcal {A}}} ist, gilt L ( A ) = L S 0 {\displaystyle L({\mathcal {A}})=L_{S_{0}}} , was der dem regulären Ausdruck ( 1 + 01 0 ) + ( 0 + 10 1 ) {\displaystyle (1+01^{*}0)^{*}+(0+10^{*}1)^{*}} zugeordneten Sprache entspricht.

Literatur

  • D. N. Arden: Theory of Computing Machine Design: An Intensive Course for Engineers, Scientists, and Mathematicians, University of Michigan Press, Michigan, USA, 1960 (S. 1–35)
  • John E. Hopcroft: Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979. ISBN 0-201-02988-X
  • Marko Van Eekelen, Herman Geuvers, Julien Schmaltz, Freek Wiedijk: Interactive Theorem Proving, Springer Science & Business Media, 2011
  • Harold V. McIntosh: One Dimensional Cellular Automata, Luniver Press, 2009 (S. 87)
  • A. Arnold, D. Niwinski: Rudiments of µ-calculus, Elsevier, 2001 (ab S. 107)
  • John Daintith: Ardens rule, Oxford University Press, 2004 (englisch)