Slides/Slides1.thy
changeset 2311 4da5c5c29009
parent 2309 13f20fe02ff3
child 2313 25d2cdf7d7e4
equal deleted inserted replaced
2310:dd3b9c046c7d 2311:4da5c5c29009
    39   \begin{frame}<1-2>
    39   \begin{frame}<1-2>
    40   \frametitle{\begin{tabular}{c}Binding in Old Nominal\end{tabular}}
    40   \frametitle{\begin{tabular}{c}Binding in Old Nominal\end{tabular}}
    41   \mbox{}\\[-6mm]
    41   \mbox{}\\[-6mm]
    42 
    42 
    43   \begin{itemize}
    43   \begin{itemize}
    44   \item old Nominal provided a reasoning infrastructure for single binders\medskip
    44   \item the old Nominal Isabelle provided a reasoning infrastructure for single binders\medskip
    45   
    45   
    46   \begin{center}
    46   \begin{center}
    47   Lam [a].(Var a)
    47   Lam [a].(Var a)
    48   \end{center}\bigskip
    48   \end{center}\bigskip
    49 
    49 
    62   \small
    62   \small
    63   for example\\
    63   for example\\
    64   \begin{tabular}{l@ {\hspace{2mm}}l}
    64   \begin{tabular}{l@ {\hspace{2mm}}l}
    65   \pgfuseshading{smallspherered} & a $\fresh$ Lam [a]. t\\
    65   \pgfuseshading{smallspherered} & a $\fresh$ Lam [a]. t\\
    66   \pgfuseshading{smallspherered} & Lam [a]. (Var a) \alert{$=$} Lam [b]. (Var b)\\
    66   \pgfuseshading{smallspherered} & Lam [a]. (Var a) \alert{$=$} Lam [b]. (Var b)\\
    67   \pgfuseshading{smallspherered} & Barendregt style reasoning about bound variables\\
    67   \pgfuseshading{smallspherered} & Barendregt-style reasoning about bound variables\\
    68   \end{tabular}
    68   \end{tabular}
    69   \end{textblock}}
    69   \end{textblock}}
    70   
    70   
    71   \end{frame}}
    71   \end{frame}}
    72   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    72   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   233   \frametitle{\begin{tabular}{c}Inspiration from Ott\end{tabular}}
   233   \frametitle{\begin{tabular}{c}Inspiration from Ott\end{tabular}}
   234   \mbox{}\\[-3mm]
   234   \mbox{}\\[-3mm]
   235 
   235 
   236   \begin{itemize}
   236   \begin{itemize}
   237   \item this way of specifying binding is inspired by 
   237   \item this way of specifying binding is inspired by 
   238   Ott\onslide<2->{, \alert{\bf but} we made adjustments:}\medskip
   238   {\bf Ott}\onslide<2->{, \alert{\bf but} we made some adjustments:}\medskip
   239   
   239   
   240 
   240 
   241   \only<2>{
   241   \only<2>{
   242   \begin{itemize}
   242   \begin{itemize}
   243   \item Ott allows specifications like\smallskip
   243   \item Ott allows specifications like\smallskip
   262   for $\alpha$-equated terms}
   262   for $\alpha$-equated terms}
   263   \end{itemize}}
   263   \end{itemize}}
   264 
   264 
   265   \only<5>{
   265   \only<5>{
   266   \begin{itemize}
   266   \begin{itemize}
   267   \item we allow multiple binders and bodies\smallskip
   267   \item we allow multiple ``binders'' and ``bodies''\smallskip
   268   \begin{center}
   268   \begin{center}
   269   \isacommand{bind} a b c \isacommand{in} x y z
   269   \isacommand{bind} a b c \isacommand{in} x y z
   270   \end{center}\bigskip\medskip
   270   \end{center}\bigskip\medskip
   271   the reason is that in general
   271   the reason is that with our definitions of $\alpha$-equivalence
   272   \begin{center}
   272   \begin{center}
   273   \begin{tabular}{rcl}
   273   \begin{tabular}{rcl}
   274   \isacommand{bind\_res} as \isacommand{in} x y & $\not\Leftrightarrow$ &
   274   \isacommand{bind\_res} as \isacommand{in} x y & $\not\Leftrightarrow$ &
   275   \begin{tabular}{@ {}l}
   275   \begin{tabular}{@ {}l}
   276   \isacommand{bind\_res} as \isacommand{in} x,\\
   276   \isacommand{bind\_res} as \isacommand{in} x,\\
   294   \begin{frame}<1>
   294   \begin{frame}<1>
   295   \frametitle{\begin{tabular}{c}Alpha-Equivalence\end{tabular}}
   295   \frametitle{\begin{tabular}{c}Alpha-Equivalence\end{tabular}}
   296   \mbox{}\\[-3mm]
   296   \mbox{}\\[-3mm]
   297 
   297 
   298   \begin{itemize}
   298   \begin{itemize}
   299   \item in old Nominal, we represented single binders as partial functions:\bigskip
   299   \item in the old Nominal Isabelle, we represented single binders as partial functions:\bigskip
   300   
   300   
   301   \begin{center}
   301   \begin{center}
   302   \begin{tabular}{l}
   302   \begin{tabular}{l}
   303   Lam [$a$].\,$t$ $\;{^\text{``}}\!\dn{}\!^{\text{''}}$\\[2mm]
   303   Lam [$a$].\,$t$ $\;{^\text{``}}\!\dn{}\!^{\text{''}}$\\[2mm]
   304   \;\;\;\;$\lambda b.$\;$\text{if}\;a = b\;\text{then}\;t\;\text{else}$\\
   304   \;\;\;\;$\lambda b.$\;$\text{if}\;a = b\;\text{then}\;t\;\text{else}$\\
   394   \end{itemize}
   394   \end{itemize}
   395 
   395 
   396   \only<1>{
   396   \only<1>{
   397   \begin{textblock}{8}(3,8.5)
   397   \begin{textblock}{8}(3,8.5)
   398   \begin{tabular}{l@ {\hspace{2mm}}p{8cm}}
   398   \begin{tabular}{l@ {\hspace{2mm}}p{8cm}}
   399   \pgfuseshading{smallspherered} & $as$ is a set of atoms\ldots the binders\\
   399   \pgfuseshading{smallspherered} & $as$ is a set of names\ldots the binders\\
   400   \pgfuseshading{smallspherered} & $x$ is the body\\
   400   \pgfuseshading{smallspherered} & $x$ is the body\\
   401   \pgfuseshading{smallspherered} & $\approx_{\text{set}}$ is where the cardinality 
   401   \pgfuseshading{smallspherered} & $\approx_{\text{set}}$ is where the cardinality 
   402   of the binders has to be the same\\
   402   of the binders has to be the same\\
   403   \end{tabular}
   403   \end{tabular}
   404   \end{textblock}}
   404   \end{textblock}}
   413   \end{tabular}
   413   \end{tabular}
   414   \end{textblock}}
   414   \end{textblock}}
   415   
   415   
   416   \only<8>{
   416   \only<8>{
   417   \begin{textblock}{8}(3,13.8)
   417   \begin{textblock}{8}(3,13.8)
   418   \footnotesize $^*$ $as$ and $bs$ are \alert{lists} of atoms 
   418   \footnotesize $^*$ $as$ and $bs$ are \alert{lists} of names 
   419   \end{textblock}}
   419   \end{textblock}}
   420   \end{frame}}
   420   \end{frame}}
   421   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   421   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   422 *}
   422 *}
   423 
   423 
   424 text_raw {*
   424 text_raw {*
   425   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   425   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   426   \mode<presentation>{
   426   \mode<presentation>{
   427   \begin{frame}<1-2>
   427   \begin{frame}<1-3>
   428   \frametitle{\begin{tabular}{c}Examples\end{tabular}}
   428   \frametitle{\begin{tabular}{c}Examples\end{tabular}}
   429   \mbox{}\\[-3mm]
   429   \mbox{}\\[-3mm]
   430 
   430 
   431   \begin{itemize}
   431   \begin{itemize}
   432   \item lets look at ``type-schemes'':\medskip\medskip
   432   \item lets look at ``type-schemes'':\medskip\medskip
   443   \end{tabular}
   443   \end{tabular}
   444   \end{center}}
   444   \end{center}}
   445   \end{itemize}
   445   \end{itemize}
   446 
   446 
   447   
   447   
   448   \only<2->{
   448   \only<3->{
   449   \begin{textblock}{4}(0.3,12)
   449   \begin{textblock}{4}(0.3,12)
   450   \begin{tikzpicture}
   450   \begin{tikzpicture}
   451   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   451   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   452   {\tiny\color{darkgray}
   452   {\tiny\color{darkgray}
   453   \begin{minipage}{3.4cm}\raggedright
   453   \begin{minipage}{3.4cm}\raggedright
   459   \\
   459   \\
   460   \end{tabular}
   460   \end{tabular}
   461   \end{minipage}};
   461   \end{minipage}};
   462   \end{tikzpicture}
   462   \end{tikzpicture}
   463   \end{textblock}}
   463   \end{textblock}}
   464   \only<2->{
   464   \only<3->{
   465   \begin{textblock}{4}(5.2,12)
   465   \begin{textblock}{4}(5.2,12)
   466   \begin{tikzpicture}
   466   \begin{tikzpicture}
   467   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   467   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   468   {\tiny\color{darkgray}
   468   {\tiny\color{darkgray}
   469   \begin{minipage}{3.4cm}\raggedright
   469   \begin{minipage}{3.4cm}\raggedright
   475   $\wedge$ & $\pi \cdot as = bs$\\
   475   $\wedge$ & $\pi \cdot as = bs$\\
   476   \end{tabular}
   476   \end{tabular}
   477   \end{minipage}};
   477   \end{minipage}};
   478   \end{tikzpicture}
   478   \end{tikzpicture}
   479   \end{textblock}}
   479   \end{textblock}}
   480   \only<2->{
   480   \only<3->{
   481   \begin{textblock}{4}(10.2,12)
   481   \begin{textblock}{4}(10.2,12)
   482   \begin{tikzpicture}
   482   \begin{tikzpicture}
   483   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   483   \draw (0,0) node[inner sep=1mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
   484   {\tiny\color{darkgray}
   484   {\tiny\color{darkgray}
   485   \begin{minipage}{3.4cm}\raggedright
   485   \begin{minipage}{3.4cm}\raggedright
   570 *}
   570 *}
   571 
   571 
   572 text_raw {*
   572 text_raw {*
   573   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   573   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   574   \mode<presentation>{
   574   \mode<presentation>{
   575   \begin{frame}<1>
   575   \begin{frame}<1-2>
   576   \frametitle{\begin{tabular}{c}Examples\end{tabular}}
   576   \frametitle{\begin{tabular}{c}Examples\end{tabular}}
   577   \mbox{}\\[-3mm]
   577   \mbox{}\\[-3mm]
   578 
   578 
   579   \begin{center}
   579   \begin{center}
   580   \only<1>{$(\{x\}, x) \approx_? (\{x, y\}, x)$}
   580   \only<1>{$(\{x\}, x) \approx_? (\{x, y\}, x)$}
   633   \end{tabular}
   633   \end{tabular}
   634   \end{minipage}};
   634   \end{minipage}};
   635   \end{tikzpicture}
   635   \end{tikzpicture}
   636   \end{textblock}}
   636   \end{textblock}}
   637 
   637 
       
   638   \only<2>{
       
   639   \begin{textblock}{6}(2.5,4)
       
   640   \begin{tikzpicture}
       
   641   \draw (0,0) node[inner sep=5mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] 
       
   642   {\normalsize
       
   643   \begin{minipage}{8cm}\raggedright
       
   644   \begin{itemize}
       
   645   \item \color{darkgray}$\alpha$-equivalences coincide when a single name is
       
   646   abstracted
       
   647   \item \color{darkgray}in that case they are equivalent to ``old-fashioned'' definitions of $\alpha$ 
       
   648   \end{itemize}
       
   649   \end{minipage}};
       
   650   \end{tikzpicture}
       
   651   \end{textblock}}
       
   652 
   638   \end{frame}}
   653   \end{frame}}
   639   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   654   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   640 *}
   655 *}
   641 
   656 
   642 text_raw {*
   657 text_raw {*
   645   \begin{frame}<1-3>
   660   \begin{frame}<1-3>
   646   \frametitle{\begin{tabular}{c}General Abstractions\end{tabular}}
   661   \frametitle{\begin{tabular}{c}General Abstractions\end{tabular}}
   647   \mbox{}\\[-7mm]
   662   \mbox{}\\[-7mm]
   648 
   663 
   649   \begin{itemize}
   664   \begin{itemize}
   650   \item we take $(as, x) \approx\!\makebox[0mm][l]{${}_{\star}$}^{=,\text{supp}} (bs, y)$\medskip
   665   \item we take $(as, x) \approx\!\makebox[0mm][l]{${}_{{}*{}}$}^{=,\text{supp}} (bs, y)$\medskip
   651   \item they are equivalence relations\medskip
   666   \item they are equivalence relations\medskip  
   652   \item we can therefore use the quotient package to introduce the 
   667   \item we can therefore use the quotient package to introduce the 
   653   types $\beta\;\text{abs}_\star$\bigskip
   668   types $\beta\;\text{abs}_*$\bigskip 
   654   \begin{center}
   669   \begin{center}
   655   \only<1>{$[as].\,x$}
   670   \only<1>{$[as].\,x$}
   656   \only<2>{$\text{supp}([as].x) = \text{supp}(x) - as$}
   671   \only<2>{$\text{supp}([as].x) = \text{supp}(x) - as$}
   657   \only<3>{%
   672   \only<3>{%
   658   \begin{tabular}{r@ {\hspace{1mm}}l}
   673   \begin{tabular}{r@ {\hspace{1mm}}l}
   659   \multicolumn{2}{@ {\hspace{-7mm}}l}{$[as]. x \alert{=}  [bs].y\;\;\;\text{if\!f}$}\\[2mm]
   674   \multicolumn{2}{@ {\hspace{-7mm}}l}{$[as]. x \alert{=}  [bs].y\;\;\;\text{if\!f}$}\\[2mm]
   660   $\exists \pi.$ & $\text{supp}(x) - as = \text{supp}(y) - bs$\\
   675   $\exists \pi.$ & $\text{supp}(x) - as = \text{supp}(y) - bs$\\
   661   $\wedge$       & $\text{supp}(x) - as \fresh^* \pi$\\
   676   $\wedge$       & $\text{supp}(x) - as \fresh^* \pi$\\
   662   $\wedge$       & $\pi \act x = y $\\
   677   $\wedge$       & $\pi \act x = y $\\
   663   $(\wedge$       & $\pi \act as = bs)\;^\star$\\
   678   $(\wedge$       & $\pi \act as = bs)\;^*$\\
   664   \end{tabular}}
   679   \end{tabular}}
   665   \end{center}
   680   \end{center}
   666   \end{itemize}
   681   \end{itemize}
   667 
   682 
       
   683   \only<1->{
       
   684   \begin{textblock}{8}(12,3.8)
       
   685   \footnotesize $^*$ set, res, list
       
   686   \end{textblock}}
   668   
   687   
   669   \end{frame}}
   688   \end{frame}}
   670   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   689   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   671 *}
   690 *}
   672 
   691 
   673 text_raw {*
   692 text_raw {*
   674   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   693   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   675   \mode<presentation>{
   694   \mode<presentation>{
   676   \begin{frame}<1>
   695   \begin{frame}<1>
   677   \frametitle{\begin{tabular}{c}One Problem\end{tabular}}
   696   \frametitle{\begin{tabular}{c}A Problem\end{tabular}}
   678   \mbox{}\\[-3mm]
   697   \mbox{}\\[-3mm]
   679 
   698 
   680   \begin{center}
   699   \begin{center}
   681   $\text{let}\;x_1=t_1 \ldots x_n=t_n\;\text{in}\;s$
   700   $\text{let}\;x_1=t_1 \ldots x_n=t_n\;\text{in}\;s$
   682   \end{center}
   701   \end{center}
   822   \[
   841   \[
   823   \infer[\text{Let-}\!\approx_\alpha]
   842   \infer[\text{Let-}\!\approx_\alpha]
   824   {\text{Let}\;as\;t \approx_\alpha \text{Let}\;as'\;t'}
   843   {\text{Let}\;as\;t \approx_\alpha \text{Let}\;as'\;t'}
   825   {(\text{bn}(as), t) \approx\!\makebox[0mm][l]{${}_{\text{list}}$}
   844   {(\text{bn}(as), t) \approx\!\makebox[0mm][l]{${}_{\text{list}}$}
   826     ^{\approx_\alpha,\text{fv}} (\text{bn}(as'), t') &
   845     ^{\approx_\alpha,\text{fv}} (\text{bn}(as'), t') &
   827    \onslide<2>{as \approx_\alpha^{\text{bn}} as'}}
   846    \onslide<2->{as \approx_\alpha^{\text{bn}} as'}}
   828   \]
   847   \]\bigskip
   829 
   848 
   830 
   849 
   831   \end{frame}}
   850   \onslide<1->{\small{}bn-function $\Rightarrow$ \alert{deep binders}}
   832   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   851   \end{frame}}
   833 *}
   852   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   853 *}
       
   854 
   834 
   855 
   835 text_raw {*
   856 text_raw {*
   836   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   857   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   837   \mode<presentation>{
   858   \mode<presentation>{
   838   \begin{frame}<1->
   859   \begin{frame}<1->
   857 
   878 
   858   \end{frame}}
   879   \end{frame}}
   859   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   880   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   860 *}
   881 *}
   861 
   882 
       
   883 
       
   884 text_raw {*
       
   885   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   886   \mode<presentation>{
       
   887   \begin{frame}<1>
       
   888   \frametitle{\begin{tabular}{c}\LARGE``Raw'' Alpha-Equivalence\end{tabular}}
       
   889   \mbox{}\\[6mm]
       
   890 
       
   891   \begin{center}
       
   892   LetRec as::assn t::trm \hspace{10mm}\isacommand{bind} bn(as) \isacommand{in} t \alert{as}\\
       
   893   \end{center}
       
   894 
       
   895 
       
   896   \[\mbox{}\hspace{-4mm}
       
   897   \infer[\text{LetRec-}\!\approx_\alpha]
       
   898   {\text{LetRec}\;as\;t \approx_\alpha \text{LetRec}\;as'\;t'}
       
   899   {(\text{bn}(as), (t, as)) \approx\!\makebox[0mm][l]{${}_{\text{list}}$}
       
   900     ^{R,fv} (\text{bn}(as'), (t', as'))} 
       
   901   \]\bigskip
       
   902   
       
   903   \onslide<1->{\alert{deep recursive binders}}
       
   904   \end{frame}}
       
   905   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   906 *}
       
   907 
       
   908 text_raw {*
       
   909   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   910   \mode<presentation>{
       
   911   \begin{frame}<1->
       
   912   \frametitle{\begin{tabular}{c}Restrictions\end{tabular}}
       
   913   \mbox{}\\[-6mm]
       
   914 
       
   915   Our restrictions on binding specifications:
       
   916 
       
   917   \begin{itemize}
       
   918   \item a body can only occur once in a list of binding clauses\medskip
       
   919   \item you can only have one binding function for a deep binder\medskip
       
   920   \item binding functions can return: the empty set, singletons, unions (similarly for lists)
       
   921   \end{itemize}
       
   922 
       
   923 
       
   924   \end{frame}}
       
   925   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   926 *}
       
   927 
   862 text_raw {*
   928 text_raw {*
   863   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   929   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   864   \mode<presentation>{
   930   \mode<presentation>{
   865   \begin{frame}<1->
   931   \begin{frame}<1->
   866   \frametitle{\begin{tabular}{c}Automatic Proofs\end{tabular}}
   932   \frametitle{\begin{tabular}{c}Automatic Proofs\end{tabular}}
   867   \mbox{}\\[-6mm]
   933   \mbox{}\\[-6mm]
   868 
   934 
   869   \begin{itemize}
   935   \begin{itemize}
   870   \item we can show that $\alpha$'s are equivalence relations\medskip
   936   \item we can show that $\alpha$'s are equivalence relations\medskip
   871   \item as a result we can use the quotient package to introduce the type(s)
   937   \item as a result we can use our quotient package to introduce the type(s)
   872   of $\alpha$-equated terms
   938   of $\alpha$-equated terms
   873 
   939 
   874   \[
   940   \[
   875   \infer
   941   \infer
   876   {\text{Lam}\;x\;t \alert{=} \text{Lam}\;x'\;t'}
   942   {\text{Lam}\;x\;t \alert{=} \text{Lam}\;x'\;t'}
   879    \only<2>{[x].t = [x'].t'}}
   945    \only<2>{[x].t = [x'].t'}}
   880   \]
   946   \]
   881 
   947 
   882 
   948 
   883   \item the properties for support are implied by the properties of $[\_].\_$
   949   \item the properties for support are implied by the properties of $[\_].\_$
   884   \item we can derive strong induction principles (almost automatic---just a matter of
   950   \item we can derive strong induction principles (almost automatic---matter of time)
   885   another week or two)
       
   886   \end{itemize}
   951   \end{itemize}
   887 
   952 
   888 
   953 
   889   \end{frame}}
   954   \end{frame}}
   890   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   955   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   926   \draw[->,white!50,line width=1mm] (E) -- (F);
   991   \draw[->,white!50,line width=1mm] (E) -- (F);
   927   \end{tikzpicture}
   992   \end{tikzpicture}
   928   \end{center}
   993   \end{center}
   929 
   994 
   930   \begin{itemize}
   995   \begin{itemize}
   931   \item Core Haskell: 11 types, 49 term-constructors, 
   996   \item Core Haskell: 11 types, 49 term-constructors, 7 binding functions
       
   997   \begin{center}
       
   998   $\sim$ 1 min
       
   999   \end{center}
   932   \end{itemize}
  1000   \end{itemize}
   933 
  1001 
   934   \end{frame}}
  1002   \end{frame}}
   935   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
  1003   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   936 *}
  1004 *}
   990 
  1058 
   991   \end{frame}}
  1059   \end{frame}}
   992   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
  1060   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   993 *}
  1061 *}
   994 
  1062 
       
  1063 text_raw {*
       
  1064   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
  1065   \mode<presentation>{
       
  1066   \begin{frame}<1->[c]
       
  1067   \frametitle{\begin{tabular}{c}Questions?\end{tabular}}
       
  1068   \mbox{}\\[-6mm]
       
  1069 
       
  1070   \begin{center}
       
  1071   \alert{\huge{Thanks!}}
       
  1072   \end{center}
       
  1073   
       
  1074   \end{frame}}
       
  1075   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
  1076 *}
       
  1077 
   995 (*<*)
  1078 (*<*)
   996 end
  1079 end
   997 (*>*)
  1080 (*>*)