\documentclass[dvipsnames,14pt,t]{beamer}\usepackage{../slides}\usepackage{../langs}\usepackage{../data}\usepackage{../graphics}\usepackage{soul}% beamer stuff\renewcommand{\slidecaption}{AFL, King's College London}\newcommand{\bl}[1]{\textcolor{blue}{#1}} \begin{document}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[t]\frametitle{% \begin{tabular}{@ {}c@ {}} \\[-3mm] \LARGE Automata and \\[-2mm] \LARGE Formal Languages\\[3mm] \end{tabular}} \normalsize \begin{center} \begin{tabular}{ll} Email: & christian.urban at kcl.ac.uk\\ Office: & S1.27 (1st floor Strand Building)\\ Slides: & KEATS (also home work is there)\\ \end{tabular} \end{center}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[t]\frametitle{2nd CW}Remember we showed that\\\begin{center}\bl{$der\;c\;(r^+) = (der\;c\;r)\cdot r^*$}\end{center}\bigskip\pauseDoes the same hold for \bl{$r^{\{n\}}$} with \bl{$n > 0$}\begin{center}\bl{$der\;c\;(r^{\{n\}}) = (der\;c\;r)\cdot r^{\{n-1\}}$} ?\end{center}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[t]\frametitle{2nd CW}\begin{itemize}\item \bl{$der$}\begin{center}\bl{$der\;c\;(r^{\{n\}}) \dn \begin{cases}\varnothing & \text{\textcolor{black}{if}}\; n = 0\\der\;c\;(r\cdot r^{\{n-1\}}) & \text{\textcolor{black}{o'wise}}\end{cases}$} \end{center}\item \bl{$mkeps$}\begin{center}\bl{$mkeps(r^{\{n\}}) \dn[\underbrace{mkeps(r),\ldots,mkeps(r)}_{n\;times}]$} \end{center}\item \bl{$inj$}\begin{center}\begin{tabular}{l@{\hspace{1mm}}c@{\hspace{1mm}}l}\bl{$inj\;r^{\{n\}}\;c\;(v_1, [vs])$} & \bl{$\dn$} &\bl{$[inj\;r\;c\;v_1::vs]$}\\\bl{$inj\;r^{\{n\}}\;c\;Left(v_1, [vs])$} & \bl{$\dn$} &\bl{$[inj\;r\;c\;v_1::vs]$}\\\bl{$inj\;r^{\{n\}}\;c\;Right([v::vs])$} & \bl{$\dn$} &\bl{$[mkeps(r)::inj\;r\;c\;v::vs]$}\\\end{tabular}\end{center}\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Compilers in Boeings 777}They want to achieve triple redundancy in hardwarefaults.\bigskipThey compile 1 Ada program to\begin{itemize}\item Intel 80486\item Motorola 68040 (old Macintosh's)\item AMD 29050 (RISC chips used often in laser printers)\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[t]\frametitle{Proofs about Rexps}Remember their inductive definition: \begin{center} \begin{tabular}{@ {}rrl} \bl{$r$} & \bl{$::=$} & \bl{$\varnothing$}\\ & \bl{$\mid$} & \bl{$\epsilon$} \\ & \bl{$\mid$} & \bl{$c$} \\ & \bl{$\mid$} & \bl{$r_1 \cdot r_2$}\\ & \bl{$\mid$} & \bl{$r_1 + r_2$} \\ & \bl{$\mid$} & \bl{$r^*$} \\ \end{tabular} \end{center}If we want to prove something, say a property \bl{$P(r)$}, for all regular expressions \bl{$r$} then \ldots\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Proofs about Rexp (2)}\begin{itemize}\item \bl{$P$} holds for \bl{$\varnothing$}, \bl{$\epsilon$} and \bl{c}\bigskip\item \bl{$P$} holds for \bl{$r_1 + r_2$} under the assumption that \bl{$P$} alreadyholds for \bl{$r_1$} and \bl{$r_2$}.\bigskip\item \bl{$P$} holds for \bl{$r_1 \cdot r_2$} under the assumption that \bl{$P$} alreadyholds for \bl{$r_1$} and \bl{$r_2$}.\bigskip\item \bl{$P$} holds for \bl{$r^*$} under the assumption that \bl{$P$} alreadyholds for \bl{$r$}.\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\bl{\begin{center}\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}$zeroable(\varnothing)$ & $\dn$ & \textit{true}\\$zeroable(\epsilon)$ & $\dn$ & \textit{false}\\$zeroable (c)$ & $\dn$ & \textit{false}\\$zeroable (r_1 + r_2)$ & $\dn$ & $zeroable(r_1) \wedge zeroable(r_2)$ \\ $zeroable (r_1 \cdot r_2)$ & $\dn$ & $zeroable(r_1) \vee zeroable(r_2)$ \\$zeroable (r^*)$ & $\dn$ & \textit{false}\\\end{tabular}\end{center}}\begin{center}\bl{$zeroable(r)$} if and only if \bl{$L(r) = \{\}$}\end{center}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Correctness of the Matcher}\begin{itemize}\item We want to prove\medskip\begin{center}\bl{$matches\;r\;s$} if and only if \bl{$s\in L(r)$}\end{center}\bigskipwhere \bl{$matches\;r\;s \dn nullable(ders\;s\;r)$}\bigskip\pause\item We can do this, if we know\medskip\begin{center}\bl{$L(der\;c\;r) = Der\;c\;(L(r))$}\end{center}\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Induction over Strings}\begin{itemize}\item case \bl{$[]$}:\bigskipWe need to prove \begin{center} \bl{$\forall r.\;\;nullable(ders\;[]\;r) \;\Leftrightarrow\; [] \in L(r)$}\end{center}\bigskip \begin{center} \bl{$nullable(ders\;[]\;r) \;\dn\; nullable\;r \;\Leftrightarrow\ldots$}\end{center} \end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Induction over Strings}\begin{itemize}\item case \bl{$c::s$}\bigskipWe need to prove \begin{center} \bl{$\forall r.\;\;nullable(ders\;(c::s)\;r) \;\Leftrightarrow\; (c::s) \in L(r)$}\end{center} We have by IH\begin{center} \bl{$\forall r.\;\;nullable(ders\;s\;r) \;\Leftrightarrow\; s \in L(r)$}\end{center}\bigskip \begin{center}\bl{$ders\;(c::s)\;r \dn ders\;s\;(der\;c\;r)$}\end{center}\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Induction over Regexps}\begin{itemize}\item The proof hinges on the fact that we can prove\bigskip\begin{center} \Large\bl{$L(der\;c\;r) = Der\;c\;(L(r))$}\end{center} \end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Some Lemmas}\begin{itemize}\item \bl{$Der\;c\;(A\cup B) = (Der\;c\;A)\cup(Der\;c\;B)$}\bigskip\item If \bl{$[] \in A$} then\begin{center}\bl{$Der\;c\;(A\,@\,B) = (Der\;c\;A)\,@\,B \;\cup\; (Der\;c\;B)$}\end{center}\bigskip\item If \bl{$[] \not\in A$} then\begin{center}\bl{$Der\;c\;(A\,@\,B) = (Der\;c\;A)\,@\,B$}\end{center}\bigskip\item \bl{$Der\;c\;(A^*) = (Der\;c\;A)\,@\,A^*$}\\\small\mbox{}\hfill (interesting case)\\\end{itemize}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{frame}[c]\frametitle{Why?}Why does \bl{$Der\;c\;(A^*) = (Der\;c\;A)\,@\,A^*$} hold?\bigskip\begin{center}\begin{tabular}{lcl}\bl{$Der\;c\;(A^*)$} & \bl{$=$} & \bl{$Der\;c\;(A^* - \{[]\})$}\medskip\\& \bl{$=$} & \bl{$Der\;c\;((A - \{[]\})\,@\,A^*)$}\medskip\\& \bl{$=$} & \bl{$(Der\;c\;(A - \{[]\}))\,@\,A^*$}\medskip\\& \bl{$=$} & \bl{$(Der\;c\;A)\,@\,A^*$}\medskip\\\end{tabular}\end{center}\bigskip\bigskip\smallusing the facts \bl{$Der\;c\;A = Der\;c\;(A - \{[]\})$} and\\\mbox{}\hfill\bl{$(A - \{[]\}) \,@\, A^* = A^* - \{[]\}$}\end{frame}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{document}%%% Local Variables: %%% mode: latex%%% TeX-master: t%%% End: