From e4d919a80859cfaab052753f35aa1871ae70e5af Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Tue, 14 May 2024 19:56:19 +0200
Subject: [PATCH] Regular: Monoidy a okruhy

---
 01-regular/regular.tex | 82 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 68 insertions(+), 14 deletions(-)

diff --git a/01-regular/regular.tex b/01-regular/regular.tex
index 60eee0c..60025f9 100644
--- a/01-regular/regular.tex
+++ b/01-regular/regular.tex
@@ -788,16 +788,70 @@ V~tomto oddílu prozkoumáme některé souvislosti mezi teorií automatů
 a algebrou. Předpokládáme čtenáře zběhlého v~základech algebry, takže
 důkazy jsou zde poněkud hutnější.
 
+\subsection{Monoidy a okruhy}
+
+\defn{
+\df{Monoid} je algebraická struktura $(X,\cdot,1)$, kde $X$ je množina prvků,
+$\cdot$ nějaká asociativní binární operace a~$1$ její jednotkový prvek (platí
+$1\cdot x = x\cdot 1 = x$ pro všechna $x\in X$).\foot{Je to tedy něco jako grupa,
+ale k~$+$ nemusí existovat inverze.}
+Pokud $\cdot$ navíc komutuje, mluvíme o~komutativním monoidu.
+}
+
+\examples{\tightlist{o}
+\:Celá čísla s~násobením a jednotkovým prvkem~1 tvoří komutativní monoid.
+\:Funkce z~$\{1,\ldots,n\}$ do $\{1,\ldots,n\}$ spolu se skládáním funkcí a identitou
+  tvoří monoid, který pro $n>1$ není komutativní.
+\endlist
+}
+
+\defn{
+Nad libovolnou abecedou~$\Sigma$ můžeme definovat monoid $(\Sigma^*, \cdot, \varepsilon)$.
+Jeho prvky řetězce, binární operace je zřetězení (rozmyslete si asociativitu)
+a jako jednotkový prvek slouží prázdný řetězec~$\varepsilon$. Tomuto monoidu se říká
+\df{volný monoid} nad abecedou~$\Sigma$ nebo také \df{monoid řetězců}.
+}
+
+\defn{
+\df{Okruh} je algebraická struktura $(X,+,\cdot,0,1)$, kde $+$ a~$\cdot$ jsou
+binární operace, $(X,\cdot,1)$ tvoří monoid, $(X,+,0)$ tvoří komutativní monoid
+a navíc jsou $+$ a~$\cdot$ svázány distributivitou z~obou stran:
+$$
+	x\cdot (y+z) = x\cdot y + x\cdot z, \quad
+	(x+y)\cdot z = x\cdot z + y\cdot z.
+$$
+Pokud navíc $\cdot$ komutuje, mluvíme o~komutativním okruhu.\foot{Okruh je tedy něco
+jako těleso, jen v~něm nemusí jít dělit.}
+}
+
+\examples{\tightlist{o}
+\:Celá čísla $(\Z,+,\cdot,0,1)$ s~běžnými operacemi tvoří komutativní okruh.
+\:Matice $\R^{n\times n}$ spolu s~maticovým sčítáním a násobením,
+  nulovou maticí a jednotkovou maticí tvoří okruh, který pro $n>1$ komutuje.
+\endlist}
+
+\defn{
+Uvažme množinu $2^{\Sigma^*}$ všech jazyků nad abecedou~$\Sigma$.
+Když k~ní přidáme operaci $\cup$ sjednocení jazyků s~jednotkovým prvkem~$\emptyset$
+a operaci $\cdot$ zřetězení jazyků s~jednotkovým prvkem~$\{\varepsilon\}$,
+vznikne okruh. Říkáme mu \df{okruh jazyků} nad~$\Sigma$.
+}
+
+\note{
+Snadno ověříme, že $\cup$ komutuje, $\cdot$ nekomutuje a tyto dvě operace
+jsou svázány distributivitou $(A\cup B)\cdot C = A\cdot C \cup B\cdot C$
+a analogicky z~opačné strany.
+}
+
 \subsection{Lineární rovnice pro jazyky}
 
 Pojďme prozkoumat, jak se chovají rovnice typu $X=AX\cup B$, kde $X$ je neznámý
