handouts/antimirov.tex
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 05 Sep 2025 16:59:48 +0100
changeset 981 14e5ae1fb541
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
981
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
\documentclass[12pt]{article}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
\usepackage{../style}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
\usepackage{../langs}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
\usepackage{graphicx}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
\newtheorem{thm}{Theorem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
\newtheorem{lem}[thm]{Lemma}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
\newtheorem{cor}[thm]{Corollary}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
\newenvironment{proof}{\paragraph{Proof:}\it}{\hfill$\square$}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
\begin{document}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
\section*{Antimirov's Proof about Pders}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
These are some rough notes about the result by Antimirov establishing
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
a bound on the number of regular expressions in a partial
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
derivative. From this bound on the number of partial derivatives one
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
can easily construct an NFA for a regular expression, but one can also
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
derive a bound on the size of the partial derivatives. This is what we
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
do first.  We start with the following definitions:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
\begin{itemize}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
\item $pder\,c\,r$ --- partial derivative according to a character; this can be defined
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
  inductively as follows:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
  \begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
    \begin{tabular}{l@ {\hspace{2mm}}c@ {\hspace{2mm}}l}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
  $\textit{pder}\, c\, (\ZERO)$      & $\dn$ & $\emptyset$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
  $\textit{pder}\, c\, (\ONE)$         & $\dn$ & $\emptyset$ \\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
  $\textit{pder}\, c\, (d)$                & $\dn$ & if $c = d$ then $\{\ONE\}$ else $\emptyset$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
  $\textit{pder}\, c\, (r_1 + r_2)$        & $\dn$ & $\textit{pder}\, c\, r_1 \;\cup\; \textit{pder}\, c\, r_2$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
  $\textit{pder}\, c\, (r_1 \cdot r_2)$  & $\dn$  & if $\textit{nullable} (r_1)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
  & & then $\Pi\,(\textit{pder}\,c\,r_1)\,r_2 \;\cup\; \textit{pder}\, c\, r_2$\\ 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
  & & else $\Pi\,(\textit{pder}\, c\, r_1)\,r_2$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
  $\textit{pder}\, c\, (r^*)$          & $\dn$ & $\Pi\,(\textit{pder}\,c\,r)\, (r^*)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
  \end{tabular}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
\end{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
\item $pder^+\,c\,\,rs$ --- partial derivatives for a set regular exprssions $rs$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
\item $pders\,s\,r$ --- partial derivative of a regular expression
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
  according to a string
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
\item $Pders\,A\,r \dn \bigcup_{s\in A}. pders\,s\,r$ --- partial
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
  derivatives according to a language (a set of strings)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
\item $|rs|$ is the size of a set of regular expressions $rs$, or
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
  the number of elements in the
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
  set (also known as the cardinality of this set)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
\item $\prod\,rs\;r \dn \{r_1 \cdot r \;|\; r_1 \in rs\}$ --- this is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
  some convenience when writing a set of sequence regular
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
  expressions. It essentially ``appends'' the regular expression $r$ to all
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
  regular expressions in the set $rs$. As a result one can write
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
  the sequence case for partial derivatives (see above) more conveniently 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
  as
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
  \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
    pder\,c\,(r_1\cdot r_2) \dn
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
    \begin{cases}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
      \prod\,(pder\,c\,r_1)\,r_2\;\cup\;pder\,c\,r_2 &
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    60
        \!\!\textit{provided}\,r_1\, \textit{is nullable}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    61
      \prod\,(pder\,c\,r_1)\,r_2 & \!\!\textit{otherwise}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    62
    \end{cases}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    63
  \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    64
\item $\textit{Psuf}\,s$ is the set of all non-empty suffixes of $s$ defined as
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    65
  \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    66
  \textit{PSuf}\, s \dn \{v.\;v \not= [] \wedge \exists u. u \,@\, v = s \}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    67
\]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    68
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    69
So for the string $abc$ the non-empty suffixes are $c$, $bc$ and
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    70
$abc$.  Also we have that
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    71
$\textit{Psuf}\,(s\,@\,[c]) = ((\textit{Psuf}\,s)\,@@\,[c]) \cup
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    72
\{[c]\}$. Here $@@$ means to concatenate $[c]$ to the end of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    73
all strings in $\textit{Psuf}\,s$; in this equation  we also
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    74
need to add $\{[c]\}$ in order to make the equation to hold.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    75
\end{itemize}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    76
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    77
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    78
To state Antimirov's result we need the following definition of an
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    79
\emph{alphabetic width} of a regular expression defined as follows:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    80
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    81
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    82
\begin{tabular}{lcl}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    83
  $awidth(\ZERO)$ & $\dn$ & $0$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    84
  $awidth(\ONE)$ & $\dn$ & $0$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    85
  $awidth(c)$ & $\dn$ & $1$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    86
  $awidth(r_1 + r_2)$     & $\dn$ & $awidth(r_1) + awidth(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    87
  $awidth(r_1 \cdot r_2)$ & $\dn$ & $awidth(r_1) + awidth(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    88
  $awidth(r^*)$ & $\dn$ & $awidth(r)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    89
\end{tabular}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    90
\end{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    91
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    92
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    93
This function counts how many characters are in a regular expression.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    94
Antimirov's result states
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    95
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    96
\begin{thm}\label{one}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    97
$\forall\,A\,r\,.\;\;|Pders\;A\;r| \leq awidth(r) + 1$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    98
\end{thm}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    99
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   100
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   101
Note this theorem holds for any set of strings $A$, for example
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   102
for the set of all strings, which I will write as $\textit{UNIV}$, and also
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   103
for the set $\{s\}$ containing only a single string $s$. Therefore a
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   104
simple corollary is 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   105
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   106
\begin{cor}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   107
$\forall\,s\,r\,.\;\;|pders\;s\;r| \leq awidth(r) + 1$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   108
\end{cor}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   109
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   110
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   111
This property says that for every string $s$, the number of regular
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   112
expressions in the derivative can never be bigger than
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   113
$awidth(r) + 1$.  Interestingly we do not show Thm~\ref{one} for all
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   114
sets of strings $A$ directly, but rather only for one particular set of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   115
strings which I call $UNIV_1$. It includes all strings except the empty string
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   116
(remember $UNIV$ contains all strings).\bigskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   117
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   118
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   119
Let's try to give below a comprehensible account of Antimirov's proof
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   120
of Thm.~\ref{one}---I distictly remember that Antimirov's paper is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   121
great, but pretty incomprehensible for the first 20+ times one reads
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   122
that paper.  The proof starts with the following much weaker property
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   123
about the size being finite:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   124
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   125
\begin{lem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   126
$\forall\,A\,r\,.\;\;(Pders\;A\;r)$ is a finite set.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   127
\end{lem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   128
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   129
\noindent This lemma is needed because some reasoning steps in
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   130
Thm~\ref{one} only work for finite sets, not infinite sets. But let us
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   131
skip over the proof of this property at first and let us assume we
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   132
know already that the partial derivatives are always finite sets (this for
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   133
example does not hold for unsimplified Brzozowski derivatives which
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   134
can be infinite for some sets of strings).
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   135
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   136
There are some central lemmas about partial derivatives for $\cdot$ and $\_^*$.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   137
One is the following
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   138
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   139
\begin{lem}\label{central}\mbox{}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   140
  \[Pders\,UNIV_1\,(r_1\cdot r_2) \subseteq (\prod (Pders\,UNIV_1\, r_1)\,r_2) \;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   141
  \cup \; Pders\,UNIV_1\,r_2\]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   142
\end{lem}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   143
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   144
\begin{proof}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   145
  \noindent The proof is done via an induction for the following property
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   146
  \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   147
  pders\,s\,(r_1\cdot r_2) \subseteq (\prod (pders\,s\, r_1)\,r_2) \;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   148
  \cup \; Pders\,(\textit{PSuf}\,s)\,r_2
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   149
  \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   150
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   151
  \noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   152
  Note that this property uses $pders$ and $Pders$ together. The proof is done
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   153
  by ``reverse'' induction on $s$, meaning the cases to analyse are the
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   154
  empty string $[]$ and the case where a character is put at the end of the
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   155
  string $s$, namely $s \,@\, [c]$. The case $[]$ is trivial. In the other
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   156
  case we know by IH that
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   157
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   158
   \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   159
  pders\,s\,(r_1\cdot r_2) \subseteq (\prod (pders\,s\, r_1)\,r_2) \;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   160
  \cup \; Pders\,(\textit{PSuf}\,s)\,r_2
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   161
  \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   162
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   163
  \noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   164
  holds for $s$. Then we have to show it holds for $s\,@\,[c]$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   165
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   166
  \begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   167
  \begin{tabular}{r@{\hspace{2mm}}ll}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   168
        & $pders\,(s\,@\,[c])\,(r_1\cdot r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   169
    $=$ & $pder^+\,c\,(pders\,s\,(r_1\cdot r_2))$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   170
    $\subseteq$ & $pder^+\,c\,(\prod (pders\,s\, r_1)\,r_2 \;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   171
                  \cup \; Pders\,(\textit{PSuf}\,s)\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   172
    & \hfill{}by IH\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   173
    $=$ & $(pder^+\,c\,(\prod (pders\,s\, r_1)\,r_2))\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   174
          (pder^+\,c\,(Pders\,(\textit{PSuf}\,s)\,r_2))$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   175
    $=$ & $(pder^+\,c\,(\prod (pders\,s\, r_1)\,r_2))\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   176
          (Pders\,(\textit{PSuf}\,(s\,@\,[c]))\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   177
    $\subseteq$ &
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   178
                  $(pder^+\,c\,(\prod (pders\,s\, r_1)\,r_2))\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   179
                  (pder\,c\,r_2)\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   180
                  (Pders\,(\textit{PSuf}\,s\,@@\,[c])\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   181
    $\subseteq$ & $\prod (pder^+\,c\,(pders\,s\, r_1))\,r_2\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   182
                  (pder\,c\,r_2)\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   183
                  (Pders\,(\textit{PSuf}\,s\,@@\,[c])\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   184
    $=$ & $(\prod (pders\,(s\,@\,[c])\, r_1)\,r_2)\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   185
                  (pder\,c\,r_2)\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   186
    (Pders\,(\textit{PSuf}\,s\,@@\,[c])\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   187
    $\subseteq$ & $(\prod (pders\,(s\,@\,[c])\, r_1)\,r_2)\;\cup\;
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   188
    (Pders\,(\textit{PSuf}\,(s\,@\,[c]))\,r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   189
  \end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   190
  \end{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   191
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   192
  \noindent The lemma now follows because for an $s \in UNIV_1$ it holds that
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   193
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   194
  \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   195
    \prod\,(pders\,s\,r_1)\,r_2 \subseteq \prod (Pders\,UNIV_1\, r_1)\,r_2
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   196
  \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   197
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   198
  \noindent and
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   199
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   200
  \[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   201
    Pders\,(\textit{PSuf}\,s)\,r_2 \subseteq Pders\,UNIV_1\,r_2
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   202
  \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   203
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   204
  \noindent The left-hand sides of the inclusions above are
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   205
  euqal to $pders\,s\,(r_1\cdot r_2)$ for a string $s\in UNIV_1$.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   206
\end{proof}\medskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   207
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   208
\noindent There is a similar lemma for the $^*$-regular expression, namely:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   209
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   210
\begin{lem}\label{centraltwo}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   211
$Pders\,UNIV_1\,(r^*) \subseteq \prod\, (Pders\,UNIV_1\,r)\,(r^*)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   212
\end{lem}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   213
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   214
\noindent 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   215
We omit the proof for the moment (similar to Lem~\ref{central}). We
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   216
also need the following property about the cardinality of $\prod$:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   217
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   218
\begin{lem}\label{centralthree}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   219
  $|\prod\,(Pders\,A\,r_1)\,r_2| \le |Pders\,A\,r_1|$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   220
\end{lem}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   221
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   222
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   223
We only need the $\le$ version, which essentially says there
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   224
are as many sequences $r\cdot r_2$ as are elements in $r$. Now
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   225
for the proof of Thm~\ref{one}: The main induction in
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   226
Antimirov's proof establishes that:\footnote{Remember that it is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   227
  always the hardest part in an induction proof to find the right
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   228
  property that is strong enough and of the right shape for the
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   229
  induction to go through.}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   230
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   231
\begin{lem}\label{two}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   232
$\forall r.\;\;|Pders\;UNIV_1\;r| \leq awidth(r)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   233
\end{lem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   234
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   235
\begin{proof} This is proved by induction on
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   236
  $r$. The interesting cases are $r_1 + r_2$, $r_1\cdot r_2$ and
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   237
  $r^*$. Let us start with the relatively simple case:\medskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   238
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   239
\noindent  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   240
\textbf{Case $r_1 + r_2$:} By induction hypothesis we know
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   241
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   242
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   243
\begin{tabular}{l}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   244
  $|Pders\;UNIV_1\;r_1| \leq awidth(r_1)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   245
  $|Pders\;UNIV_1\;r_2| \leq awidth(r_2)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   246
\end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   247
\end{center}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   248
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   249
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   250
In this case we can reason as follows
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   251
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   252
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   253
\begin{tabular}{r@{\hspace{2mm}}ll}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   254
  & $|Pders\;UNIV_1\;(r_1+r_2)|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   255
  $=$ & $|(Pders\;UNIV_1\;r_1) \;\cup\; (Pders\;UNIV_1\;r_2)|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   256
  $\leq$ & $|(Pders\;UNIV_1\;r_1)| \;+\; |(Pders\;UNIV_1\;r_2)|$ & (*)\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   257
  $\leq$ & $awidth(r_1) + awidth(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   258
  $\dn$ & $awidth(r_1 + r_2)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   259
\end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   260
\end{center}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   261
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   262
\noindent Note that (*) is a step that only works if one knows that
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   263
$|(Pders\;UNIV_1\;r_1)|$ and so on are finite. The next case is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   264
a bit more interesting:\medskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   265
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   266
\noindent  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   267
\textbf{Case $r_1 \cdot r_2$:} We have the same induction
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   268
hypothesis as in the case before. 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   269
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   270
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   271
\begin{tabular}{r@{\hspace{2mm}}ll}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   272
  & $|Pders\;UNIV_1\;(r_1\cdot r_2)|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   273
  $\leq$ & $|\prod\,(Pders\;UNIV_1\;r_1)\,r_2\;\cup\; (Pders\;UNIV_1\;r_2)|$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   274
  & by Lem~\ref{central}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   275
  $\leq$ & $|\prod\,(Pders\;UNIV_1\;r_1)\,r_2| \;+\; |(Pders\;UNIV_1\;r_2)|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   276
  $\leq$ & $|Pders\;UNIV_1\;r_1| \;+\; |Pders\;UNIV_1\;r_2|$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   277
  & by Lem~\ref{centralthree} \\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   278
  $\leq$ & $awidth(r_1) + awidth(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   279
  $\dn$ & $awidth(r_1 \cdot r_2)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   280
\end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   281
\end{center} \medskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   282
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   283
\noindent  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   284
\textbf{Case $r^*$:} Again we have the same induction
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   285
hypothesis as in the cases before.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   286
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   287
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   288
\begin{tabular}{r@{\hspace{2mm}}ll}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   289
  & $|Pders\;UNIV_1\;(r^*)|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   290
  $\leq$ & $|\prod\,(Pders\;UNIV_1\;r)\,(r^*)|$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   291
  & by Lem~\ref{centraltwo}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   292
  $\leq$ & $|Pders\;UNIV_1\;r|$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   293
  & by Lem~\ref{centralthree} \\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   294
  $\leq$ & $awidth(r)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   295
\end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   296
\end{center}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   297
\end{proof}\bigskip  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   298
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   299
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   300
From this lemma we can derive the next corrollary which extends
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   301
the property to $UNIV$ ($= UNIV_1 \cup \{[]\}$):
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   302
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   303
\begin{cor}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   304
$\forall r.\;\;|Pders\;UNIV\;r| \leq awidth(r) + 1$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   305
\end{cor}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   306
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   307
\begin{proof} This can be proved as follows
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   308
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   309
\begin{tabular}{r@{\hspace{2mm}}ll}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   310
  & $|Pders\;UNIV\;r|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   311
  $=$ & $|Pders\;(UNIV_1 \cup \{[]\})\;r|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   312
  $=$ & $|(Pders\;UNIV_1\,r) \;\cup\;\{r\}|$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   313
  $\leq$ & $|Pders\;UNIV_1\,r| + 1$ & by Lem~\ref{two}\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   314
  $\leq$ & $awidth(r) + 1$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   315
\end{tabular}    
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   316
\end{center}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   317
\end{proof}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   318
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   319
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   320
From the last corollary, it is easy to infer Antimirov's
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   321
Thm~\ref{one}, because
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   322
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   323
\[ Pders\,A\,r \subseteq Pders\,UNIV\,r \]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   324
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   325
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   326
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   327
for all sets $A$.\bigskip
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   328
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   329
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   330
While I was earlier a bit dismissive above about the intelligibility
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   331
of Antimirov's paper, you have to admit this proof is a work of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   332
beauty. It only gives a bound (\textit{awidth}) for the number of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   333
regular expressions in the de\-rivatives---this is important for
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   334
constructing NFAs.  Maybe it has not been important before, but I have
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   335
never seen a result about the \emph{size} of the partial
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   336
derivatives.\footnote{Update: I have now seen a paper which proves
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   337
  this result as well.}  However, a very crude bound, namely
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   338
$(size(r)^2 + 1) \times (awidth(r) + 1)$, can be easily derived by
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   339
using Antimirov's result. The definition we need for this is a
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   340
function that collects subexpressions from which partial derivatives
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   341
are built:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   342
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   343
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   344
\begin{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   345
\begin{tabular}{lcl}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   346
  $subs(\ZERO)$ & $\dn$ & $\{\ZERO\}$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   347
  $subs(\ONE)$ & $\dn$ & $\{\ONE\}$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   348
  $subs(c)$ & $\dn$ & $\{c, \ONE\}$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   349
  $subs(r_1 + r_2)$     & $\dn$ & $\{r_1 + r_2\}\,\cup\,subs(r_1) \,\cup\, subs(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   350
  $subs(r_1 \cdot r_2)$ & $\dn$ & $\{r_1 \cdot r_2\}\,\cup (\prod\,subs(r_1)\;r_2)\,\cup \,
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   351
                                  subs(r_1) \,\cup\, subs(r_2)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   352
  $subs(r^*)$ & $\dn$ & $\{r^*\}\,\cup\,(\prod\,subs(r)\;r^*) \,\cup\, subs(r)$\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   353
\end{tabular}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   354
\end{center}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   355
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   356
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   357
We can show that
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   358
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   359
\begin{lem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   360
$pders\,s\,r \subseteq subs(r)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   361
\end{lem}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   362
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   363
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   364
This is a relatively simple induction on $r$. The point is that for every element
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   365
in $subs$, the maximum size is given by
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   366
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   367
\begin{lem}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   368
  If $r' \in subs(r)$ then $size(r') \le 1 + size(r)^2$.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   369
\end{lem}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   370
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   371
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   372
Again the proof is a relatively simple induction on $r$. Stringing Antimirov's result
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   373
and the lemma above together gives
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   374
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   375
\begin{thm}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   376
$\sum_{r' \in pders\,s\,r}.\;size(r') \le (size(r)^2 + 1) \times (awidth(r) + 1)$
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   377
\end{thm}  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   378
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   379
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   380
Since $awidth$ is always smaller than the $size$ of a regular expression,
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   381
one can also state the bound as follows:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   382
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   383
\[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   384
\sum_{r' \in pders\,s\,r}.\;size(r') \le (size(r) + 1)^3
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   385
\]  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   386
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   387
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   388
This, by the way, also holds for $Pders$, namely
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   389
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   390
\[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   391
\sum_{r' \in Pders\,A\,r}.\;size(r') \le (size(r) + 1)^3
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   392
\]  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   393
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   394
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   395
for all $r$ and $A$. If one is interested in the height of the partial derivatives, one can derive:
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   396
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   397
\[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   398
\forall\,r' \in pders\,s\,r.\;height(r') \le height(r) + 1
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   399
\]  
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   400
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   401
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   402
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   403
meaning the height of the partial derivatives is never bigger than
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   404
the height of the original regular expression (+1).
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   405
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   406
\section*{NFA Construction via Antimirov's Partial Derivatives}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   407
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   408
Let's finish these notes with the construction of an NFA for a regular
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   409
expression using partial derivatives.  As usual an automaton is a
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   410
quintuple $(Q, A, \delta, q_0, F)$ where $Q$ is the set of states of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   411
the automaton, $A$ is the alphabet, $q_0$ is the starting state and
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   412
$F$ are the accepting states.  For DFAs the $\delta$ is a (partial)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   413
function from state $\times$ character to state. For NFAs it is a
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   414
relation between state $\times$ character $\times$ state. The
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   415
non-determinism can be seen by the following: consider three
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   416
(distinct) states $q_1$, $q_2$ and $q_3$, then the relation can
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   417
include $(q_1, a, q_2)$ and $(q_1, a, q_3)$, which means there is a
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   418
transition between $q_1$ and both $q_2$ and $q_3$ for the character
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   419
$a$.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   420
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   421
The Antimirov's NFA for a regular expression $r$ is then
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   422
given by the quintuple
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   423
\[(PD(r), A, \delta_{PD}, r, F)\]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   424
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   425
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   426
where $PD(r)$ are all the partial
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   427
derivatives according to all strings, that is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   428
\[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   429
PD(r) \;\dn\; \textit{Pders}\;\textit{UNIV}\;r
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   430
\]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   431
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   432
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   433
Because of the previous proof, we know that this set is finite. We
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   434
also see that the states in Antimirov's NFA are ``labelled'' by single
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   435
regular expressions.  The starting state is labelled with the original
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   436
regular expression $r$. The set of accepting states $F$ is all states
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   437
$r'\in F$ where $r'$ is nullable. The relation $\delta_{PD}$ is given by
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   438
\[
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   439
(r_1, c, r_2)
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   440
\]
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   441
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   442
\noindent
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   443
for every $r_1 \in PD(r)$ and $r_2 \in \textit{pder}\,c\,r$. This is
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   444
in general a ``non-deterministic'' relation because the set of partial
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   445
derivatives often contains more than one element. A nice example of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   446
an NFA constructed via Antimirov's partial derivatives is given in
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   447
\cite{IlieYu2003} on Page 378.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   448
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   449
The difficulty of course in this construction is to find the set of
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   450
partial derivatives according to \emph{all} strings. However, it seem
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   451
a procedure that enumerates strings according to size suffices until
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   452
no new derivative is found. There are various improvements that apply
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   453
clever tricks on how to more efficiently discover this set.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   454
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   455
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   456
\begin{thebibliography}{999}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   457
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   458
\bibitem{IlieYu2003}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   459
  L.~Ilie and S.~Yu,
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   460
  \emph{Reducing NFAs by Invariant Equivalences}.
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   461
  In Theoretical Computer Science, Volume 306(1--3), Pages 373–-390, 2003.\\
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   462
  \url{https://core.ac.uk/download/pdf/82545723.pdf}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   463
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   464
\end{thebibliography}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   465
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   466
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   467
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   468
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   469
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   470
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   471
\end{document}
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   472
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   473
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   474
%%% Local Variables: 
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   475
%%% mode: latex
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   476
%%% TeX-master: t
14e5ae1fb541 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
   477
%%% End: