| Niech <math>L\subset A^{*} </math> będzie dowolnym językiem.
:1. Dla dowolnego języka <math>L\in \mathcal{REC}(A^{*}) </math> monoid przejść automatu minimalnego <math>\mathcal{A}_{L} </math> jest izomorficzny z monoidem syntaktycznym <math> M(L) </math> języka <math>L</math>, czyli
:2. (tw. J.Myhill'a) Język <math>\; L \subset A^* \;</math> jest rozpoznawalny wtedy i tylko wtedy, gdy <math>\; M(L) \;</math> jest monoidem skończonym.
\Leftrightarrow \forall v,z \in A^*\;\;vuz\in L\Leftrightarrow vwz\in L \Leftrightarrow[u]_{P_{L}}=[w]_{P_{L}}
\Leftrightarrow (u,v) \in P_L.\\
\end{array} </math></center>
Korzystamy teraz z twierdzenia o rozkładzie epimorfizmu, które w tym przypadku
ma postać: <br>
'''RYSUNEK ja-lekcja4-w-rys1.pdf'''<br>
czyli <math>M(\mathcal{A}_{L})\sim M(L) </math>. <br>
Dla dowodu punktu 2 załóżmy, że język <math>\; L \;</math> jest rozpoznawalny.
Zatem
<center><math>L = \bigcup_{w \in L} [w]_\rho ,</math></center> gdzie <math>\; \rho \;</math> jest kongruencją o skończonym indeksie.
Z twierdzenia (patrz [[#twierdzenie_2_1|Twierdzenie 2.1.]]) wnioskujemy, że <math>\rho \subseteq P_L .</math> Oznacza to, że indeks relacji <math>\; P_L \;</math> jest niewiększy od indeksu <math>\; \rho, \;</math> a co za tym idzie, <math>\; M(L) = A^*/P_L \;</math> jest monoidem skończonym.
Dla dowodu implikacji w stronę przeciwną rozważmy epimorfizm
kanoniczny <center><math>k : A^* \longrightarrow A^*/P_L = M(L).</math></center> Pokażemy, że
spełnia on warunki z punktu 4. twierdzenia 1.2 (patrz [[Języki, automaty i obliczenia/Wykład 3: Automat skończenie stanowy#twierdzenie_1_2|twierdzenie 1.2.]]). <math>M(L)
\;</math> jest skończony, więc pozostaje do wykazania
równość
<center><math>\; L = k^{-1}(k(L)). \;</math></center> W tym celu wystarczy oczywiście udowodnić inkluzję
<math>\; k^{-1}(k(L)) \subseteq L</math>. <br>
<center><math>\begin{array} {c}
v \in k^{-1}(k(L))\Rightarrow k(v) \in k(L)\Rightarrow\exists u \in L:k(v) = k(u) \in k(L)\Leftrightarrow\\
\Leftrightarrow \exists u \in L:[v]_{P_L} = [u]_{P_L}\Leftrightarrow\exists u \in L:v \in L\Leftrightarrow u\in L.\\
\end{array}
</math></center>
Czyli <math>v\in L</math> i <math>\; L = k^{-1}(k(L))</math>.
i tutaj twierdzenie jsadhfouvnhter zsdkjrvnhr SFj v
|}
{{twierdzenie|3.2.||
Niech <math>L\subset A^{*} </math> będzie dowolnym językiem.
:1. Dla dowolnego języka <math>L\in \mathcal{REC}(A^{*}) </math> monoid przejść automatu minimalnego <math>\mathcal{A}_{L} </math> jest izomorficzny z monoidem syntaktycznym <math> M(L) </math> języka <math>L</math>, czyli
:2. (tw. J.Myhill'a) Język <math>\; L \subset A^* \;</math> jest rozpoznawalny wtedy i tylko wtedy, gdy <math>\; M(L) \;</math> jest monoidem skończonym.
}}
{{dowod|||
Dla dowodu punktu 1 wykażemy, że
<center><math>P_{L}=Ker_{\tau
_{\mathcal{A}_{L}}}, </math></center>
gdzie zgodnie z definicją dla dowolnych <math>w,u\in A^{*} </math>
\Leftrightarrow \forall v,z \in A^*\;\;vuz\in L\Leftrightarrow vwz\in L \Leftrightarrow[u]_{P_{L}}=[w]_{P_{L}}
\Leftrightarrow (u,v) \in P_L.\\
\end{array} </math></center>
Korzystamy teraz z twierdzenia o rozkładzie epimorfizmu, które w tym przypadku
ma postać: <br>
'''RYSUNEK ja-lekcja4-w-rys1.pdf'''<br>
czyli <math>M(\mathcal{A}_{L})\sim M(L) </math>. <br>
Dla dowodu punktu 2 załóżmy, że język <math>\; L \;</math> jest rozpoznawalny.
Zatem
<center><math>L = \bigcup_{w \in L} [w]_\rho ,</math></center> gdzie <math>\; \rho \;</math> jest kongruencją o skończonym indeksie.
Z twierdzenia (patrz [[#twierdzenie_2_1|Twierdzenie 2.1.]]) wnioskujemy, że <math>\rho \subseteq P_L .</math> Oznacza to, że indeks relacji <math>\; P_L \;</math> jest niewiększy od indeksu <math>\; \rho, \;</math> a co za tym idzie, <math>\; M(L) = A^*/P_L \;</math> jest monoidem skończonym.
Dla dowodu implikacji w stronę przeciwną rozważmy epimorfizm
kanoniczny <center><math>k : A^* \longrightarrow A^*/P_L = M(L).</math></center> Pokażemy, że
spełnia on warunki z punktu 4. twierdzenia 1.2 (patrz [[Języki, automaty i obliczenia/Wykład 3: Automat skończenie stanowy#twierdzenie_1_2|twierdzenie 1.2.]]). <math>M(L)
\;</math> jest skończony, więc pozostaje do wykazania
równość
<center><math>\; L = k^{-1}(k(L)). \;</math></center> W tym celu wystarczy oczywiście udowodnić inkluzję
<math>\; k^{-1}(k(L)) \subseteq L</math>. <br>
<center><math>\begin{array} {c}
v \in k^{-1}(k(L))\Rightarrow k(v) \in k(L)\Rightarrow\exists u \in L:k(v) = k(u) \in k(L)\Leftrightarrow\\
\Leftrightarrow \exists u \in L:[v]_{P_L} = [u]_{P_L}\Leftrightarrow\exists u \in L:v \in L\Leftrightarrow u\in L.\\
\end{array}
</math></center>
Czyli <math>v\in L</math> i <math>\; L = k^{-1}(k(L))</math>.
}}
{| border="1" cellspacing="0"
{| border="1" cellspacing="0"
! !! Złożoność czasowa !! Złożoność pamięciowa
! !! Złożoność czasowa !! Złożoność pamięciowa
Wersja z 14:32, 15 sie 2006
Złożoność czasowa
Złożoność pamięciowa
Maszyna dodająca
Maszyna rozpoznająca
0
1
...
...
Cell1
Cell2
0
1
0
1
1
1
0
1
0
1
1
0
0
1
0
0
0
1
0
1
0
1
0
0
1
1
1
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p} \wedge \textnormal{q}}
0
0
0
1
1
1
1
0
1
0
1
1
0
1
1
0
0
1
0
1
1
1
1
1
0
0
0
0
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{r}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle (\textnormal{p} \wedge \textnormal{q})}
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
1
0
0
0
1
1
1
0
1
1
0
0
0
0
1
1
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
0
1
1
Numer funkcji
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
4
0
1
0
0
5
0
1
0
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
10
1
0
1
0
11
1
0
1
1
12
1
1
0
0
13
1
1
0
1
14
1
1
1
0
15
1
1
1
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{r}}
0
0
0
1
0
1
0
0
0
1
1
1
0
1
0
1
0
0
1
0
1
0
1
1
0
0
1
0
1
0
0
0
1
1
1
1
0
1
0
0
0
0
1
1
0
1
0
0
0
1
1
1
1
1
1
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{r}}
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
1
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{p}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{q}}
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{r}}
Parser nie mógł rozpoznać (nieznana funkcja „\begincases”): {\displaystyle g(C)=\begincases C\cup \{f(C')\} C \endcases }
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle g(C)=\left\{\aligned C\cup \{f(C')\}\\C\endaligned \right}
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle c\forall d\; c\in C \land d\in C \land c\sqsubseteq d\implies c\sqsubseteq' d, (C,\sqsubseteq) \preccurlyeq (C',\sqsubseteq') \iff C\subset C' \land \left\{\aligned \forall c \forall d\; &(c\in C\land d\in C) \implies (c\sqsubseteq d \iff c\sqsubseteq' d) \textrm{ oraz }\\ \forall c \forall d\; &(c\in C\land d\in C'\setminus C) \implies c\sqsubseteq' d \endaligned \right}