4/87
\begin{frame}<5>
  \begin{example}[The Stream of Natural Numbers]
  \begin{center}
  {\large
    \begin{tikzpicture}[level distance=6mm,inner sep=0.5mm,sibling distance=10mm,
                        var/.style={cloud,inner sep=0mm,minimum size=5mm,cloud puffs=7,cloud ignores aspect,cloud puff arc=160,draw=black,fill=blue!25}]
      \node [var,cloud puffs=13,inner sep=0mm,fill=yellow] (p0) {$\msf{nats}$}
        child { node [var] {$x$} };
      \draw [very thick,->] ($(p0) + (0.7cm,-0.4cm)$) -- +(0.7cm,0cm);
      \node at ($(p0)+(2.5cm,0cm)$)  {$\sstrcns$}
        child { node [var] {$x$} }
        child { node {$\msf{nats}$} child { node {$\msf{s}$} child { node [var] {$x$} } } };
    \end{tikzpicture}
  }
  \end{center}
  \end{example}
  \vspace{4ex}
  
  \begin{center}
  \begin{tikzpicture}[level distance=5mm,inner sep=0.5mm,sibling distance=10mm,
                      var/.style={cloud,inner sep=0mm,minimum size=4mm,cloud puffs=7,cloud ignores aspect,cloud puff arc=160,draw=black,fill=blue!25}]
    \node [var,cloud puffs=13,inner sep=-.2mm,fill=yellow] (p0) {$\msf{nats}$} child { node [var] {$0$} };
    \draw [very thick,->] ($(p0) + (0.5cm,-0.4cm)$) -- +(0.7cm,0cm);
    \uncover<2->{
    \node at ($(p0)+(2.2cm,0cm)$) (p0) {$\sstrcns$}
      child { node {$0$} }
      child { node [var,cloud puffs=13,inner sep=-.2mm,fill=yellow] {$\msf{nats}$} child { node (s) {$\msf{s}$} child { node (0) {$0$} } } };
    }
    \begin{pgfonlayer}{background}
    \uncover<2->{
    \node [var,cloud puffs=13,minimum height=0.9cm,minimum width=0.7cm] at ($(s)!.5!(0)$) {};
    }
    \end{pgfonlayer}
    \uncover<2->{
    \draw [very thick,->] ($(p0) + (1.2cm,-0.4cm)$) -- +(0.7cm,0cm);
    }
    \uncover<3->{
    \node at ($(p0)+(2.7cm,0cm)$) (p0) {$\sstrcns$}
      child { node {$0$} }
      child { node {$\sstrcns$}
        child { node {$\msf{s}$} child { node {$0$} } }
        child { node [var,cloud puffs=13,inner sep=-.2mm,fill=yellow] {$\msf{nats}$} child { node {$\msf{s}$} child { node (s) {$\msf{s}$} child { node {$0$} } } } }
      };
    }
    \begin{pgfonlayer}{background}
    \uncover<3->{
    \node [var,cloud puffs=19,minimum height=1.4cm,minimum width=0.8cm] at ($(s)$) {};
    }
    \end{pgfonlayer}
    \uncover<4->{
    \draw [very thick,->] ($(p0) + (1.0cm,-0.4cm)$) -- +(0.7cm,0cm);
    \draw [very thick,->] ($(p0) + (1.1cm,-0.4cm)$) -- +(0.7cm,0cm);
    \draw [very thick,->] ($(p0) + (1.2cm,-0.4cm)$) -- +(0.7cm,0cm);
    \node[rectangle callout, rounded corners, draw=none, overlay, draw=black, fill=blue!25, callout relative pointer={(-.5,-.7)},inner sep=1mm] at ($(p0) + (1.9cm,0.55cm)$) {\textbf{infinite number of steps}};
    }
    \uncover<5->{
    \node at ($(p0)+(2.9cm,0cm)$) (p0) {$\sstrcns$}
      child { node {$0$} }
      child { node {$\sstrcns$}
        child { node {$\msf{s}$} child { node {$0$} } }
        child { node {$\sstrcns$}
          child { node {$\msf{s}$} child { node {$\msf{s}$} child { node {$0$} } } }
          child { node {$\sstrcns$}
            child { node {$\msf{s}$} child { node {$\msf{s}$} child { node {$\msf{s}$} child { node {$0$} } } } }
            child { node {\rotatebox{-15}{$\ddots$}}
            }
          }
        }
      };
    \node[rectangle callout, rounded corners, draw=none, overlay, draw=black, fill=blue!25, callout relative pointer={(.7,.9)},inner sep=1mm] at ($(p0) + (-0.5cm,-3.5cm)$) {\textbf{infinite term}};
    }
  \end{tikzpicture}
  \end{center}
\end{frame}