-jazyk a $A$ a~$B$ známé jazyky. To je analogie lineárních rovnic, jen místo
-násobení zřetězujeme a místo sčítání sjednocujeme. Aby analogie lépe vynikla,
-budeme psát $+$ místo~$\cup$.
+jazyk a $A$ a~$B$ známé jazyky. To je analogie lineárních rovnic, jen v~okruhu jazyků
+místo tělesa reálných čísel. Aby analogie lépe vynikla, budeme na chvíli psát $+$ místo~$\cup$.
 
 \lemma{Pro každé dva jazyky $A$ a~$B$ existuje jazyk~$X$ takový, že $X=AX+B$.
 Pokud jazyk~$A$ neobsahuje prázdné slovo, je~$X$ jednoznačně určen.
-Jsou-li navíc $A$ a~$B$ regulární jazyky, pak $X$~je také regulární.
+Navíc $X$ lze z~$A$ a~$B$ získat operacemi regulárních výrazů.
 }
 
 \proof
@@ -817,9 +871,6 @@ $A$ neobsahuje prázdné slovo, naše~$\alpha'$ je neprázdné, takže $\xi$ mus
 než~$\alpha$. Ovšem $\alpha$ bylo nejkratší špatné slovo, tedy $\xi$ je dobré. Proto
 musí $\xi$ ležet nejen v~$X_1$, ale i v~$X_2$. Takže $\alpha'\xi \in AX_2 \subseteq X_2$,
 což je ve sporu s~tím, že $\alpha$ bylo špatné.
-
-A~nakonec regularita: jelikož regulární jazyky jsou uzavřené na iteraci
-i zřetězení, pro $A$ a~$B$ regulární je řešení $X=A^*B$ také regulární.
 \qed
 
 Dále uvažme soustavu lineárních rovnic tvaru
@@ -833,8 +884,8 @@ Tuto soustavu můžeme řešit postupem podobným Gaussově eliminaci.
 
 \lemma{
 Pokud žádný z~jazyků $A_{ij}$ neobsahuje prázdné slovo, má soustava rovnic
-$(*)$ právě jedno řešení $X_1$, \dots, $X_n$. Jsou-li navíc všechny $A_{ij}$ a~$B_i$ regulární,
-pak $X_1$ až~$X_n$ jsou také regulární.
+$(*)$ právě jedno řešení $X_1$, \dots, $X_n$. Toto řešení lze z~jazyků
+$A_{ij}$ a~$B_i$ vyjádřit operacemi regulárních výrazů.
 }
 
 \proof
@@ -864,11 +915,13 @@ To je soustava $n-1$ rovnic o~$n-1$ neznámých, jejíž koeficienty $A'_{ij}$
 jsou zase jazyky neobsahující prázdné slovo. Podle indukčního předpokladu
 má jednoznačné řešení, k~němuž umíme jednoznačně doplnit~$X_1$ a získat tak
 řešení původní soustavy.
-
-Zbývá si uvědomit, že všechny operace, které jsme při výpočtu řešení použili,
-zachovávají regularitu.
 \qed
 
+\cor{
+Pokud jsou všechny koeficienty soustavy regulární jazyky, řešení $X_1$, \dots, $X_n$
+je také tvořeno regulárními jazyky.
+}
+
 \cor{
 Řešení soustav rovnic nám dává alternativní důkaz Kleeneho věty (její netriviální implikace).
 Mějme deterministický automat s~počátečním stavem~$q_0$ a dalšími stavy $q_1$, \dots, $q_n$.
@@ -887,8 +940,9 @@ a $B_i=\{\varepsilon\}$, pokud $q_i$ je přijímací stav, a~jinak $B_i=\emptyse
 
 Vytvořili jsme soustavu $n+1$ rovnic o~$n+1$ neznámých, jejíž koeficienty
 $A_{ij}$ neobsahují prázdné slovo. Podle předchozího lemmatu má tedy jednoznačné
-řešení. Z~něj si vybereme jazyk~$X_0$ a rozmyslíme si, že jsme ho vytvořili
-pomocí operací, které máme k~dispozici v~regulárních výrazech.
+řešení. Z~něj si vybereme jazyk~$X_0$ a zapíšeme ho jako regulární výraz.
+To vyjde, neboť koeficienty soustavy jsou konečné, a~tedy regulární jazyky
+a řešení soustavy z~nich umíme vyjádřit pomocí operací regulárních výrazů.
 }
 
 \exercises
-- 
GitLab