32/55
\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}