diff --git a/01-regular/regular.tex b/01-regular/regular.tex
index a45b27e9a30ab3321353d64b7328848871e22fde..40fa0d310990f4f6c82c0901d040d19b49acb820 100644
--- a/01-regular/regular.tex
+++ b/01-regular/regular.tex
@@ -790,8 +790,8 @@ prozkoumáme, jak automaty zjednodušovat.
 
 \figure[dfa-reduce]{redukce.epdf}{width 0.8\hsize}{Automat a jeho redukce}
 
-Prohlédněme si na automat na obrázku \figref{dfa-reduce} vlevo,
-definovaný nad abecedou $\{\|a|, \|b|\}$.
+Prohlédněme si automat na obrázku \figref{dfa-reduce} vlevo,
+pracující nad abecedou $\{\|a|, \|b|\}$.
 Zřejmě rozpoznává jazyk generovaný regulárním výrazem $(\|a|\mid\|b|)\;\|a|^*\|b|\;(\|a|\mid\|b|)^*$.
 Tentýž jazyk lze ovšem rozpoznávat i automatem vpravo, který má pouhé 3~stavy.
 
@@ -805,10 +805,10 @@ Zamysleme se nad tím, jakých stavů bychom se v~levém automatu dokázali zbav
 \:Stavy 3 a~4 není potřeba rozlišovat: oba jsou přijímací a po zpracování
 libovolného slova automat skončí zase v~přijímacím stavu. Můžeme je tedy
 sloučit do společného stavu 34, který bude přijímací a jak~\|a|, tak~\|b| povedou
-do téhož stavu.
+opět do stavu 34.
 
 \:Stavy 1 a~2 také není potřeba rozlišovat: v~obou platí, že \|b| nás posune
-do stavu 34, zatímco na \|a| zůstaneme v~1 nebo~2. Opět je můžeme sloučit
+do stavu 34, zatímco po \|a| zůstaneme v~1 nebo~2. Opět je můžeme sloučit
 do společného stavu 12. (Naproti tomu 12 a 34 se chovají jinak, například se
 liší tím, zda jsou přijímací.)
 
@@ -823,8 +823,7 @@ tentýž jazyk. Nyní se tento proces pokusíme popsat obecně.
 
 Dosažitelné stavy jsou přesně ty, do nichž ze stavu~$q_0$ vede cesta. Tím pádem
 je můžeme najít prohledáním automatu do šířky. Odstraníme-li všechny nedosažitelné
-stavy, nezmění se $\delta(q_0,\alpha)$ pro žádné~$\alpha$, a~tím pádem ani jazyk
-přijímaný automatem.
+stavy, nezmění se množina možných výpočtů, a~tím pádem ani jazyk přijímaný automatem.
 
 \defn{Stavy $s,t\in Q$ jsou \df{ekvivalentní} (značíme $s\equiv t$), pokud pro
 každé slovo $\alpha\in\Sigma^*$ platí $\delta^*(s,\alpha)\in F$, právě když
@@ -848,8 +847,8 @@ kdykoliv $|\alpha|\le k$.
 }
 
 \obs{\list{o}
-\:Je-li $s\equiv_k t$, platí také $s\equiv_{k+1} t$. Ekvivalence~$\equiv_{k+1}$ je tedy
-\em{zjemněním} ekvivalence~$\equiv_k$, tedy $\mathord{\equiv_k} \subseteq \mathord{\equiv_{k+1}}$
+\:Je-li $s\equiv_{k+1} t$, platí také $s\equiv_k t$. Ekvivalence~$\equiv_{k+1}$ je tedy
+\em{zjemněním} ekvivalence~$\equiv_k$, tedy $\mathord{\equiv_{k+1}} \subseteq \mathord{\equiv_k}$
 a třídy jemnější ekvivalence jsou podmnožinami tříd hrubší ekvivalence.
 
 \:$s\equiv t$ platí právě tehdy, když je $s\equiv_k t$ pro všechna~$k$.
@@ -917,19 +916,27 @@ Pak definujeme \df{faktorový automat} $A/\mathord{\equiv} = (Q',\Sigma,\delta',
 \note{
 Stavy faktorového automatu jsou tedy ekvivalenční třídy stavů původního
 automatu. Přechod z~ekvivalenční třídy $S$ do $T$ přes znak~$x$ odpovídá
-přechodu mezi $s\in S$ do $t\in T$ přes~$x$ v~původním automatu;
-z~vlastností relace~$\equiv$ plyne, že nezáleží na volbě reprezentantů
-tříd $s$ a~$t$. Podobně třída je přijímací, pokud stavy v~ní ležící
-byly v~původním automatu přijímací; opět se na tom všechny stavy shodnou.
+přechodu mezi $s\in S$ do $t\in T$ přes~$x$ v~původním automatu.
+Z~vlastností relace~$\equiv$ přitom plyne, že nezáleží na volbě reprezentantů $s$ a~$t$:
+pro každé $s,s'\in S$ a $x\in\Sigma$ je $sx \equiv s'x$.
+Podobně třída je přijímací, pokud stavy v~ní ležící byly v~původním automatu přijímací;
+opět se na tom všichni reprezentanti třídy shodnou.
+}
 
-Faktorizací automatu se nezmění přijímaný jazyk. Indukcí snadno dokážeme,
-že pro každý řetězec~$\alpha$ platí $\delta'(q'_0,\alpha) = \delta'([q_0],\alpha) = [\delta(q_0,\alpha)]$.
+\lemma{
+Faktorizací automatu se nezmění přijímaný jazyk.
 }
 
+\proof
+Indukcí podle délky řetězce dokážeme, že pro každý řetězec~$\alpha$ platí
+$\delta'(q'_0,\alpha) = \delta'([q_0],\alpha) = [\delta(q_0,\alpha)]$.
+Tento stav leží v~$F'$ právě tehdy, když $\delta(q_0,\alpha)$ leží v~$F$.
+\qed
+
 \example{Z~levého automatu na obrázku \figref{dfa-reduce} dostaneme faktorizací pravý automat.}
 
 \defn{
-Automat je \df{redukovaný,} pokud nemá dosažitelné stavy a pokud žadné
+Automat je \df{redukovaný,} pokud jsou všechny jeho stavy dosažitelné a žádné
 dva stavy nejsou ekvivalentní.
 }
 
