\section{Categorical Notions of Partiality}

% \begin{frame}[t, fragile]{Classifying Partiality Monads}
% A partiality monad should have the following properties:
%   \begin{itemize}
%     \item The following two programs should yield equal results:
%     \begin{multicols}{2}
%       \begin{minted}{haskell}
%         do x <- p
%            y <- q
%            return (x, y)
%         \end{minted}
        
%         \begin{minted}{haskell}
%         do y <- q
%            x <- p
%            return (x, y)
%       \end{minted}
%     \end{multicols}
%     where p and q are (partial) computations.
%   \end{itemize}
% \end{frame}

\begin{frame}[t, fragile]{Capturing Partiality Categorically}
\begin{itemize}
  \item moggi denotational semantics (values A, computations TA)

  \item restriction categories

  \item equational lifting monads
\end{itemize}
\end{frame}

\begin{frame}[t, fragile]{The Maybe Monad}
\begin{itemize}
  \item Short definition
  \item is equational lifting monad
\end{itemize}
\end{frame}

\begin{frame}[t, fragile]{The Delay Monad}
\begin{itemize}
  \item Definition
  \item Strong-Bisimilarity
  \item Weak-Bisimilarity (Monad?)
\end{itemize}
\end{frame}

\begin{frame}[t, fragile]{Iteration}
\begin{itemize}
  \item Elgot-Algebras
  \item Free Elgot-Algebras yield monad K
  \item K is equational lifting
  \item K instantiates to maybe and delay
\end{itemize}
\end{frame}