... master
authorFrancesco Mazzoli <f@mazzo.li>
Thu, 27 Jun 2013 09:15:06 +0000 (10:15 +0100)
committerFrancesco Mazzoli <f@mazzo.li>
Thu, 27 Jun 2013 09:15:06 +0000 (10:15 +0100)
presentation.tex

index 1089ae6d3370fd8806f05c118936f10b0ccda34e..2184ae49c31d3e0d65748257619744bf7538f3c5 100644 (file)
 
 \usepackage{centernot}
 \usepackage{cancel}
+\usepackage{tikz}
+\usetikzlibrary{shapes,arrows,positioning}
+\usetikzlibrary{intersections}
+\pgfdeclarelayer{background}
+\pgfdeclarelayer{foreground}
+\pgfsetlayers{background,main,foreground}
+
 
 \setlength{\parindent}{0pt}
 \setlength{\parskip}{6pt plus 2pt minus 1pt}
 \end{frame}
 
 \begin{frame}
-  \frametitle{Theorem provers, dependent types} First class types: we
-  can return them, have them as arguments, etc.
+  \frametitle{Theorem provers, dependent types}
   \[
   \begin{array}{@{}l@{\ \ \ }l}
     \mysyn{data}\ \myempty & \text{No members.} \\
     \mysyn{data}\ \myunit \mapsto \mytt & \text{One member.}
   \end{array}
   \]
-  $\myempty : \mytyp$, $\myunit : \mytyp$.
 
   $\myunit$ is trivially inhabitable: it corresponds to $\top$ in
   logic.
   \[
   \myfun{absurd} : \myempty \myarr \myb{A}
   \]
+
+  First class types: we can return them, have them as arguments, etc:
+  $\myempty : \mytyp$, $\myunit : \mytyp$.
 \end{frame}
 
 \begin{frame}
@@ -554,6 +562,33 @@ Without the $\myb{l}$ we cannot compute, so we are stuck with
   But in \mykant, you can forget about levels: the consistency is
   checked automatically---a mechanised version of what Russell called
   \emph{typical ambiguity}.
+
+  \begin{center}
+    \begin{tikzpicture}[remember picture, node distance=1.5cm]
+      \begin{pgfonlayer}{foreground}
+      % Place nodes
+      \node (x) {$x$};
+      \node [right of=x] (y) {$y$};
+      \node [right of=y] (z) {$z$};
+      \node [below of=z] (k) {$k$};
+      \node [left  of=k] (j) {$j$};
+      %% Lines
+      \path[->]
+      (x) edge node [above] {$<$}   (y)
+      (y) edge node [above] {$\le$} (z)
+      (z) edge node [right] {$<$}   (k)
+      (k) edge node [below] {$\le$} (j)
+      (j) edge node [left ] {$\le$} (y);
+    \end{pgfonlayer}{foreground}
+    \end{tikzpicture}
+    \begin{tikzpicture}[remember picture, overlay]
+      \begin{pgfonlayer}{background}
+      \fill [red, opacity=0.3, rounded corners]
+      (-2.7,2.6) rectangle (-0.2,0.05)
+      (-4.1,2.4) rectangle (-3.3,1.6);
+    \end{pgfonlayer}{background}
+    \end{tikzpicture}
+  \end{center}
 \end{frame}
 
 \begin{frame}
@@ -639,6 +674,7 @@ Without the $\myb{l}$ we cannot compute, so we are stuck with
     \item Inductive data and record types;
     \item A cumulative, implicit type hierarchy;
     \item Partial type inference---bidirectional type checking;
+    \item Type holes;
     \item Observational equality---coming soon to the implementation.
   \end{itemize}
 \end{frame}