49     An Efficient Regular\\[-1mm]   | 
    49     An Efficient Regular\\[-1mm]   | 
    50     Expression Matcher\end{tabular}} | 
    50     Expression Matcher\end{tabular}} | 
    51   | 
    51   | 
    52 \footnotesize  | 
    52 \footnotesize  | 
    53 \begin{center} | 
    53 \begin{center} | 
    54   {\normalsize Graphs: \bl{$a^{?\{n\}} \cdot a^{\{n\}}$} and strings \bl{$\underbrace{\,a\ldots a\,}_{n}$}}\\ | 
    54   {\normalsize Graphs: \bl{$a^{?\{n\}} \cdot a^{\{n\}}$} and strings \bl{$\underbrace{\,a\ldots a\,}_{n}$}}\smallskip\\ | 
    55 \begin{tabular}{@{}cc@{}} | 
    55 \begin{tabular}{@{}cc@{}} | 
    56 \begin{tikzpicture} | 
    56 \begin{tikzpicture} | 
    57 \begin{axis}[ | 
    57 \begin{axis}[ | 
    58     xlabel={$n$}, | 
    58     xlabel={$n$}, | 
    59     x label style={at={(1.05,0.0)}}, | 
    59     x label style={at={(1.05,0.0)}}, | 
    67     axis lines=left,  | 
    67     axis lines=left,  | 
    68     width=5cm,  | 
    68     width=5cm,  | 
    69     height=4.5cm,   | 
    69     height=4.5cm,   | 
    70     legend entries={Python,Ruby},   | 
    70     legend entries={Python,Ruby},   | 
    71     legend pos=north west,  | 
    71     legend pos=north west,  | 
    72     legend cell align=left    | 
    72     legend cell align=left]  | 
    73 ]  | 
         | 
    74 \addplot[blue,mark=*, mark options={fill=white}] table {re-python.data}; | 
    73 \addplot[blue,mark=*, mark options={fill=white}] table {re-python.data}; | 
    75 \addplot[brown,mark=pentagon*, mark options={fill=white}] table {re-ruby.data};   | 
    74 \addplot[brown,mark=pentagon*, mark options={fill=white}] table {re-ruby.data};   | 
    76 \end{axis} | 
    75 \end{axis} | 
    77 \end{tikzpicture} | 
    76 \end{tikzpicture} | 
    78 &  | 
    77 &  | 
    87     ymax=35,  | 
    86     ymax=35,  | 
    88     ytick={0,5,...,30}, | 
    87     ytick={0,5,...,30}, | 
    89     scaled ticks=false,  | 
    88     scaled ticks=false,  | 
    90     axis lines=left,  | 
    89     axis lines=left,  | 
    91     width=5cm,  | 
    90     width=5cm,  | 
    92     height=4.5cm  | 
    91     height=4.5cm,  | 
    93 ]  | 
    92     legend entries={Scala V2,Scala V3}, | 
         | 
    93     legend pos=north west,  | 
         | 
    94     legend cell align=left]  | 
    94 \addplot[green,mark=square*,mark options={fill=white}] table {re2.data}; | 
    95 \addplot[green,mark=square*,mark options={fill=white}] table {re2.data}; | 
    95 \addplot[black,mark=square*,mark options={fill=white}] table {re3.data}; | 
    96 \addplot[black,mark=square*,mark options={fill=white}] table {re3.data}; | 
    96 \end{axis} | 
    97 \end{axis} | 
    97 \end{tikzpicture} | 
    98 \end{tikzpicture} | 
    98 \end{tabular} | 
    99 \end{tabular} | 
    99 \end{center} | 
   100 \end{center} | 
   100   | 
   101   | 
   101 \small  | 
   102 \small  | 
   102 In the handouts is a similar graph with \bl{$(a^*)^* \cdot b$} for Java. | 
   103 In the handouts is a similar graph for \bl{$(a^*)^* \cdot b$} and Java. | 
   103   | 
   104   | 
   104 \end{frame} | 
   105 \end{frame} | 
   105 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   106 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   106   | 
   107   | 
   107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   173 \end{center}\bigskip | 
   174 \end{center}\bigskip | 
   174   | 
   175   | 
   175 \item[] For example  | 
   176 \item[] For example  | 
   176   | 
   177   | 
   177 \begin{center} | 
   178 \begin{center} | 
   178 \begin{tabular}{lcll} | 
   179 \begin{tabular}{lcl@{\hspace{10mm}}l} | 
   179 \bl{$A^4$} & \bl{$=$} & \bl{$A \,@\, A \,@\, A \,@\, A$} & \bl{$(\{[]\})$}\\ | 
   180 \bl{$A^4$} & \bl{$=$} & \bl{$A \,@\, A \,@\, A \,@\, A$} & \bl{$(@\,\{[]\})$}\\ | 
   180 \bl{$A^1$} & \bl{$=$} & \bl{$A$} & \bl{$(\{[]\})$}\\ | 
   181 \bl{$A^1$} & \bl{$=$} & \bl{$A$} & \bl{$(@\,\{[]\})$}\\ | 
   181 \bl{$A^0$} & \bl{$=$} & \bl{$\{[]\}$}\\ | 
   182 \bl{$A^0$} & \bl{$=$} & \bl{$\{[]\}$}\\ | 
   182 \end{tabular} | 
   183 \end{tabular} | 
   183 \end{center} | 
   184 \end{center} | 
   184   | 
   185   | 
   185 \end{itemize}   | 
   186 \end{itemize}   | 
   255  \bl{$L(r_1 \cdot r_2)$} & \bl{$\dn$} & \bl{$\{ s_1 \,@\, s_2 \;|\; s_1 \in L(r_1) \wedge s_2 \in L(r_2) \}$}\\ | 
   256  \bl{$L(r_1 \cdot r_2)$} & \bl{$\dn$} & \bl{$\{ s_1 \,@\, s_2 \;|\; s_1 \in L(r_1) \wedge s_2 \in L(r_2) \}$}\\ | 
   256  \bl{$L(r^*)$}           & \bl{$\dn$} & \bl{$(L(r))\star \quad\dn \bigcup_{0 \le n} L(r)^n$}\\ | 
   257  \bl{$L(r^*)$}           & \bl{$\dn$} & \bl{$(L(r))\star \quad\dn \bigcup_{0 \le n} L(r)^n$}\\ | 
   257   \end{tabular} | 
   258   \end{tabular} | 
   258 \end{textblock} | 
   259 \end{textblock} | 
   259   | 
   260   | 
   260 \begin{textblock}{6}(9,12)\small | 
   261 \begin{textblock}{9}(6,12)\small | 
   261 \bl{$L$} is a function from regular expressions to  | 
   262 \bl{$L$} is a function from regular expressions to  | 
   262 sets of strings\\  | 
   263 sets of strings (languages):\smallskip\\  | 
   263 \bl{$L$ : Rexp $\Rightarrow$ Set$[$String$]$} | 
   264 \bl{$L$ : Rexp $\Rightarrow$ Set$[$String$]$} | 
   264 \end{textblock} | 
   265 \end{textblock} | 
   265   | 
   266   | 
   266 \end{frame} | 
   267 \end{frame} | 
   267 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   268 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   330 Their inductive definition:  | 
   331 Their inductive definition:  | 
   331   | 
   332   | 
   332   | 
   333   | 
   333 \begin{textblock}{6}(2,7.5) | 
   334 \begin{textblock}{6}(2,7.5) | 
   334   \begin{tabular}{@ {}rrl@ {\hspace{13mm}}l} | 
   335   \begin{tabular}{@ {}rrl@ {\hspace{13mm}}l} | 
   335   \bl{$r$} & \bl{$::=$}  & \bl{$\ZERO$}  & null\\ | 
   336   \bl{$r$} & \bl{$::=$}  & \bl{$\ZERO$}  & nothing\\ | 
   336          & \bl{$\mid$} & \bl{$\ONE$}       & empty string / \pcode{""} / $[]$\\ | 
   337          & \bl{$\mid$} & \bl{$\ONE$}       & empty string / \pcode{""} / $[]$\\ | 
   337          & \bl{$\mid$} & \bl{$c$}              & character\\ | 
   338          & \bl{$\mid$} & \bl{$c$}              & single character\\ | 
   338          & \bl{$\mid$} & \bl{$r_1 \cdot r_2$}  & sequence\\ | 
   339          & \bl{$\mid$} & \bl{$r_1 \cdot r_2$}  & sequence\\ | 
   339          & \bl{$\mid$} & \bl{$r_1 + r_2$}      & alternative / choice\\ | 
   340          & \bl{$\mid$} & \bl{$r_1 + r_2$}      & alternative / choice\\ | 
   340          & \bl{$\mid$} & \bl{$r^*$}            & star (zero or more)\\ | 
   341          & \bl{$\mid$} & \bl{$r^*$}            & star (zero or more)\\ | 
   341   \end{tabular} | 
   342   \end{tabular} | 
   342 \end{textblock} | 
   343 \end{textblock} | 
   744   | 
   746   | 
   745 \end{frame} | 
   747 \end{frame} | 
   746 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   748 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
   747   | 
   749   | 
   748 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   750 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
   751 %\begin{frame}[c] | 
         | 
   752 %\frametitle{\bl{$(a^*)^* \cdot b$}} | 
         | 
   753 %  | 
         | 
   754 %\begin{center} | 
         | 
   755 %\begin{tikzpicture} | 
         | 
   756 %  \begin{axis}[ | 
         | 
   757 %    xlabel={$n$}, | 
         | 
   758 %    x label style={at={(1.09,0.0)}}, | 
         | 
   759 %    ylabel={time in secs}, | 
         | 
   760 %    enlargelimits=false,  | 
         | 
   761 %    xmax=27,  | 
         | 
   762 %    xtick={0,5,...,20}, | 
         | 
   763 %    ytick={0,5,...,25}, | 
         | 
   764 %    ymax=13,  | 
         | 
   765 %    scaled ticks=false,  | 
         | 
   766 %    axis lines=left,  | 
         | 
   767 %    width=9cm,  | 
         | 
   768 %    height=5cm,   | 
         | 
   769 %    legend entries={Scala V2}, | 
         | 
   770 %    legend pos=north west,  | 
         | 
   771 %    legend cell align=left]  | 
         | 
   772 %\addplot[green,mark=square*,mark options={fill=white}] table {re2a.data}; | 
         | 
   773 %% still needs to be done  | 
         | 
   774 %%\addplot[black,mark=square*,mark options={fill=white}] table {re3a.data}; | 
         | 
   775 %\end{axis} | 
         | 
   776 %\end{tikzpicture} | 
         | 
   777 %\end{center} | 
         | 
   778 %  | 
         | 
   779 %\end{frame} | 
         | 
   780 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
   781   | 
         | 
   782 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
   749 \begin{frame}[c] | 
   783 \begin{frame}[c] | 
   750 \frametitle{\bl{$(a^*)^* \cdot b$}} | 
   784 \frametitle{\bl{$(a^*)^* \cdot b$}} | 
   751   | 
   785   | 
   752 \begin{center} | 
   786 \begin{center} | 
   753 \begin{tikzpicture} | 
   787 \begin{tikzpicture} | 
   754   \begin{axis}[ | 
   788   \begin{axis}[ | 
   755     xlabel={$n$}, | 
   789     xlabel={$n$}, | 
   756     x label style={at={(1.09,0.0)}}, | 
   790     x label style={at={(1.09,0.0)}}, | 
   757     ylabel={time in secs}, | 
   791     ylabel={time in secs}, | 
   758     enlargelimits=false,  | 
   792     enlargelimits=false,  | 
   759     xmax=27,  | 
   793     ytick={0,10,...,30}, | 
   760     xtick={0,5,...,20}, | 
   794     ymax=35,  | 
   761     ytick={0,5,...,25}, | 
         | 
   762     ymax=13,  | 
         | 
   763     scaled ticks=false,  | 
         | 
   764     axis lines=left,  | 
         | 
   765     width=9cm,  | 
         | 
   766     height=5cm,   | 
         | 
   767     legend entries={Scala V2}, | 
         | 
   768     legend pos=north west,  | 
         | 
   769     legend cell align=left]  | 
         | 
   770 \addplot[green,mark=square*,mark options={fill=white}] table {re2a.data}; | 
         | 
   771 %% still needs to be done  | 
         | 
   772 %%\addplot[black,mark=square*,mark options={fill=white}] table {re3a.data}; | 
         | 
   773 \end{axis} | 
         | 
   774 \end{tikzpicture} | 
         | 
   775 \end{center} | 
         | 
   776   | 
         | 
   777 \end{frame} | 
         | 
   778 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     | 
         | 
   779   | 
         | 
   780 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  | 
         | 
   781 \begin{frame}[c] | 
         | 
   782 \frametitle{\bl{$(a^*)^* \cdot b$}} | 
         | 
   783   | 
         | 
   784 \begin{center} | 
         | 
   785 \begin{tikzpicture} | 
         | 
   786   \begin{axis}[ | 
         | 
   787     xlabel={$n$}, | 
         | 
   788     x label style={at={(1.09,0.0)}}, | 
         | 
   789     ylabel={time in secs}, | 
         | 
   790     enlargelimits=false,  | 
         | 
   791     ytick={0,10,...,60}, | 
         | 
   792     ymax=65,  | 
         | 
   793     axis lines=left,  | 
   795     axis lines=left,  | 
   794     width=9cm,  | 
   796     width=9cm,  | 
   795     height=5cm,   | 
   797     height=5cm,   | 
   796     legend entries={Scala V3}, | 
   798     legend entries={Scala V3}, | 
   797     legend pos=north west,  | 
   799     legend pos=north east,  | 
   798     legend cell align=left]  | 
   800     legend cell align=left]  | 
   799 \addplot[green,mark=square*,mark options={fill=white}] table {re2a.data}; | 
   801 %\addplot[green,mark=square*,mark options={fill=white}] table {re2a.data}; | 
   800 \addplot[black,mark=square*,mark options={fill=white}] table {re3a.data}; | 
   802 \addplot[black,mark=square*,mark options={fill=white}] table {re3a.data}; | 
   801 \end{axis} | 
   803 \end{axis} | 
   802 \end{tikzpicture} | 
   804 \end{tikzpicture} | 
   803 \end{center} | 
   805 \end{center} | 
   804   | 
   806   |