\[
\newcommand{\tr}{\Rightarrow}
\newcommand{\trs}{\tr^{\!\ast}}
\newcommand{\rlnm}[1]{\mathsf{(#1)}}
\newcommand{\rred}[1]{\xrightarrow{#1}}
\newcommand{\rreds}[1]{\mathrel{\xrightarrow{#1}\!\!^*}}
\newcommand{\cl}{\mathsf{Cl}}
\newcommand{\pow}{\mathcal{P}}
\newcommand{\matches}{\mathrel{\mathsf{matches}}}
\newcommand{\kw}[1]{\mathsf{#1}}
\]
Kleene’s Theorem. Finite automata and regular expressions have the same expressive power:
- For all regular expressions $R$, there is a finite automaton $M$ such that \(L(R) = L(M)\)
- For all finite automata $M$, there is a regular expression $R$ such that \(L(M) = L(R)\)