Slides/Slides5.thy
changeset 2750 43283267737c
parent 2748 6f38e357b337
child 2751 3b8232f56941
equal deleted inserted replaced
2749:7cf2d79d8d5e 2750:43283267737c
     9 
     9 
    10 (*>*)
    10 (*>*)
    11 
    11 
    12 
    12 
    13 text_raw {*
    13 text_raw {*
       
    14   %% shallow, deep, and recursive binders
       
    15   %%
    14   %%\renewcommand{\slidecaption}{Cambridge, 8.~June 2010}
    16   %%\renewcommand{\slidecaption}{Cambridge, 8.~June 2010}
    15   %%\renewcommand{\slidecaption}{Uppsala, 3.~March 2011}
    17   %%\renewcommand{\slidecaption}{Uppsala, 3.~March 2011}
    16   \renewcommand{\slidecaption}{Saarbrücken, 31.~March 2011}
    18   \renewcommand{\slidecaption}{Saarbrücken, 31.~March 2011}
    17   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    19   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    18   \mode<presentation>{
    20   \mode<presentation>{
    19   \begin{frame}<1>[t]
    21   \begin{frame}<1>[t]
    20   \frametitle{%
    22   \frametitle{%
    21   \begin{tabular}{@ {\hspace{-3mm}}c@ {}}
    23   \begin{tabular}{@ {\hspace{-3mm}}c@ {}}
    22   \\
    24   \\
    23   \huge General Bindings and Alpha-Equivalence in Nominal Isabelle\\[-2mm] 
    25   \LARGE General Bindings and\\ 
    24   \large Or, Nominal 2\\[-5mm]
    26   \LARGE Alpha-Equivalence\\ 
       
    27   \LARGE in Nominal Isabelle\\[3mm] 
       
    28   \Large Or, Nominal Isabelle 2\\[-5mm]
    25   \end{tabular}}
    29   \end{tabular}}
    26   \begin{center}
    30   \begin{center}
    27   Christian Urban
    31   Christian Urban
    28   \end{center}
    32   \end{center}
    29   \begin{center}
    33   \begin{center}
    71   
    75   
    72   \end{frame}}
    76   \end{frame}}
    73   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    77   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    74 *}
    78 *}
    75 
    79 
       
    80 
       
    81 
       
    82 text_raw {*
       
    83   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    84   \mode<presentation>{
       
    85   \begin{frame}<1-2>
       
    86   \frametitle{New Types in HOL}
       
    87 
       
    88   picture
       
    89   
       
    90   \end{frame}}
       
    91   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
    92 *}
       
    93 
       
    94 
       
    95 
    76 text_raw {*
    96 text_raw {*
    77   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    97   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    78   \mode<presentation>{
    98   \mode<presentation>{
    79   \begin{frame}<1-4>
    99   \begin{frame}<1-4>
    80   \frametitle{\begin{tabular}{c}Binding Sets of Names\end{tabular}}
   100   \frametitle{\begin{tabular}{c}Binding Sets of Names\end{tabular}}
   209   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
   229   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
   210   \hspace{5mm}\phantom{$|$} Var name\\
   230   \hspace{5mm}\phantom{$|$} Var name\\
   211   \hspace{5mm}$|$ App trm trm\\
   231   \hspace{5mm}$|$ App trm trm\\
   212   \hspace{5mm}$|$ Lam \only<2->{x::}name \only<2->{t::}trm
   232   \hspace{5mm}$|$ Lam \only<2->{x::}name \only<2->{t::}trm
   213   & \onslide<2->{\isacommand{bind} x \isacommand{in} t}\\
   233   & \onslide<2->{\isacommand{bind} x \isacommand{in} t}\\
   214   \hspace{5mm}$|$ Let \only<2->{as::}assn \only<2->{t::}trm
   234   \hspace{5mm}$|$ Let \only<2->{as::}assns \only<2->{t::}trm
   215   & \onslide<2->{\isacommand{bind} bn(as) \isacommand{in} t}\\
   235   & \onslide<2->{\isacommand{bind} bn(as) \isacommand{in} t}\\
   216   \multicolumn{2}{l}{\isacommand{and} assn $=$}\\
   236   \multicolumn{2}{l}{\isacommand{and} assns $=$}\\
   217   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   237   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   218   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assn}\\
   238   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assns}\\
   219   \multicolumn{2}{l}{\onslide<3->{\isacommand{binder} bn \isacommand{where}}}\\
   239   \multicolumn{2}{l}{\onslide<3->{\isacommand{binder} bn \isacommand{where}}}\\
   220   \multicolumn{2}{l}{\onslide<3->{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ []}}\\
   240   \multicolumn{2}{l}{\onslide<3->{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ []}}\\
   221   \multicolumn{2}{l}{\onslide<3->{\hspace{5mm}$|$ bn(ACons a t as) $=$ [a] @ bn(as)}}\\
   241   \multicolumn{2}{l}{\onslide<3->{\hspace{5mm}$|$ bn(ACons a t as) $=$ [a] @ bn(as)}}\\
   222   \end{tabular}
   242   \end{tabular}
   223 
   243 
   716   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
   736   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
   717   \hspace{5mm}\phantom{$|$} Var name\\
   737   \hspace{5mm}\phantom{$|$} Var name\\
   718   \hspace{5mm}$|$ App trm trm\\
   738   \hspace{5mm}$|$ App trm trm\\
   719   \hspace{5mm}$|$ Lam x::name t::trm
   739   \hspace{5mm}$|$ Lam x::name t::trm
   720   & \isacommand{bind} x \isacommand{in} t\\
   740   & \isacommand{bind} x \isacommand{in} t\\
   721   \hspace{5mm}$|$ Let as::assn t::trm
   741   \hspace{5mm}$|$ Let as::assns t::trm
   722   & \isacommand{bind} bn(as) \isacommand{in} t\\
   742   & \isacommand{bind} bn(as) \isacommand{in} t\\
   723   \multicolumn{2}{l}{\isacommand{and} assn $=$}\\
   743   \multicolumn{2}{l}{\isacommand{and} assns $=$}\\
   724   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   744   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   725   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assn}\\
   745   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assns}\\
   726   \multicolumn{2}{l}{\isacommand{binder} bn \isacommand{where}}\\
   746   \multicolumn{2}{l}{\isacommand{binder} bn \isacommand{where}}\\
   727   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
   747   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
   728   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
   748   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
   729   \end{tabular}
   749   \end{tabular}
   730 
   750 
   743   \begin{tabular}{ll}
   763   \begin{tabular}{ll}
   744   \multicolumn{2}{l}{\isacommand{datatype} trm $=$}\\
   764   \multicolumn{2}{l}{\isacommand{datatype} trm $=$}\\
   745   \hspace{5mm}\phantom{$|$} Var name\\
   765   \hspace{5mm}\phantom{$|$} Var name\\
   746   \hspace{5mm}$|$ App trm trm\\
   766   \hspace{5mm}$|$ App trm trm\\
   747   \hspace{5mm}$|$ Lam name trm\\
   767   \hspace{5mm}$|$ Lam name trm\\
   748   \hspace{5mm}$|$ Let assn trm\\
   768   \hspace{5mm}$|$ Let assns trm\\
   749   \multicolumn{2}{l}{\isacommand{and} assn $=$}\\
   769   \multicolumn{2}{l}{\isacommand{and} assns $=$}\\
   750   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   770   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
   751   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assn}\\[5mm]
   771   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assns}\\[5mm]
   752   \multicolumn{2}{l}{\isacommand{function} bn \isacommand{where}}\\
   772   \multicolumn{2}{l}{\isacommand{function} bn \isacommand{where}}\\
   753   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
   773   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
   754   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
   774   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
   755   \end{tabular}
   775   \end{tabular}
   756 
   776 
   819   \begin{frame}<1-2>
   839   \begin{frame}<1-2>
   820   \frametitle{\begin{tabular}{c}\LARGE``Raw'' Alpha-Equivalence\end{tabular}}
   840   \frametitle{\begin{tabular}{c}\LARGE``Raw'' Alpha-Equivalence\end{tabular}}
   821   \mbox{}\\[6mm]
   841   \mbox{}\\[6mm]
   822 
   842 
   823   \begin{center}
   843   \begin{center}
   824   Let as::assn t::trm \hspace{10mm}\isacommand{bind} bn(as) \isacommand{in} t\\
   844   Let as::assns t::trm \hspace{10mm}\isacommand{bind} bn(as) \isacommand{in} t\\
   825   \end{center}
   845   \end{center}
   826 
   846 
   827 
   847 
   828   \[
   848   \[
   829   \infer[\text{Let-}\!\approx_\alpha]
   849   \infer[\text{Let-}\!\approx_\alpha]
   874   \begin{frame}<1>
   894   \begin{frame}<1>
   875   \frametitle{\begin{tabular}{c}\LARGE``Raw'' Alpha-Equivalence\end{tabular}}
   895   \frametitle{\begin{tabular}{c}\LARGE``Raw'' Alpha-Equivalence\end{tabular}}
   876   \mbox{}\\[6mm]
   896   \mbox{}\\[6mm]
   877 
   897 
   878   \begin{center}
   898   \begin{center}
   879   LetRec as::assn t::trm \hspace{10mm}\isacommand{bind} bn(as) \isacommand{in} t \alert{as}\\
   899   LetRec as::assns t::trm \hspace{10mm}\isacommand{bind} bn(as) \isacommand{in} t \alert{as}\\
   880   \end{center}
   900   \end{center}
   881 
   901 
   882 
   902 
   883   \[\mbox{}\hspace{-4mm}
   903   \[\mbox{}\hspace{-4mm}
   884   \infer[\text{LetRec-}\!\approx_\alpha]
   904   \infer[\text{LetRec-}\!\approx_\alpha]
  1004   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
  1024   \multicolumn{2}{l}{\isacommand{nominal\_datatype} trm $=$}\\
  1005   \hspace{5mm}\phantom{$|$} Var name\\
  1025   \hspace{5mm}\phantom{$|$} Var name\\
  1006   \hspace{5mm}$|$ App trm trm\\
  1026   \hspace{5mm}$|$ App trm trm\\
  1007   \hspace{5mm}$|$ Lam x::name t::trm
  1027   \hspace{5mm}$|$ Lam x::name t::trm
  1008   & \isacommand{bind} x \isacommand{in} t\\
  1028   & \isacommand{bind} x \isacommand{in} t\\
  1009   \hspace{5mm}$|$ Let as::assn t::trm
  1029   \hspace{5mm}$|$ Let as::assns t::trm
  1010   & \isacommand{bind} bn(as) \isacommand{in} t\\
  1030   & \isacommand{bind} bn(as) \isacommand{in} t\\
  1011   \multicolumn{2}{l}{\isacommand{and} assn $=$}\\
  1031   \multicolumn{2}{l}{\isacommand{and} assns $=$}\\
  1012   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
  1032   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} ANil}\\
  1013   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assn}\\
  1033   \multicolumn{2}{l}{\hspace{5mm}$|$ ACons name trm assns}\\
  1014   \multicolumn{2}{l}{\isacommand{binder} bn \isacommand{where}}\\
  1034   \multicolumn{2}{l}{\isacommand{binder} bn \isacommand{where}}\\
  1015   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
  1035   \multicolumn{2}{l}{\hspace{5mm}\phantom{$|$} bn(ANil) $=$ $[]$}\\
  1016   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
  1036   \multicolumn{2}{l}{\hspace{5mm}$|$ bn(ACons a t as) $=$ $[$a$]$ @ bn(as)}\\
  1017   \end{tabular}\bigskip\medskip
  1037   \end{tabular}\bigskip\medskip
  1018 
  1038 
  1019   we cannot quotient assn: ACons a \ldots $\not\approx_\alpha$ ACons b \ldots
  1039   we cannot quotient assns: ACons a \ldots $\not\approx_\alpha$ ACons b \ldots
  1020 
  1040 
  1021   \only<1->{
  1041   \only<1->{
  1022   \begin{textblock}{8}(0.2,7.3)
  1042   \begin{textblock}{8}(0.2,7.3)
  1023   \alert{\begin{tabular}{p{2.6cm}}
  1043   \alert{\begin{tabular}{p{2.6cm}}
  1024   \raggedright\footnotesize{}Should a ``naked'' assn be quotient?
  1044   \raggedright\footnotesize{}Should a ``naked'' assns be quotient?
  1025   \end{tabular}\hspace{-3mm}
  1045   \end{tabular}\hspace{-3mm}
  1026   $\begin{cases}
  1046   $\begin{cases}
  1027   \mbox{} \\ \mbox{}
  1047   \mbox{} \\ \mbox{}
  1028   \end{cases}$} 
  1048   \end{cases}$} 
  1029   \end{textblock}}
  1049   \end{textblock}}