\documentclass[169,10pt,compress,dvipsnames]{beamer}
%%
%% Slides layout
%%
\beamertemplatenavigationsymbolsempty  % hides navigation buttons
\usetheme{Madrid}                      % standard Madrid theme
\setbeamertemplate{footline}{}         % renders the footer empty
%
\setbeamertemplate{bibliography item}{ % this is a hack to prevent Madrid theme + biblatex
  \hspace{-0.4cm}\lower3pt\hbox{       % from causing bibliography entries to run over
    \pgfuseimage{beamericonarticle}    % the slide margins
}}

%%
%% Packages
%%
\usepackage[utf8]{inputenc}               % enable UTF-8 compatible typing
\usepackage{hyperref}                     % interactive PDF
\usepackage[sort&compress,square,numbers]{natbib}    % Bibliography
\usepackage{bibentry}         % Print bibliography entries inline.
\makeatletter                 % Redefine bibentry to omit hyperrefs
\renewcommand\bibentry[1]{\nocite{#1}{\frenchspacing
     \@nameuse{BR@r@#1\@extra@b@citeb}}}
\makeatother
\nobibliography*              % use the bibliographic data from the standard BibTeX setup.
\usepackage{amsmath,amssymb,mathtools}    % maths typesetting
\usepackage{../pkgs/mathpartir}           % Inference rules
\usepackage{../pkgs/mathwidth}            % renders character sequences nicely in math mode
\usepackage{stmaryrd}                     % semantic brackets
\usepackage{xspace}                       % proper spacing for macros in text

\usepackage[T1]{fontenc}                  % 8-bit font encoding
                                          % native support for accented characters.
\usepackage[scaled=0.85]{beramono}        % smoother typewriter font
\newcommand*{\Scale}[2][4]{\scalebox{#1}{\ensuremath{#2}}}%

\input{../macros.tex}

%%
%% Meta information
%%
\author{Daniel Hillerström}
\title{Foundations for Programming and Implementing Effect Handlers}
\institute{The University of Edinburgh, Scotland UK}
\subtitle{PhD viva}
\date{August 13, 2021}

%%
%% Slides
%%
\begin{document}

%
% Title slide
%
\begin{frame}
  \maketitle
\end{frame}

% Dissertation overview
\begin{frame}
  \frametitle{My dissertation at glance}

  Three main strands of work

  \begin{description}
  \item[Programming] Language design and applications of effect handlers.
  \item[Implementation] Canonical implementation strategies for effect handlers.
  \item[Expressiveness] Exploration of the computational expressiveness of effect handlers.
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{Calculi for deep, shallow, and parameterised handlers}

  The calculi capture key aspects of the implementation of effect
  handlers in Links.

  \begin{itemize}
    \item $\HCalc$ ordinary deep handlers (fold).
    \item $\SCalc$ shallow handlers (case-split).
    \item $\HPCalc$ parameterised deep handlers (fold+state).
  \end{itemize}

  The actual implementation is the union of the three calculi.\\[2em]

  \textbf{Relevant papers} TyDe'16~\cite{HillerstromL16},
  APLAS'18~\cite{HillerstromL18}, JFP'20~\cite{HillerstromLA20}.
\end{frame}

% UNIX
\begin{frame}
  \frametitle{Effect handlers as composable operating systems}

  An interpretation of \citeauthor{RitchieT74}'s
  UNIX~\cite{RitchieT74} in terms of effect handlers.\\[2em]

  \[
    \bl
    \!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\textbf{Basic idea}
      \ba[m]{@{\qquad}r@{~}c@{~}l}
        \text{\emph{system call}} &\approx& \text{\emph{operation invocation}}\\
        \text{\emph{system call implementation}} &\approx& \text{\emph{operation interpretation}}
      \ea
    \el
  \]\hfill\\[2em]

  \textbf{Key point} Legacy code is modularly retrofitted with functionality.
\end{frame}

% CPS translation
\begin{frame}
  \frametitle{CPS transforms for effect handlers}

  A higher-order CPS transform for effect handlers with generalised
  continuations.\\[1em]

  \textbf{Generalised continuation} Structured representation of
  delimited continuations.\\[0.5em]

  \[
    \Scale[1.8]{\kappa = \overline{(\sigma, (\hret,\hops))}}
  \]\\[1em]

  \textbf{Key point} Separate the \emph{doing} layer ($\sigma$) from the \emph{being} layer ($H$).\\[2em]

  \textbf{Relevant papers} FSCD'17~\cite{HillerstromLAS17},
  APLAS'18~\cite{HillerstromL18}, JFP'20~\cite{HillerstromLA20}.
\end{frame}

% Abstract machine
\begin{frame}
  \frametitle{Abstract machine semantics for effect handlers}

  Plugging generalised continuations into \citeauthor{FelleisenF86}'s
  CEK machine~\cite{FelleisenF86} yields a runtime for effect
  handlers.\\[2em]

  \[
    \Scale[2]{\cek{C \mid E \mid K = \overline{(\sigma, (H,E))}}}
  \]\\[2em]

  \textbf{Relevant papers} TyDe'16~\cite{HillerstromL16},
  JFP'20~\cite{HillerstromLA20}.

\end{frame}

% Interdefinability of handlers
\begin{frame}
  \frametitle{Interdefinability of effect handlers}

  Deep, shallow, and parameterised handlers are interdefinable
  w.r.t. to typability-preserving macro-expressiveness.

  \begin{itemize}
    \item Deep as shallow, $\mathcal{D}\llbracket - \rrbracket$, image is computationally lightweight.
    \item Shallow as deep, $\mathcal{S}\llbracket - \rrbracket$, image is computationally expensive.
    \item Parameterised as deep, $\mathcal{P}\llbracket - \rrbracket$,
      image uses explicit state-passing.
    \end{itemize}
    ~\\[1em]
    \textbf{Relevant papers} APLAS'18~\cite{HillerstromL18},
    JFP'20~\cite{HillerstromLA20}.

\end{frame}

% Asymptotic speed up with first-class control
\begin{frame}
  \frametitle{Asymptotic speed up with effect handlers}

  Effect handlers can make some programs faster!

  \[
    \Count_n : ((\Nat_n \to \Bool) \to \Bool) \to \Nat
  \]\\[1em]
  %
  Using type-respecting expressiveness
  \begin{itemize}
  \item There \textbf{exists} an implementation of $\Count_n \in \HPCF$ with
    effect handlers such that the runtime for every $n$-standard predicate $P$ is
    $\Count_n~P = \BigO(2^n)$.
  \item \textbf{Forall} implementations of $\Count_n \in \BPCF$ the runtime for every $n$-standard predicate $P$ is $\Count_n~P = \Omega(n2^n)$
  \end{itemize}
  ~\\[1em]
  \textbf{Relevant paper} ICFP'20~\cite{HillerstromLL20}.
\end{frame}

% Background
% \begin{frame}
%   \frametitle{Continuations literature review}
% \end{frame}

%
% References
%
\begin{frame}%[allowframebreaks]
  \frametitle{References}
  \bibliographystyle{plainnat}
  \bibliography{\jobname}
\end{frame}
\end{document}