\begin{frame}{Concatenation}
\begin{goal}{Theorem}
If $L_1$ and $L_2$ are recursively enumerable languages, then so is
\begin{talign}
L_1L_2
\end{talign}
\end{goal}
\pause
\begin{block}{}
Let $M_1$ and $M_2$ be Turing machines such that
\begin{talign}
L(M_1) = L_1 && L(M_2) = L_2
\end{talign}
\pause
A split of a word $w$ is a pair $(w_1,w_2)$ such that $w = w_1 w_2$.
\medskip\pause
We call the split good if $M_1$ accepts $w_1$ and $M_2$ accepts $w_2$.
\medskip\pause
Create a Turing machine $N$ that
\begin{itemize}
\item computes all splits of the input word $w$
\item checks \emph{all splits in parallel} whether they are good
\item accepts the input $w$ as soon as a good split is found
\end{itemize}
Then $L(N) = L_1 L_2$.
\end{block}
\end{frame}