@@ -958,7 +965,8 @@ pamatovat číslo $t[s]$ třídy, kam patří.
 \::$p \= 2$  \cmt{počet tříd}
 \:Pro $k=1,2,\ldots,|Q|$:  \cmt{postupně vytváříme další ekvivalence~$\equiv_k$}
 \::Pro všechny stavy $s\in Q$:
-\:::$a_s \= \hbox{pole nul indexované abecedou}$
+\:::$a_s \= \hbox{pole nul indexované abecedou rozšířenou o~$\varepsilon$}$
+\:::$a_s[\varepsilon] \= t[s]$
 \:::Pro všechny znaky $x\in\Sigma$:
 \::::$a_s[x] \= t[\delta(s,x)]$
 \::Setřídíme všechna $a_s$ lexikograficky.
@@ -973,15 +981,16 @@ pamatovat číslo $t[s]$ třídy, kam patří.
 \algout Ekvivalence~$\equiv$ popsaná polem~$t$ čísel tříd.
 \endalgo
 
-Při konstrukci ekvivalence~$\equiv_k$ algoritmus každému stavu~$s$ přiřadí jeho kód:
-$|\Sigma|$-tici čísel indexovanou znaky abecedy. Na $x$-té pozici leží číslo ekvivalenční
-třídy v~$\equiv_{k-1}$, do níž padne $\delta(s,x)$. Dva stavy jsou pak ekvivalentní v~$\equiv_k$
-právě tehdy, když dostaly stejný kód. Stačí tedy kódy setřídit a pro každou skupinu stejných
-kódů založit ekvivalenční třídu.
+Při konstrukci ekvivalence~$\equiv_k$ algoritmus každému stavu~$s$ přiřadí jeho \em{kód:}
+$(|\Sigma|+1)$-tici čísel indexovanou znaky abecedy rozšířené o~$\varepsilon$.
+Na $x$-té pozici leží číslo ekvivalenční třídy v~$\equiv_{k-1}$, do níž padne $\delta(s,x)$.
+Na pozici~$\varepsilon$ leží číslo původní ekvivalenční třídy.
+Dva stavy jsou pak ekvivalentní v~$\equiv_k$ právě tehdy, když dostaly stejný kód.
+Stačí tedy kódy setřídit a pro každou skupinu stejných kódů založit ekvivalenční třídu.
 
 Jaká je složitost tohoto algoritmu v~závislosti na počtu stavů $S = |Q|$ a velikosti abecedy $A = |\Sigma|$?
 Hlavní smyčka přes~$k$ proběhne nejvýš $S$-krát, pak už nemůže ekvivalenčních tříd přibývat.
-Pro každou ekvivalenci sestrojíme $S$ kódů délky~$A$, což trvá $\Theta(SA)$.
+Pro každou ekvivalenci sestrojíme $S$ kódů délky~$A+1$, což trvá $\Theta(SA)$.
 V~tomto čase je stihneme i přihrádkově setřídit a očíslovat nové ekvivalenční třídy.
 Algoritmus tedy doběhne v~čase $\Theta(S^2A)$.