slides/slides11.tex
author Christian Urban <christian.urban@kcl.ac.uk>
Mon, 10 Oct 2022 15:07:31 +0100
changeset 887 d9d52f3e7935
parent 871 94b84d880c2b
permissions -rw-r--r--
texupdated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
\documentclass[dvipsnames,14pt,t]{beamer}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
\usepackage{../slides}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
\usepackage{../langs}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     4
\usepackage{../data}
871
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
     5
\usepackage{../graphicss}
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
\usepackage{soul}
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
     7
\usepackage{proof}
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     9
% beamer stuff
458
896a5f91838d updated
Christian Urban <urbanc@in.tum.de>
parents: 389
diff changeset
    10
\renewcommand{\slidecaption}{CFL, King's College London}
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    11
\newcommand{\bl}[1]{\textcolor{blue}{#1}}       
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
871
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    13
%\newcommand\grid[1]{%
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    14
%	\begin{tikzpicture}[baseline=(char.base)]
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    15
%	\path[use as bounding box]
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    16
%	(0,0) rectangle (1em,1em);
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    17
%	\draw[red!50, fill=red!20]
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    18
%	(0,0) rectangle (1em,1em);
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    19
%	\node[inner sep=1pt,anchor=base west]
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    20
%	(char) at (0em,\gridraiseamount) {#1};
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    21
%	\end{tikzpicture}}
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    22
%\newcommand\gridraiseamount{0.12em}
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    23
871
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    24
%\makeatletter
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    25
%\newcommand\Grid[1]{%
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    26
%	\@tfor\z:=#1\do{\grid{\z}}}
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    27
%\makeatother	
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    28
871
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    29
%\newcommand\Vspace[1][.3em]{%
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    30
%	\mbox{\kern.06em\vrule height.3ex}%
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    31
%	\vbox{\hrule width#1}%
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    32
%	\hbox{\vrule height.3ex}}
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    33
871
94b84d880c2b updated
Christian Urban <christian.urban@kcl.ac.uk>
parents: 630
diff changeset
    34
%\def\VS{\Vspace[0.6em]}
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    35
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    36
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    37
\begin{document}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    38
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    39
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    40
\begin{frame}[t]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    41
\frametitle{%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    42
  \begin{tabular}{@ {}c@ {}}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    43
  \\[-3mm]
458
896a5f91838d updated
Christian Urban <urbanc@in.tum.de>
parents: 389
diff changeset
    44
  \LARGE Compilers and \\[-2mm] 
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    45
  \LARGE Formal Languages\\[3mm] 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    46
  \end{tabular}}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    47
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    48
  \normalsize
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    49
  \begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    50
  \begin{tabular}{ll}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    51
  Email:  & christian.urban at kcl.ac.uk\\
500
c502933be072 updated
Christian Urban <urbanc@in.tum.de>
parents: 471
diff changeset
    52
  Office: & N7.07 (North Wing, Bush House)\\
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    53
  Slides: & KEATS (also home work is there)\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    54
  \end{tabular}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    55
  \end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    56
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    57
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    58
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    59
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    60
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    61
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    62
\frametitle{Compilers \& Boeings 777}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    63
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    64
First flight in 1994. They want to achieve triple redundancy in hardware
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    65
faults.\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    66
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    67
They compile 1 Ada program to\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    68
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    69
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    70
\item Intel 80486
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    71
\item Motorola 68040 (old Macintosh's)
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    72
\item AMD 29050 (RISC chips used often in laser printers)
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    73
\end{itemize}\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    74
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    75
using 3 independent compilers.\bigskip\pause
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    76
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    77
\small Airbus uses C and static analysers. Recently started using CompCert.
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    78
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    79
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    80
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    81
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    82
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    83
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    84
\frametitle{seL4 / Isabelle}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    85
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    86
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    87
\item verified a microkernel operating system ($\approx$8000 lines of C code)\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    88
\item US DoD has competitions to hack into drones; they found that the
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    89
  isolation guarantees of seL4 hold up\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    90
\item CompCert and seL4 sell their code  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    91
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    92
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    93
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    94
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    95
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    96
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    97
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    98
\frametitle{POSIX Matchers}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
    99
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   100
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   101
\item Longest match rule (``maximal munch rule''): The 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   102
longest initial substring matched by any regular expression 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   103
is taken as the next token.
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   104
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   105
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   106
\bl{$\texttt{\Grid{iffoo\VS bla}}$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   107
\end{center}\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   108
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   109
\item Rule priority:
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   110
For a particular longest initial substring, the first regular
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   111
expression that can match determines the token.
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   112
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   113
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   114
\bl{$\texttt{\Grid{if\VS bla}}$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   115
\end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   116
\end{itemize}\bigskip\pause
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   117
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   118
\small
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   119
\hfill Kuklewicz: most POSIX matchers are buggy\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   120
\footnotesize
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   121
\hfill \url{http://www.haskell.org/haskellwiki/Regex_Posix}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   122
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   123
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   124
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   125
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   126
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   127
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   128
\mbox{}\\[-14mm]\mbox{}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   129
\small
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   130
\bl{
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   131
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   132
\begin{tabular}{lcl}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   133
$\textit{der}\;c\;(\ZERO)$ & $\dn$ & $\ZERO$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   134
$\textit{der}\;c\;(\ONE)$  & $\dn$ & $\ZERO$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   135
$\textit{der}\;c\;(d)$     & $\dn$ & $\textit{if}\; c = d\;\textit{then} \;\ONE \; \textit{else} \;\ZERO$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   136
$\textit{der}\;c\;(r_1 + r_2)$ & $\dn$ & $(\textit{der}\;c\;r_1) + (\textit{der}\;c\;r_2)$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   137
$\textit{der}\;c\;(r_1 \cdot r_2)$ & $\dn$ & $\textit{if}\;\textit{nullable}(r_1)$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   138
      & & $\textit{then}\;((\textit{der}\;c\;r_1)\cdot r_2) + (\textit{der}\;c\;r_2)$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   139
      & & $\textit{else}\;(\textit{der}\;c\;r_1)\cdot r_2$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   140
$\textit{der}\;c\;(r^*)$ & $\dn$ & $(\textit{der}\;c\;r)\cdot (r^*)$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   141
  $\textit{der}\;c\;(r^{\{n\}})$ & $\dn$ & \textit{if} $n=0$ \textit{then} $\ZERO$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   142
  & & \textit{else if} $\textit{nullable}(r)$ \textit{then} $(\textit{der}\;c\;r)\cdot (r^{\{\uparrow n-1\}})$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   143
  & & \textit{else} $(\textit{der}\;c\;r)\cdot (r^{\{n-1\}})$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   144
  $\textit{der}\;c\;(r^{\{\uparrow n\}})$ & $\dn$ & \textit{if} $n=0$ \textit{then} $\ZERO$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   145
  & & \textit{else}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   146
  $(\textit{der}\;c\;r)\cdot (r^{\{\uparrow n-1\}})$\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   147
\end{tabular}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   148
\end{center}}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   149
  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   150
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   151
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   152
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   153
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   154
\begin{frame}[t]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   155
\frametitle{Proofs about Rexps}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   156
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   157
Remember their inductive definition:
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   158
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   159
  \begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   160
  \begin{tabular}{@ {}rrl}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   161
  \bl{$r$} & \bl{$::=$}  & \bl{$\ZERO$}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   162
         & \bl{$\mid$} & \bl{$\ONE$}     \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   163
         & \bl{$\mid$} & \bl{$c$}            \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   164
         & \bl{$\mid$} & \bl{$r_1 \cdot r_2$}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   165
         & \bl{$\mid$} & \bl{$r_1 + r_2$}    \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   166
         & \bl{$\mid$} & \bl{$r^*$}          \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   167
         & \bl{$\mid$} & \bl{$r^{\{n\}}$}     \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   168
         & \bl{$\mid$} & \bl{$r^{\{\uparrow n\}}$}     \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   169
  \end{tabular}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   170
  \end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   171
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   172
If we want to prove something, say a property \bl{$P(r)$}, for all regular expressions \bl{$r$} then \ldots
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   173
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   174
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   175
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   176
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   177
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   178
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   179
\frametitle{Proofs about Rexp (2)}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   180
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   181
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   182
\item \bl{$P$} holds for \bl{$\ZERO$}, \bl{$\ONE$} and \bl{c}\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   183
\item \bl{$P$} holds for \bl{$r_1 + r_2$} under the assumption that \bl{$P$} already
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   184
holds for \bl{$r_1$} and \bl{$r_2$}.\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   185
\item \bl{$P$} holds for \bl{$r_1 \cdot r_2$} under the assumption that \bl{$P$} already
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   186
holds for \bl{$r_1$} and \bl{$r_2$}.\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   187
\item \bl{$P$} holds for \bl{$r^*$} under the assumption that \bl{$P$} already
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   188
  holds for \bl{$r$}.
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   189
\item \ldots
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   190
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   191
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   192
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   193
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   194
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   195
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   196
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   197
\frametitle{Proofs about Strings}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   198
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   199
If we want to prove something, say a property \bl{$P(s)$}, for all
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   200
strings \bl{$s$} then \ldots\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   201
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   202
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   203
\item \bl{$P$} holds for the empty string, and\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   204
\item \bl{$P$} holds for the string \bl{$c\!::\!s$} under the assumption that \bl{$P$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   205
already holds for \bl{$s$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   206
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   207
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   208
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   209
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   210
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   211
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   212
%\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   213
%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   214
%\bl{\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   215
%\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   216
%$zeroable(\varnothing)$      & $\dn$ & \textit{true}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   217
%$zeroable(\epsilon)$         & $\dn$ &  \textit{false}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   218
%$zeroable (c)$               & $\dn$ &  \textit{false}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   219
%$zeroable (r_1 + r_2)$       & $\dn$ &  $zeroable(r_1) \wedge zeroable(r_2)$ \\ 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   220
%$zeroable (r_1 \cdot r_2)$   & $\dn$ &  $zeroable(r_1) \vee zeroable(r_2)$ \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   221
%$zeroable (r^*)$             & $\dn$ & \textit{false}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   222
%\end{tabular}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   223
%\end{center}}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   224
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   225
%\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   226
%\bl{$zeroable(r)$} if and only if \bl{$L(r) = \{\}$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   227
%\end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   228
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   229
%\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   230
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   231
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   232
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   233
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   234
\frametitle{Correctness of the Matcher}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   235
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   236
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   237
\item We want to prove\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   238
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   239
\bl{$matches\;r\;s$} if and only if \bl{$s\in L(r)$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   240
\end{center}\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   241
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   242
where \bl{$matches\;r\;s \dn nullable(ders\;s\;r)$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   243
\bigskip\pause
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   244
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   245
\item We can do this, if we know\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   246
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   247
\bl{$L(der\;c\;r) = Der\;c\;(L(r))$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   248
\end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   249
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   250
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   251
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   252
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   253
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   254
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   255
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   256
\frametitle{Some Lemmas}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   257
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   258
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   259
\item \bl{$Der\;c\;(A\cup B) = 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   260
(Der\;c\;A)\cup(Der\;c\;B)$}\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   261
\item If \bl{$[] \in A$} then
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   262
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   263
\bl{$Der\;c\;(A\,@\,B) = (Der\;c\;A)\,@\,B \;\cup\; (Der\;c\;B)$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   264
\end{center}\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   265
\item If \bl{$[] \not\in A$} then
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   266
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   267
\bl{$Der\;c\;(A\,@\,B) = (Der\;c\;A)\,@\,B$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   268
\end{center}\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   269
\item \bl{$Der\;c\;(A^*) = (Der\;c\;A)\,@\,A^*$}\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   270
\small\mbox{}\hfill (interesting case)\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   271
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   272
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   273
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   274
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   275
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   276
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   277
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   278
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   279
\frametitle{Why?}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   280
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   281
Why does \bl{$Der\;c\;(A^*) = (Der\;c\;A)\,@\,A^*$} hold?
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   282
\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   283
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   284
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   285
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   286
\begin{tabular}{lcl}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   287
\bl{$Der\;c\;(A^*)$} & \bl{$=$} &  \bl{$Der\;c\;(A^* - \{[]\})$}\medskip\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   288
& \bl{$=$} & \bl{$Der\;c\;((A - \{[]\})\,@\,A^*)$}\medskip\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   289
& \bl{$=$} & \bl{$(Der\;c\;(A - \{[]\}))\,@\,A^*$}\medskip\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   290
& \bl{$=$} & \bl{$(Der\;c\;A)\,@\,A^*$}\medskip\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   291
\end{tabular}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   292
\end{center}\bigskip\bigskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   293
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   294
\small
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   295
using the facts \bl{$Der\;c\;A = Der\;c\;(A - \{[]\})$} and\\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   296
\mbox{}\hfill\bl{$(A - \{[]\}) \,@\, A^* = A^* - \{[]\}$}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   297
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   298
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   299
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   300
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   301
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   302
\begin{frame}[c]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   303
\frametitle{POSIX Spec}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   304
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   305
\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   306
\bl{\infer{[] \in \ONE \to Empty}{}}\hspace{15mm}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   307
\bl{\infer{c \in c \to Char(c)}{}}\bigskip\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   308
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   309
\bl{\infer{s \in r_1 + r_2 \to Left(v)}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   310
          {s \in r_1 \to v}}\hspace{10mm}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   311
\bl{\infer{s \in r_1 + r_2 \to Right(v)}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   312
          {s \in r_2 \to v & s \not\in L(r_1)}}\bigskip\medskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   313
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   314
\bl{\infer{s_1 @ s_2 \in r_1 \cdot r_2 \to Seq(v_1, v_2)}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   315
          {\small\begin{array}{l}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   316
           s_1 \in r_1 \to v_1 \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   317
           s_2 \in r_2 \to v_2 \\
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   318
           \neg(\exists s_3\,s_4.\; s_3 \not= []
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   319
           \wedge s_3 @ s_4 = s_2 \wedge
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   320
           s_1 @ s_3 \in L(r_1) \wedge
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   321
           s_4 \in L(r_2))
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   322
           \end{array}}}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   323
           
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   324
\bl{\ldots}           
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   325
\end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   326
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   327
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   328
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   329
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   330
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   331
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   332
\begin{frame}[t,squeeze]
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   333
\frametitle{Sulzmann \& Lu Paper}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   334
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   335
\begin{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   336
\item I have no doubt the algorithm is correct --- 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   337
  the problem is I do not believe their proof.
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   338
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   339
  \begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   340
  \begin{bubble}[10cm]\small
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   341
  ``How could I miss this? Well, I was rather careless when 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   342
  stating this Lemma :)\smallskip
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   343
 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   344
  Great example how formal machine checked proofs (and 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   345
  proof assistants) can help to spot flawed reasoning steps.''
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   346
  \end{bubble}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   347
  \end{center}\pause
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   348
  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   349
  %\begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   350
  %\begin{bubble}[10cm]\small
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   351
  %``Well, I don't think there's any flaw. The issue is how to 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   352
  %come up with a mechanical proof. In my world mathematical 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   353
  %proof $=$ mechanical proof doesn't necessarily hold.''
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   354
  %\end{bubble}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   355
  %\end{center}\pause
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   356
  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   357
\end{itemize}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   358
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   359
  \only<3>{%
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   360
  \begin{textblock}{11}(1,4.4)
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   361
  \begin{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   362
  \begin{bubble}[10.9cm]\small\centering
630
9b1c15c3eb6f updated
Christian Urban <urbanc@in.tum.de>
parents: 500
diff changeset
   363
  \includegraphics[scale=0.37]{../pics/msbug.png}
471
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   364
  \end{bubble}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   365
  \end{center}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   366
  \end{textblock}}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   367
  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   368
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   369
\end{frame}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   370
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   371
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   372
\end{document}
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   373
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   374
%%% Local Variables:  
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   375
%%% mode: latex
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   376
%%% TeX-master: t
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   377
%%% End: 
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   378
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   379
9476086849ad updated
Christian Urban <urbanc@in.tum.de>
parents: 458
diff changeset
   380
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   381
\begin{frame}[t]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   382
\frametitle{2nd CW}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   383
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   384
Remember we showed that\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   385
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   386
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   387
\bl{$der\;c\;(r^+) = (der\;c\;r)\cdot r^*$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   388
\end{center}\bigskip\pause
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   389
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   390
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   391
Does the same hold for \bl{$r^{\{n\}}$} with \bl{$n > 0$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   392
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   393
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   394
\bl{$der\;c\;(r^{\{n\}}) = (der\;c\;r)\cdot r^{\{n-1\}}$} ?
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   395
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   396
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   397
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   398
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   399
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   400
\begin{frame}[t]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   401
\frametitle{2nd CW}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   402
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   403
\begin{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   404
\item \bl{$der$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   405
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   406
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   407
\bl{$der\;c\;(r^{\{n\}}) \dn 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   408
\begin{cases}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   409
\varnothing & \text{\textcolor{black}{if}}\; n = 0\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   410
der\;c\;(r\cdot r^{\{n-1\}}) & \text{\textcolor{black}{o'wise}}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   411
\end{cases}$} 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   412
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   413
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   414
\item \bl{$mkeps$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   415
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   416
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   417
\bl{$mkeps(r^{\{n\}}) \dn
389
71c405056d3a updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents: 388
diff changeset
   418
[\underbrace{mkeps(r),\ldots,mkeps(r)}_{n\;times}]$} 
388
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   419
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   420
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   421
\item \bl{$inj$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   422
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   423
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   424
\begin{tabular}{l@{\hspace{1mm}}c@{\hspace{1mm}}l}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   425
\bl{$inj\;r^{\{n\}}\;c\;(v_1, [vs])$}     & \bl{$\dn$} &
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   426
\bl{$[inj\;r\;c\;v_1::vs]$}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   427
\bl{$inj\;r^{\{n\}}\;c\;Left(v_1, [vs])$} & \bl{$\dn$} &
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   428
\bl{$[inj\;r\;c\;v_1::vs]$}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   429
\bl{$inj\;r^{\{n\}}\;c\;Right([v::vs])$}  & \bl{$\dn$} &
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   430
\bl{$[mkeps(r)::inj\;r\;c\;v::vs]$}\\
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   431
\end{tabular}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   432
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   433
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   434
\end{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   435
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   436
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   437
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   438
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   439
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   440
\begin{frame}[c]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   441
\frametitle{Induction over Strings}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   442
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   443
\begin{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   444
\item case \bl{$[]$}:\bigskip
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   445
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   446
We need to prove 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   447
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   448
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   449
  \bl{$\forall r.\;\;nullable(ders\;[]\;r) \;\Leftrightarrow\; [] \in L(r)$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   450
\end{center}\bigskip  
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   451
  
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   452
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   453
  \bl{$nullable(ders\;[]\;r) \;\dn\; nullable\;r \;\Leftrightarrow\ldots$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   454
\end{center} 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   455
\end{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   456
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   457
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   458
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   459
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   460
\begin{frame}[c]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   461
\frametitle{Induction over Strings}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   462
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   463
\begin{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   464
\item case \bl{$c::s$}\bigskip
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   465
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   466
We need to prove 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   467
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   468
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   469
  \bl{$\forall r.\;\;nullable(ders\;(c::s)\;r) \;\Leftrightarrow\; (c::s) \in L(r)$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   470
\end{center} 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   471
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   472
We have by IH
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   473
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   474
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   475
  \bl{$\forall r.\;\;nullable(ders\;s\;r) \;\Leftrightarrow\; s \in L(r)$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   476
\end{center}\bigskip 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   477
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   478
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   479
\bl{$ders\;(c::s)\;r \dn ders\;s\;(der\;c\;r)$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   480
\end{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   481
\end{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   482
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   483
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   484
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   485
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   486
\begin{frame}[c]
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   487
\frametitle{Induction over Regexps}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   488
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   489
\begin{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   490
\item The proof hinges on the fact that we can prove\bigskip
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   491
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   492
\begin{center}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   493
  \Large\bl{$L(der\;c\;r) = Der\;c\;(L(r))$}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   494
\end{center} 
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   495
\end{itemize}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   496
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   497
\end{frame}
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
   498
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%