Slides/Slides.thy
changeset 24 f72c82bf59e5
parent 21 6a0538d8ccd5
child 203 5d724fe0e096
equal deleted inserted replaced
23:e31b733ace44 24:f72c82bf59e5
       
     1 (*<*)
       
     2 theory Slides
       
     3 imports "LaTeXsugar"
       
     4 begin
       
     5 
       
     6 notation (latex output)
       
     7   set ("_") and
       
     8   Cons  ("_::/_" [66,65] 65) 
       
     9 
       
    10 (*>*)
       
    11 
       
    12 
       
    13 text_raw {*
       
    14   %\renewcommand{\slidecaption}{Cambridge, 9 November 2010}
       
    15   \renewcommand{\slidecaption}{Munich, 17 November 2010}
       
    16   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    17   \mode<presentation>{
       
    18   \begin{frame}
       
    19   \frametitle{%
       
    20   \begin{tabular}{@ {}c@ {}}
       
    21   \LARGE A Formalisation of the\\[-3mm] 
       
    22   \LARGE Myhill-Nerode Theorem\\[-3mm] 
       
    23   \LARGE based on Regular Expressions\\[-3mm] 
       
    24   \large \onslide<2>{\alert{or, Regular Languages Done Right}}\\
       
    25   \end{tabular}}
       
    26   
       
    27   \begin{center}
       
    28   Christian Urban
       
    29   \end{center}
       
    30  
       
    31 
       
    32   \begin{center}
       
    33   joint work with Chunhan Wu and Xingyuan Zhang from the PLA
       
    34   University of Science and Technology in Nanjing
       
    35   \end{center}
       
    36 
       
    37   \end{frame}}
       
    38   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
    39 
       
    40 *}
       
    41 
       
    42 text_raw {*
       
    43   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    44   \mode<presentation>{
       
    45   \begin{frame}[c]
       
    46   \frametitle{In Most Textbooks\ldots}
       
    47 
       
    48   \begin{itemize}
       
    49   \item A \alert{regular language} is one where there is a DFA that 
       
    50   recognises it.\bigskip\pause
       
    51   \end{itemize}
       
    52 
       
    53 
       
    54   I can think of three reasons why this is a good definition:\medskip
       
    55   \begin{itemize}
       
    56   \item string matching via DFAs (yacc)
       
    57   \item pumping lemma
       
    58   \item closure properties of regular languages (closed under complement)
       
    59   \end{itemize}
       
    60 
       
    61   \end{frame}}
       
    62   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
    63 
       
    64 *}
       
    65 
       
    66 
       
    67 text_raw {*
       
    68   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    69   \mode<presentation>{
       
    70   \begin{frame}[t]
       
    71   \frametitle{Really Bad News!}
       
    72 
       
    73   DFAs are bad news for formalisations in theorem provers. They might
       
    74   be represented as:
       
    75 
       
    76   \begin{itemize}
       
    77   \item graphs
       
    78   \item matrices
       
    79   \item partial functions
       
    80   \end{itemize}
       
    81 
       
    82   All constructions are messy to reason about.\bigskip\bigskip 
       
    83   \pause
       
    84 
       
    85   \small
       
    86   \only<2>{Alexander and Tobias: ``\ldots automata theory \ldots does not come for free \ldots''} 
       
    87   \only<3>{
       
    88   Constable et al needed (on and off) 18 months for a 3-person team 
       
    89   to formalise automata theory in Nuprl including Myhill-Nerode. There is 
       
    90   only very little other formalised work on regular languages I know of
       
    91   in Coq, Isabelle and HOL.}
       
    92   \only<4>{typical textbook reasoning goes like: ``\ldots if \smath{M} and \smath{N} are any two
       
    93   automata with no inaccessible states \ldots''
       
    94   }
       
    95   
       
    96   \end{frame}}
       
    97   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
    98 
       
    99 *}
       
   100 
       
   101 text_raw {*
       
   102   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   103   \mode<presentation>{
       
   104   \begin{frame}[t]
       
   105   \frametitle{Regular Expressions}
       
   106 
       
   107   \ldots are a simple datatype:
       
   108 
       
   109   \only<1>{
       
   110   \begin{center}\color{blue}
       
   111   \begin{tabular}{rcl}
       
   112   rexp & $::=$ & NULL\\
       
   113                & $\mid$ & EMPTY\\
       
   114                & $\mid$ & CHR c\\
       
   115                & $\mid$ & ALT rexp rexp\\
       
   116                & $\mid$ & SEQ rexp rexp\\
       
   117                & $\mid$ & STAR rexp
       
   118   \end{tabular}
       
   119   \end{center}}
       
   120   \only<2->{
       
   121   \begin{center}
       
   122   \begin{tabular}{rcl}
       
   123   \smath{r} & \smath{::=}  & \smath{0} \\
       
   124             & \smath{\mid} & \smath{[]}\\
       
   125             & \smath{\mid} & \smath{c}\\
       
   126             & \smath{\mid} & \smath{r_1 + r_2}\\
       
   127             & \smath{\mid} & \smath{r_1 \cdot r_2}\\
       
   128             & \smath{\mid} & \smath{r^\star}
       
   129   \end{tabular}
       
   130   \end{center}}
       
   131 
       
   132   \only<3->{Induction and recursion principles come for free.}
       
   133 
       
   134   \end{frame}}
       
   135   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   136 
       
   137 *}
       
   138 
       
   139 
       
   140 text_raw {*
       
   141   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   142   \mode<presentation>{
       
   143   \begin{frame}[c]
       
   144   \frametitle{Semantics of Rexps}
       
   145 
       
   146   \begin{center}
       
   147   \begin{tabular}{rcl}
       
   148   \smath{\mathbb{L}(0)}             & \smath{=} & \smath{\varnothing}\\
       
   149   \smath{\mathbb{L}([])}            & \smath{=} & \smath{\{[]\}}\\
       
   150   \smath{\mathbb{L}(c)}             & \smath{=} & \smath{\{[c]\}}\\
       
   151   \smath{\mathbb{L}(r_1 + r_2)}     & \smath{=} & \smath{\mathbb{L}(r_1) \cup \mathbb{L}(r_2)}\\
       
   152   \smath{\mathbb{L}(r_1 \cdot r_2)} & \smath{=} & \smath{\mathbb{L}(r_1)\; ;\; \mathbb{L} (r_2)}\\
       
   153   \smath{\mathbb{L}(r^\star)}       & \smath{=} & \smath{\mathbb{L}(r)^\star}
       
   154   \end{tabular}
       
   155   \end{center}
       
   156 
       
   157   \small
       
   158   \begin{center}
       
   159   \begin{tabular}{rcl}
       
   160   \smath{L_1 ; L_2} & \smath{\dn} & \smath{\{ s_1 @ s_2 \mid s_1 \in L_1 \wedge s_2 \in L_2\}}\bigskip\\
       
   161   \multicolumn{3}{c}{
       
   162   \smath{\infer{[] \in L^\star}{}} \hspace{10mm}
       
   163   \smath{\infer{s_1 @ s_2 \in L^\star}{s_1 \in L & s_2 \in L^\star}}
       
   164   }
       
   165   \end{tabular}
       
   166   \end{center}
       
   167 
       
   168   \end{frame}}
       
   169   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   170 
       
   171 *}
       
   172 
       
   173 text_raw {*
       
   174   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   175   \mode<presentation>{
       
   176   \begin{frame}[c]
       
   177   \frametitle{\LARGE Regular Expression Matching}
       
   178 
       
   179   \begin{itemize}
       
   180   \item Harper in JFP'99: ``Functional Pearl: Proof- Directed Debugging''\medskip
       
   181   \item Yi in JFP'06: ``Educational Pearl: `Proof-Directed Debugging' revisited 
       
   182   for a first-order version''\medskip
       
   183   \item Owens et al in JFP'09: ``Regular-expression derivatives re-examined''\bigskip\pause
       
   184 
       
   185   \begin{quote}\small
       
   186   ``Unfortunately, regular expression derivatives have been lost in the 
       
   187   sands of time, and few computer scientists are aware of them.''
       
   188   \end{quote}
       
   189   \end{itemize}
       
   190   
       
   191 
       
   192   \end{frame}}
       
   193   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   194 
       
   195 *}
       
   196 
       
   197 text_raw {*
       
   198   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   199   \mode<presentation>{
       
   200   \begin{frame}[c]
       
   201 
       
   202   \begin{center}
       
   203   \huge\bf Demo
       
   204   \end{center}
       
   205   
       
   206 
       
   207   \end{frame}}
       
   208   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   209 
       
   210 *}
       
   211 
       
   212 text_raw {*
       
   213   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   214   \mode<presentation>{
       
   215   \begin{frame}[c]
       
   216   \frametitle{\LARGE The Myhill-Nerode Theorem}
       
   217 
       
   218   \begin{itemize}
       
   219   \item provides necessary and suf\!ficient conditions for a language 
       
   220   being regular (pumping lemma only necessary)\medskip
       
   221 
       
   222   \item will help with closure properties of regular languages\bigskip\pause
       
   223 
       
   224   \item key is the equivalence relation:\smallskip
       
   225   \begin{center}
       
   226   \smath{x \approx_{L} y \,\dn\, \forall z.\; x @ z \in L \Leftrightarrow y @ z \in L}
       
   227   \end{center}
       
   228   \end{itemize}
       
   229 
       
   230   \end{frame}}
       
   231   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   232 
       
   233 *}
       
   234 
       
   235 text_raw {*
       
   236   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   237   \mode<presentation>{
       
   238   \begin{frame}[c]
       
   239   \frametitle{\LARGE The Myhill-Nerode Theorem}
       
   240 
       
   241   \mbox{}\\[5cm]
       
   242 
       
   243   \begin{itemize}
       
   244   \item \smath{\text{finite}\, (U\!N\!IV /\!/ \approx_L) \;\Leftrightarrow\; L\; \text{is regular}}
       
   245   \end{itemize}
       
   246 
       
   247   \end{frame}}
       
   248   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   249 
       
   250 *}
       
   251 
       
   252 
       
   253 text_raw {*
       
   254   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   255   \mode<presentation>{
       
   256   \begin{frame}[c]
       
   257   \frametitle{\LARGE Equivalence Classes}
       
   258 
       
   259   \begin{itemize}
       
   260   \item \smath{L = []}
       
   261   \begin{center}
       
   262   \smath{\Big\{\{[]\},\; U\!N\!IV - \{[]\}\Big\}}
       
   263   \end{center}\bigskip\bigskip
       
   264 
       
   265   \item \smath{L = [c]}
       
   266   \begin{center}
       
   267   \smath{\Big\{\{[]\},\; \{[c]\},\; U\!N\!IV - \{[], [c]\}\Big\}}
       
   268   \end{center}\bigskip\bigskip
       
   269 
       
   270   \item \smath{L = \varnothing}
       
   271   \begin{center}
       
   272   \smath{\Big\{U\!N\!IV\Big\}}
       
   273   \end{center}
       
   274 
       
   275   \end{itemize}
       
   276 
       
   277   \end{frame}}
       
   278   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   279 
       
   280 *}
       
   281 
       
   282 
       
   283 text_raw {*
       
   284   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   285   \mode<presentation>{
       
   286   \begin{frame}[c]
       
   287   \frametitle{\LARGE Regular Languages}
       
   288 
       
   289   \begin{itemize}
       
   290   \item \smath{L} is regular \smath{\dn} if there is an automaton \smath{M} 
       
   291   such that \smath{\mathbb{L}(M) = L}\\[1.5cm]
       
   292 
       
   293   \item Myhill-Nerode:
       
   294 
       
   295   \begin{center}
       
   296   \begin{tabular}{l}
       
   297   finite $\Rightarrow$ regular\\
       
   298   \;\;\;\smath{\text{finite}\,(U\!N\!IV /\!/ \approx_L) \Rightarrow \exists r. L = \mathbb{L}(r)}\\[3mm]
       
   299   regular $\Rightarrow$ finite\\
       
   300   \;\;\;\smath{\text{finite}\, (U\!N\!IV /\!/ \approx_{\mathbb{L}(r)})}
       
   301   \end{tabular}
       
   302   \end{center}
       
   303 
       
   304   \end{itemize}
       
   305 
       
   306   \end{frame}}
       
   307   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   308 
       
   309 *}
       
   310 
       
   311 
       
   312 text_raw {*
       
   313   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   314   \mode<presentation>{
       
   315   \begin{frame}[c]
       
   316   \frametitle{\LARGE Final States}
       
   317 
       
   318   \mbox{}\\[3cm]
       
   319 
       
   320   \begin{itemize}
       
   321   \item \smath{\text{final}_L\,X \dn}\\
       
   322   \smath{\hspace{6mm}X \in (U\!N\!IV /\!/\approx_L) \;\wedge\; \forall s \in X.\; s \in L}
       
   323   \smallskip
       
   324   \item we can prove: \smath{L = \bigcup \{X.\;\text{final}_L\,X\}}
       
   325 
       
   326   \end{itemize}
       
   327 
       
   328   \end{frame}}
       
   329   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   330 *}
       
   331 
       
   332 
       
   333 text_raw {*
       
   334   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   335   \mode<presentation>{
       
   336   \begin{frame}[c]
       
   337   \frametitle{\LARGE Transitions between\\[-3mm] Equivalence Classes}
       
   338 
       
   339   \smath{L = \{[c]\}}
       
   340 
       
   341   \begin{tabular}{@ {\hspace{-7mm}}cc}
       
   342   \begin{tabular}{c}
       
   343   \begin{tikzpicture}[shorten >=1pt,node distance=2cm,auto, ultra thick]
       
   344   \tikzstyle{state}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=0mm]
       
   345 
       
   346   %\draw[help lines] (0,0) grid (3,2);
       
   347 
       
   348   \node[state,initial]   (q_0)                        {$R_1$};
       
   349   \node[state,accepting] (q_1) [above right of=q_0]   {$R_2$};
       
   350   \node[state]           (q_2) [below right of=q_0]   {$R_3$};
       
   351 
       
   352   \path[->] (q_0) edge                node        {c} (q_1)
       
   353                   edge                node [swap] {$\Sigma-{c}$} (q_2)
       
   354             (q_2) edge [loop below]   node        {$\Sigma$} ()
       
   355             (q_1) edge                node        {$\Sigma$} (q_2);
       
   356   \end{tikzpicture}
       
   357   \end{tabular}
       
   358   &
       
   359   \begin{tabular}[t]{ll}
       
   360   \\[-20mm]
       
   361   \multicolumn{2}{l}{\smath{U\!N\!IV /\!/\approx_L} produces}\\[4mm]
       
   362 
       
   363   \smath{R_1}: & \smath{\{[]\}}\\
       
   364   \smath{R_2}: & \smath{\{[c]\}}\\
       
   365   \smath{R_3}: & \smath{U\!N\!IV - \{[], [c]\}}\\[6mm]
       
   366   \multicolumn{2}{l}{\onslide<2->{\smath{X \stackrel{c}{\longrightarrow} Y \dn X ; [c] \subseteq Y}}}
       
   367   \end{tabular}
       
   368 
       
   369   \end{tabular}
       
   370 
       
   371   \end{frame}}
       
   372   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   373 *}
       
   374 
       
   375 
       
   376 text_raw {*
       
   377   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   378   \mode<presentation>{
       
   379   \begin{frame}[c]
       
   380   \frametitle{\LARGE Systems of Equations}
       
   381 
       
   382   Inspired by a method of Brzozowski\;'64, we can build an equational system
       
   383   characterising the equivalence classes:
       
   384 
       
   385   \begin{center}
       
   386   \begin{tabular}{@ {\hspace{-20mm}}c}
       
   387   \\[-13mm]
       
   388   \begin{tikzpicture}[shorten >=1pt,node distance=2cm,auto, ultra thick]
       
   389   \tikzstyle{state}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=0mm]
       
   390 
       
   391   %\draw[help lines] (0,0) grid (3,2);
       
   392 
       
   393   \node[state,initial]   (p_0)                  {$R_1$};
       
   394   \node[state,accepting] (p_1) [right of=q_0]   {$R_2$};
       
   395 
       
   396   \path[->] (p_0) edge [bend left]   node        {a} (p_1)
       
   397                   edge [loop above]   node       {b} ()
       
   398             (p_1) edge [loop above]   node       {a} ()
       
   399                   edge [bend left]   node        {b} (p_0);
       
   400   \end{tikzpicture}\\
       
   401   \\[-13mm]
       
   402   \end{tabular}
       
   403   \end{center}
       
   404 
       
   405   \begin{center}
       
   406   \begin{tabular}{@ {\hspace{-6mm}}ll@ {\hspace{1mm}}c@ {\hspace{1mm}}l}
       
   407   & \smath{R_1} & \smath{\equiv} & \smath{R_1;b + R_2;b \onslide<2->{\alert<2>{+ \lambda;[]}}}\\
       
   408   & \smath{R_2} & \smath{\equiv} & \smath{R_1;a + R_2;a}\medskip\\
       
   409   \onslide<3->{we can prove} 
       
   410   & \onslide<3->{\smath{R_1}} & \onslide<3->{\smath{=}} 
       
   411       & \onslide<3->{\smath{R_1; \mathbb{L}(b) \,\cup\, R_2;\mathbb{L}(b) \,\cup\, \{[]\};\{[]\}}}\\
       
   412   & \onslide<3->{\smath{R_2}} & \onslide<3->{\smath{=}}    
       
   413       & \onslide<3->{\smath{R_1; \mathbb{L}(a) \,\cup\, R_2;\mathbb{L}(a)}}\\
       
   414   \end{tabular}
       
   415   \end{center}
       
   416 
       
   417   \end{frame}}
       
   418   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   419 *}
       
   420 
       
   421 text_raw {*
       
   422   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   423   \mode<presentation>{
       
   424   \begin{frame}<1>[t]
       
   425   \small
       
   426 
       
   427   \begin{center}
       
   428   \begin{tabular}{l@ {\hspace{1mm}}c@ {\hspace{1mm}}ll}
       
   429   \onslide<1->{\smath{R_1}} & \onslide<1->{\smath{=}} 
       
   430       & \onslide<1->{\smath{R_1; b + R_2; b + \lambda;[]}}\\
       
   431   \onslide<1->{\smath{R_2}} & \onslide<1->{\smath{=}}    
       
   432       & \onslide<1->{\smath{R_1; a + R_2; a}}\\
       
   433 
       
   434   & & & \onslide<2->{by Arden}\\
       
   435 
       
   436   \onslide<2->{\smath{R_1}} & \onslide<2->{\smath{=}} 
       
   437       & \onslide<2->{\smath{R_1; b + R_2; b + \lambda;[]}}\\
       
   438   \onslide<2->{\smath{R_2}} & \onslide<2->{\smath{=}}    
       
   439       & \only<2>{\smath{R_1; a + R_2; a}}%
       
   440         \only<3->{\smath{R_1; a\cdot a^\star}}\\
       
   441 
       
   442   & & & \onslide<4->{by Arden}\\
       
   443 
       
   444   \onslide<4->{\smath{R_1}} & \onslide<4->{\smath{=}} 
       
   445       & \onslide<4->{\smath{R_2; b \cdot b^\star+ \lambda;b^\star}}\\
       
   446   \onslide<4->{\smath{R_2}} & \onslide<4->{\smath{=}}    
       
   447       & \onslide<4->{\smath{R_1; a\cdot a^\star}}\\
       
   448 
       
   449   & & & \onslide<5->{by substitution}\\
       
   450 
       
   451   \onslide<5->{\smath{R_1}} & \onslide<5->{\smath{=}} 
       
   452       & \onslide<5->{\smath{R_1; a\cdot a^\star \cdot b \cdot b^\star+ \lambda;b^\star}}\\
       
   453   \onslide<5->{\smath{R_2}} & \onslide<5->{\smath{=}}    
       
   454       & \onslide<5->{\smath{R_1; a\cdot a^\star}}\\
       
   455 
       
   456   & & & \onslide<6->{by Arden}\\
       
   457 
       
   458   \onslide<6->{\smath{R_1}} & \onslide<6->{\smath{=}} 
       
   459       & \onslide<6->{\smath{\lambda;b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star}}\\
       
   460   \onslide<6->{\smath{R_2}} & \onslide<6->{\smath{=}}    
       
   461       & \onslide<6->{\smath{R_1; a\cdot a^\star}}\\
       
   462 
       
   463   & & & \onslide<7->{by substitution}\\
       
   464 
       
   465   \onslide<7->{\smath{R_1}} & \onslide<7->{\smath{=}} 
       
   466       & \onslide<7->{\smath{\lambda;b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star}}\\
       
   467   \onslide<7->{\smath{R_2}} & \onslide<7->{\smath{=}}    
       
   468       & \onslide<7->{\smath{\lambda; b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star 
       
   469           \cdot a\cdot a^\star}}\\
       
   470   \end{tabular}
       
   471   \end{center}
       
   472 
       
   473   \end{frame}}
       
   474   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   475 *}
       
   476 
       
   477 text_raw {*
       
   478   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   479   \mode<presentation>{
       
   480   \begin{frame}[c]
       
   481   \frametitle{\LARGE A Variant of Arden's Lemma}
       
   482 
       
   483   {\bf Arden's Lemma:}\smallskip 
       
   484 
       
   485   If \smath{[] \not\in A} then
       
   486   \begin{center}
       
   487   \smath{X = X; A + \text{something}}
       
   488   \end{center}
       
   489   has the (unique) solution
       
   490   \begin{center}
       
   491   \smath{X = \text{something} ; A^\star}
       
   492   \end{center}
       
   493 
       
   494 
       
   495   \end{frame}}
       
   496   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   497 *}
       
   498 
       
   499 
       
   500 text_raw {*
       
   501   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   502   \mode<presentation>{
       
   503   \begin{frame}<1->[t]
       
   504   \small
       
   505 
       
   506   \begin{center}
       
   507   \begin{tabular}{l@ {\hspace{1mm}}c@ {\hspace{1mm}}ll}
       
   508   \onslide<1->{\smath{R_1}} & \onslide<1->{\smath{=}} 
       
   509       & \onslide<1->{\smath{R_1; b + R_2; b + \lambda;[]}}\\
       
   510   \onslide<1->{\smath{R_2}} & \onslide<1->{\smath{=}}    
       
   511       & \onslide<1->{\smath{R_1; a + R_2; a}}\\
       
   512 
       
   513   & & & \onslide<2->{by Arden}\\
       
   514 
       
   515   \onslide<2->{\smath{R_1}} & \onslide<2->{\smath{=}} 
       
   516       & \onslide<2->{\smath{R_1; b + R_2; b + \lambda;[]}}\\
       
   517   \onslide<2->{\smath{R_2}} & \onslide<2->{\smath{=}}    
       
   518       & \only<2>{\smath{R_1; a + R_2; a}}%
       
   519         \only<3->{\smath{R_1; a\cdot a^\star}}\\
       
   520 
       
   521   & & & \onslide<4->{by Arden}\\
       
   522 
       
   523   \onslide<4->{\smath{R_1}} & \onslide<4->{\smath{=}} 
       
   524       & \onslide<4->{\smath{R_2; b \cdot b^\star+ \lambda;b^\star}}\\
       
   525   \onslide<4->{\smath{R_2}} & \onslide<4->{\smath{=}}    
       
   526       & \onslide<4->{\smath{R_1; a\cdot a^\star}}\\
       
   527 
       
   528   & & & \onslide<5->{by substitution}\\
       
   529 
       
   530   \onslide<5->{\smath{R_1}} & \onslide<5->{\smath{=}} 
       
   531       & \onslide<5->{\smath{R_1; a\cdot a^\star \cdot b \cdot b^\star+ \lambda;b^\star}}\\
       
   532   \onslide<5->{\smath{R_2}} & \onslide<5->{\smath{=}}    
       
   533       & \onslide<5->{\smath{R_1; a\cdot a^\star}}\\
       
   534 
       
   535   & & & \onslide<6->{by Arden}\\
       
   536 
       
   537   \onslide<6->{\smath{R_1}} & \onslide<6->{\smath{=}} 
       
   538       & \onslide<6->{\smath{\lambda;b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star}}\\
       
   539   \onslide<6->{\smath{R_2}} & \onslide<6->{\smath{=}}    
       
   540       & \onslide<6->{\smath{R_1; a\cdot a^\star}}\\
       
   541 
       
   542   & & & \onslide<7->{by substitution}\\
       
   543 
       
   544   \onslide<7->{\smath{R_1}} & \onslide<7->{\smath{=}} 
       
   545       & \onslide<7->{\smath{\lambda;b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star}}\\
       
   546   \onslide<7->{\smath{R_2}} & \onslide<7->{\smath{=}}    
       
   547       & \onslide<7->{\smath{\lambda; b^\star\cdot (a\cdot a^\star \cdot b \cdot b^\star)^\star 
       
   548           \cdot a\cdot a^\star}}\\
       
   549   \end{tabular}
       
   550   \end{center}
       
   551 
       
   552   \only<8->{
       
   553   \begin{textblock}{6}(2.5,4)
       
   554   \begin{block}{}
       
   555   \begin{minipage}{8cm}\raggedright
       
   556   
       
   557   \begin{tikzpicture}[shorten >=1pt,node distance=2cm,auto, ultra thick, inner sep=1mm]
       
   558   \tikzstyle{state}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=0mm]
       
   559 
       
   560   %\draw[help lines] (0,0) grid (3,2);
       
   561 
       
   562   \node[state,initial]   (p_0)                  {$R_1$};
       
   563   \node[state,accepting] (p_1) [right of=q_0]   {$R_2$};
       
   564 
       
   565   \path[->] (p_0) edge [bend left]   node        {a} (p_1)
       
   566                   edge [loop above]   node       {b} ()
       
   567             (p_1) edge [loop above]   node       {a} ()
       
   568                   edge [bend left]   node        {b} (p_0);
       
   569   \end{tikzpicture}
       
   570 
       
   571   \end{minipage}
       
   572   \end{block}
       
   573   \end{textblock}}
       
   574 
       
   575   \end{frame}}
       
   576   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   577 *}
       
   578 
       
   579 text_raw {*
       
   580   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   581   \mode<presentation>{
       
   582   \begin{frame}[c]
       
   583   \frametitle{\LARGE The Equ's Solving Algorithm}
       
   584 
       
   585   \begin{itemize}
       
   586   \item The algorithm must terminate: Arden makes one equation smaller; 
       
   587   substitution deletes one variable from the right-hand sides.\bigskip
       
   588 
       
   589   \item We need to maintain the invariant that Arden is applicable
       
   590   (if \smath{[] \not\in A} then \ldots):\medskip
       
   591 
       
   592   \begin{center}\small
       
   593   \begin{tabular}{l@ {\hspace{1mm}}c@ {\hspace{1mm}}ll}
       
   594   \smath{R_1} & \smath{=} & \smath{R_1; b + R_2; b + \lambda;[]}\\
       
   595   \smath{R_2} & \smath{=} & \smath{R_1; a + R_2; a}\\
       
   596 
       
   597   & & & by Arden\\
       
   598 
       
   599   \smath{R_1} & \smath{=} & \smath{R_1; b + R_2; b + \lambda;[]}\\
       
   600   \smath{R_2} & \smath{=} & \smath{R_1; a\cdot a^\star}\\
       
   601   \end{tabular}
       
   602   \end{center}
       
   603 
       
   604   \end{itemize}
       
   605 
       
   606 
       
   607   \end{frame}}
       
   608   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   609 *}
       
   610 
       
   611 text_raw {*
       
   612   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   613   \mode<presentation>{
       
   614   \begin{frame}[c]
       
   615   \frametitle{\LARGE The Equ's Solving Algorithm}
       
   616 
       
   617   \begin{itemize}
       
   618   \item The algorithm is still a bit hairy to formalise because of our set-representation
       
   619   for equations:
       
   620   
       
   621   \begin{center}
       
   622   \begin{tabular}{ll}
       
   623   \smath{\big\{ (X, \{(Y_1, r_1), (Y_2, r_2), \ldots\}),}\\
       
   624   \mbox{}\hspace{5mm}\smath{\ldots}\\
       
   625   & \smath{\big\}}
       
   626   \end{tabular}
       
   627   \end{center}\bigskip\pause
       
   628 
       
   629   \small
       
   630   they are generated from \smath{U\!N\!IV /\!/ \approx_L}
       
   631 
       
   632   \end{itemize}
       
   633 
       
   634 
       
   635   \end{frame}}
       
   636   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   637 *}
       
   638 
       
   639 
       
   640 
       
   641 text_raw {*
       
   642   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   643   \mode<presentation>{
       
   644   \begin{frame}[c]
       
   645   \frametitle{\LARGE Other Direction}
       
   646 
       
   647   One has to prove
       
   648 
       
   649   \begin{center}
       
   650   \smath{\text{finite} (U\!N\!IV /\!/ \approx_{\mathbb{L}(r)})}
       
   651   \end{center}
       
   652 
       
   653   by induction on \smath{r}. Not trivial, but after a bit 
       
   654   of thinking (by Chunhan), one can prove that if
       
   655 
       
   656   \begin{center}
       
   657   \smath{\text{finite} (U\!N\!IV /\!/ \approx_{\mathbb{L}(r_1)})}\hspace{5mm}
       
   658   \smath{\text{finite} (U\!N\!IV /\!/ \approx_{\mathbb{L}(r_2)})}
       
   659   \end{center}
       
   660 
       
   661   then
       
   662 
       
   663   \begin{center}
       
   664   \smath{\text{finite} (U\!N\!IV /\!/ \approx_{\mathbb{L}(r_1) \,\cup\, \mathbb{L}(r_2)})}
       
   665   \end{center}
       
   666   
       
   667   
       
   668 
       
   669   \end{frame}}
       
   670   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   671 *}
       
   672 
       
   673 text_raw {*
       
   674   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   675   \mode<presentation>{
       
   676   \begin{frame}[c]
       
   677   \frametitle{\LARGE What Have We Achieved?}
       
   678 
       
   679   \begin{itemize}
       
   680   \item \smath{\text{finite}\, (U\!N\!IV /\!/ \approx_L) \;\Leftrightarrow\; L\; \text{is regular}}
       
   681   \bigskip\pause
       
   682   \item regular languages are closed under complementation; this is easy
       
   683   \begin{center}
       
   684   \smath{U\!N\!IV /\!/ \approx_L \;\;=\;\; U\!N\!IV /\!/ \approx_{-L}}
       
   685   \end{center}\pause\bigskip
       
   686   
       
   687   \item if you want to do regular expression matching (see Scott's paper)\pause\bigskip
       
   688 
       
   689   \item I cannot yet give definite numbers
       
   690   \end{itemize}
       
   691 
       
   692   \only<2>{
       
   693   \begin{textblock}{10}(4,14)
       
   694   \small
       
   695   \smath{x \approx_{L} y \,\dn\, \forall z.\; x @ z \in L \Leftrightarrow y @ z \in L}
       
   696   \end{textblock}
       
   697   }
       
   698 
       
   699   
       
   700 
       
   701   \end{frame}}
       
   702   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   703 *}
       
   704 
       
   705 text_raw {*
       
   706   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   707   \mode<presentation>{
       
   708   \begin{frame}[c]
       
   709   \frametitle{\LARGE Examples}
       
   710 
       
   711   \begin{itemize}
       
   712   \item \smath{L \equiv \Sigma^\star 0 \Sigma} is regular
       
   713   \begin{quote}\small
       
   714   \begin{tabular}{lcl}
       
   715   \smath{A_1} & \smath{=} & \smath{\Sigma^\star 00}\\
       
   716   \smath{A_2} & \smath{=} & \smath{\Sigma^\star 01}\\
       
   717   \smath{A_3} & \smath{=} & \smath{\Sigma^\star 10 \cup \{0\}}\\
       
   718   \smath{A_4} & \smath{=} & \smath{\Sigma^\star 11 \cup \{1\} \cup \{[]\}}\\
       
   719   \end{tabular}
       
   720   \end{quote}
       
   721 
       
   722   \item \smath{L \equiv \{ 0^n 1^n \,|\, n \ge 0\}} is not regular
       
   723   \begin{quote}\small
       
   724   \begin{tabular}{lcl}
       
   725   \smath{B_0} & \smath{=} & \smath{\{0^n 1^n \,|\,     n \ge 0\}}\\
       
   726   \smath{B_1} & \smath{=} & \smath{\{0^n 1^{(n-1)} \,|\, n \ge 1\}}\\
       
   727   \smath{B_2} & \smath{=} & \smath{\{0^n 1^{(n-2)} \,|\, n \ge 2\}}\\
       
   728   \smath{B_3} & \smath{=} & \smath{\{0^n 1^{(n-3)} \,|\, n \ge 3\}}\\
       
   729               & \smath{\vdots} &\\
       
   730   \end{tabular}
       
   731   \end{quote}
       
   732   \end{itemize}
       
   733 
       
   734   \end{frame}}
       
   735   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   736 *}
       
   737 
       
   738 
       
   739 text_raw {*
       
   740   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   741   \mode<presentation>{
       
   742   \begin{frame}[c]
       
   743   \frametitle{\LARGE What We Have Not Achieved}
       
   744 
       
   745   \begin{itemize}
       
   746   \item regular expressions are not good if you look for a minimal
       
   747   one for a language (DFAs have this notion)\pause\bigskip
       
   748 
       
   749   \item Is there anything to be said about context free languages:\medskip
       
   750   
       
   751   \begin{quote}
       
   752   A context free language is where every string can be recognised by
       
   753   a pushdown automaton.
       
   754   \end{quote}
       
   755   \end{itemize}
       
   756 
       
   757   \end{frame}}
       
   758   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   759 *}
       
   760 
       
   761 
       
   762 text_raw {*
       
   763   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   764   \mode<presentation>{
       
   765   \begin{frame}[c]
       
   766   \frametitle{\LARGE Conclusion}
       
   767 
       
   768   \begin{itemize}
       
   769   \item on balance regular expression are superior 
       
   770   to DFAs, in my opinion\bigskip
       
   771 
       
   772   \item I cannot think of a reason to not teach regular languages
       
   773   to students this way (!?)\bigskip
       
   774 
       
   775   \item I have never ever seen a proof of Myhill-Nerode based on
       
   776   regular expressions\bigskip
       
   777 
       
   778   \item no application, but lots of fun\bigskip
       
   779 
       
   780   \item great source of examples
       
   781 
       
   782   \end{itemize}
       
   783 
       
   784   \end{frame}}
       
   785   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
       
   786 *}
       
   787 
       
   788 (*<*)
       
   789 end
       
   790 (*>*)