ChengsongTanPhdThesis/Chapters/Finite.tex
author Chengsong
Sun, 09 Jul 2023 02:08:12 +0100
changeset 658 273c176d9027
parent 640 bd1354127574
child 659 2e05f04ed6b3
permissions -rwxr-xr-x
finished 4.3.2 section explaining why lemma 11 is too strong
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     1
% Chapter Template
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     2
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     3
\chapter{Finiteness Bound} % Main chapter title
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     4
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     5
\label{Finite} 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     6
%  In Chapter 4 \ref{Chapter4} we give the second guarantee
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     7
%of our bitcoded algorithm, that is a finite bound on the size of any 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     8
%regex's derivatives. 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
     9
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    10
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    11
In this chapter we give a bound in terms of the size of 
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    12
the calculated derivatives: 
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    13
given an annotated regular expression $a$, for any string $s$
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    14
our algorithm $\blexersimp$'s derivatives
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    15
are finitely bounded
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    16
by a constant that only depends on $a$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    17
Formally we show that there exists an $N_a$ such that
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
    18
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    19
	$\llbracket \bderssimp{a}{s} \rrbracket \leq N_a$
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
    20
\end{center}
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
    21
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    22
where the size ($\llbracket \_ \rrbracket$) of 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    23
an annotated regular expression is defined
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    24
in terms of the number of nodes in its 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    25
tree structure (its recursive definition is given in the next page).
613
Chengsong
parents: 611
diff changeset
    26
We believe this size bound
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    27
is important in the context of POSIX lexing because 
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    28
\begin{itemize}
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    29
	\item
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    30
		It is a stepping stone towards the goal 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    31
		of eliminating ``catastrophic backtracking''. 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    32
		If the internal data structures used by our algorithm
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    33
		grows beyond a finite bound, then clearly 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    34
		the algorithm (which traverses these structures) will
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    35
		be slow.
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    36
		The next step is to refine the bound $N_a$ so that it
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    37
		is not just finite but polynomial in $\llbracket a\rrbracket$.
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    38
	\item
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    39
		Having the finite bound formalised 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    40
		gives us higher confidence that
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
    41
		our simplification algorithm $\simp$ does not ``misbehave''
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
    42
		like $\textit{simpSL}$ does.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    43
		The bound is universal for a given regular expression, 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    44
		which is an advantage over work which 
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 620
diff changeset
    45
		only gives empirical evidence on 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
    46
		some test cases (see for example Verbatim work \cite{Verbatimpp}).
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    47
\end{itemize}
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    48
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    49
We then extend our $\blexersimp$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    50
to support bounded repetitions ($r^{\{n\}}$).
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    51
We update our formalisation of 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    52
the correctness and finiteness properties to
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    53
include this new construct. 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
    54
We show that we can out-compete other verified lexers such as
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    55
Verbatim++ on bounded regular expressions.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    56
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    57
In the next section we describe in more detail
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    58
what the finite bound means in our algorithm
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    59
and why the size of the internal data structures of
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    60
a typical derivative-based lexer such as
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
    61
Sulzmann and Lu's needs formal treatment.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    62
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    63
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    64
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
    65
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
    66
\section{Formalising Size Bound of Derivatives}
577
f47fc4840579 thesis chap2
Chengsong
parents: 576
diff changeset
    67
\noindent
613
Chengsong
parents: 611
diff changeset
    68
In our lexer ($\blexersimp$),
Chengsong
parents: 611
diff changeset
    69
we take an annotated regular expression as input,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    70
and repeately take derivative of and simplify it.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    71
\begin{figure}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    72
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    73
		\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    74
			$\llbracket _{bs}\ONE \rrbracket$ & $\dn$ & $1$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    75
			$\llbracket \ZERO \rrbracket$ & $\dn$ & $1$ \\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    76
			$\llbracket _{bs} r_1 \cdot r_2 \rrbracket$ & $\dn$ & $\llbracket r_1 \rrbracket + \llbracket r_2 \rrbracket + 1$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    77
			$\llbracket _{bs}\mathbf{c} \rrbracket $ & $\dn$ & $1$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    78
			$\llbracket _{bs}\sum as \rrbracket $ & $\dn$ & $\map \; (\llbracket \_ \rrbracket)\; as   + 1$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    79
			$\llbracket _{bs} a^* \rrbracket $ & $\dn$ & $\llbracket a \rrbracket + 1$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    80
		\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    81
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    82
	\caption{The size function of bitcoded regular expressions}\label{brexpSize}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    83
\end{figure}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    84
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
    85
\begin{figure}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    86
	\begin{tikzpicture}[scale=2,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    87
		every node/.style={minimum size=11mm},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    88
		->,>=stealth',shorten >=1pt,auto,thick
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    89
		]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    90
		\node (r0) [rectangle, draw=black, thick, minimum size = 5mm, draw=blue] {$a$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    91
		\node (r1) [rectangle, draw=black, thick, right=of r0, minimum size = 7mm]{$a_1$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    92
		\draw[->,line width=0.2mm](r0)--(r1) node[above,midway] {$\backslash c_1$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    93
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    94
		\node (r1s) [rectangle, draw=blue, thick, right=of r1, minimum size=6mm]{$a_{1s}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    95
		\draw[->, line width=0.2mm](r1)--(r1s) node[above, midway] {$\simp$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    96
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    97
		\node (r2) [rectangle, draw=black, thick,  right=of r1s, minimum size = 12mm]{$a_2$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
    98
		\draw[->,line width=0.2mm](r1s)--(r2) node[above,midway] {$\backslash c_2$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
    99
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   100
		\node (r2s) [rectangle, draw = blue, thick, right=of r2,minimum size=6mm]{$a_{2s}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   101
		\draw[->,line width=0.2mm](r2)--(r2s) node[above,midway] {$\simp$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   102
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   103
		\node (rns) [rectangle, draw = blue, thick, right=of r2s,minimum size=6mm]{$a_{ns}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   104
		\draw[->,line width=0.2mm, dashed](r2s)--(rns) node[above,midway] {$\backslash \ldots$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   105
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   106
		\node (v) [circle, thick, draw, right=of rns, minimum size=6mm, right=1.7cm]{$v$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   107
		\draw[->, line width=0.2mm](rns)--(v) node[above, midway] {\bmkeps} node [below, midway] {\decode};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   108
	\end{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   109
	\caption{Regular expression size change during our $\blexersimp$ algorithm}\label{simpShrinks}
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   110
\end{figure}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   111
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   112
\noindent
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   113
Each time
613
Chengsong
parents: 611
diff changeset
   114
a derivative is taken, the regular expression might grow.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   115
However, the simplification that is immediately afterwards will often shrink it so that 
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   116
the overall size of the derivatives stays relatively small.
577
f47fc4840579 thesis chap2
Chengsong
parents: 576
diff changeset
   117
This intuition is depicted by the relative size
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   118
change between the black and blue nodes:
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   119
After $\simp$ the node shrinks.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   120
Our proof states that all the blue nodes
613
Chengsong
parents: 611
diff changeset
   121
stay below a size bound $N_a$ determined by the input $a$.
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   122
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   123
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   124
Sulzmann and Lu's assumed a similar picture of their algorithm,
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   125
though in fact their algorithm's size might be better depicted by the following graph:
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   126
\begin{figure}[H]
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   127
	\begin{tikzpicture}[scale=2,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   128
		every node/.style={minimum size=11mm},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   129
		->,>=stealth',shorten >=1pt,auto,thick
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   130
		]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   131
		\node (r0) [rectangle, draw=black, thick, minimum size = 5mm, draw=blue] {$a$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   132
		\node (r1) [rectangle, draw=black, thick, right=of r0, minimum size = 7mm]{$a_1$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   133
		\draw[->,line width=0.2mm](r0)--(r1) node[above,midway] {$\backslash c_1$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   134
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   135
		\node (r1s) [rectangle, draw=blue, thick, right=of r1, minimum size=7mm]{$a_{1s}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   136
		\draw[->, line width=0.2mm](r1)--(r1s) node[above, midway] {$\simp'$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   137
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   138
		\node (r2) [rectangle, draw=black, thick,  right=of r1s, minimum size = 17mm]{$a_2$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   139
		\draw[->,line width=0.2mm](r1s)--(r2) node[above,midway] {$\backslash c_2$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   140
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   141
		\node (r2s) [rectangle, draw = blue, thick, right=of r2,minimum size=14mm]{$a_{2s}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   142
		\draw[->,line width=0.2mm](r2)--(r2s) node[above,midway] {$\simp'$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   143
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   144
		\node (r3) [rectangle, draw = black, thick, right= of r2s, minimum size = 22mm]{$a_3$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   145
		\draw[->,line width=0.2mm](r2s)--(r3) node[above,midway] {$\backslash c_3$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   146
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   147
		\node (rns) [right = of r3, draw=blue, minimum size = 20mm]{$a_{3s}$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   148
		\draw[->,line width=0.2mm] (r3)--(rns) node [above, midway] {$\simp'$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   149
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   150
		\node (rnn) [right = of rns, minimum size = 1mm]{};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   151
		\draw[->, dashed] (rns)--(rnn) node [above, midway] {$\ldots$};
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   152
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   153
	\end{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   154
	\caption{Regular expression size change during our $\blexersimp$ algorithm}\label{sulzShrinks}
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   155
\end{figure}
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   156
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   157
The picture means that in some cases their lexer (where they use $\simpsulz$ 
613
Chengsong
parents: 611
diff changeset
   158
as the simplification function)
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   159
will have a size explosion, causing the running time 
613
Chengsong
parents: 611
diff changeset
   160
of each derivative step to grow continuously (for example 
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   161
in \ref{SulzmannLuLexerTime}).
613
Chengsong
parents: 611
diff changeset
   162
They tested out the run time of their
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   163
lexer on particular examples such as $(a+b+ab)^*$
613
Chengsong
parents: 611
diff changeset
   164
and claimed that their algorithm is linear w.r.t to the input.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   165
With our mechanised proof, we avoid this type of unintentional
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   166
generalisation.
613
Chengsong
parents: 611
diff changeset
   167
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   168
Before delving into the details of the formalisation,
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   169
we are going to provide an overview of it in the following subsection.
613
Chengsong
parents: 611
diff changeset
   170
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   171
577
f47fc4840579 thesis chap2
Chengsong
parents: 576
diff changeset
   172
\subsection{Overview of the Proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   173
A high-level overview of the main components of the finiteness proof
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   174
is as follows:
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   175
\begin{figure}[H]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   176
	\begin{tikzpicture}[scale=1,font=\bf,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   177
		node/.style={
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   178
			rectangle,rounded corners=3mm,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   179
			ultra thick,draw=black!50,minimum height=18mm, 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   180
			minimum width=20mm,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   181
		top color=white,bottom color=black!20}]
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   182
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   183
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   184
		\node (0) at (-5,0) 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   185
			[node, text width=1.8cm, text centered] 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   186
			{$\llbracket \bderssimp{a}{s} \rrbracket$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   187
		\node (A) at (0,0) 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   188
			[node,text width=1.6cm,  text centered] 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   189
			{$\llbracket \rderssimp{r}{s} \rrbracket_r$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   190
		\node (B) at (3,0) 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   191
			[node,text width=3.0cm, anchor=west, minimum width = 40mm] 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   192
			{$\llbracket \textit{ClosedForm}(r, s)\rrbracket_r$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   193
		\node (C) at (9.5,0) [node, minimum width=10mm] {$N_r$};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   194
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   195
		\draw [->,line width=0.5mm] (0) -- 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   196
			node [above,pos=0.45] {=} (A) node [below, pos = 0.45] {$(r = a \downarrow_r)$} (A); 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   197
		\draw [->,line width=0.5mm] (A) -- 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   198
			node [above,pos=0.35] {$\quad =\ldots=$} (B); 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   199
		\draw [->,line width=0.5mm] (B) -- 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   200
			node [above,pos=0.35] {$\quad \leq \ldots \leq$} (C); 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   201
	\end{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   202
	%\caption{
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   203
\end{figure}
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   204
\noindent
577
f47fc4840579 thesis chap2
Chengsong
parents: 576
diff changeset
   205
We explain the steps one by one:
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   206
\begin{itemize}
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   207
	\item
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   208
		We first introduce the operations such as 
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   209
		derivatives, simplification, size calculation, etc.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   210
		associated with $\rrexp$s, which we have introduced
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   211
		in chapter \ref{Bitcoded2}.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   212
		The operations on $\rrexp$s are identical to those on
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   213
		annotated regular expressions except that they dispense with
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   214
		bitcodes. This means that all proofs about size of $\rrexp$s will apply to
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   215
		annotated regular expressions, because the size of a regular
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   216
		expression is independent of the bitcodes.
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   217
	\item
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   218
		We prove that $\rderssimp{r}{s} = \textit{ClosedForm}(r, s)$,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   219
		where $\textit{ClosedForm}(r, s)$ is entirely 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   220
		given as the derivatives of their children regular 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   221
		expressions.
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   222
		We call the right-hand-side the \emph{Closed Form}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   223
		of the derivative $\rderssimp{r}{s}$.
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
   224
	\item
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   225
		Formally we give an estimate of 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   226
		$\llbracket \textit{ClosedForm}(r, s) \rrbracket_r$.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   227
		The key observation is that $\distinctBy$'s output is
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   228
		a list with a constant length bound.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   229
\end{itemize}
594
Chengsong
parents: 593
diff changeset
   230
We will expand on these steps in the next sections.\\
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   231
613
Chengsong
parents: 611
diff changeset
   232
\section{The $\textit{Rrexp}$ Datatype}
594
Chengsong
parents: 593
diff changeset
   233
The first step is to define 
Chengsong
parents: 593
diff changeset
   234
$\textit{rrexp}$s.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   235
They are annotated regular expressions without bitcodes,
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   236
allowing a more convenient size bound proof.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   237
%Of course, the bits which encode the lexing information 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   238
%would grow linearly with respect 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   239
%to the input, which should be taken into accounte when we wish to tackle the runtime complexity.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   240
%But for the sake of the structural size 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   241
%we can safely ignore them.\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   242
The datatype 
594
Chengsong
parents: 593
diff changeset
   243
definition of the $\rrexp$, called
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   244
\emph{r-regular expressions},
594
Chengsong
parents: 593
diff changeset
   245
was initially defined in \ref{rrexpDef}.
Chengsong
parents: 593
diff changeset
   246
The reason for the prefix $r$ is
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   247
to make a distinction  
594
Chengsong
parents: 593
diff changeset
   248
with basic regular expressions.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   249
We give here again the definition of $\rrexp$.
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   250
\[			\rrexp ::=   \RZERO \mid  \RONE
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   251
	\mid  \RCHAR{c}  
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   252
	\mid  \RSEQ{r_1}{r_2}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   253
	\mid  \RALTS{rs}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   254
	\mid \RSTAR{r}        
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   255
\]
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   256
The size of an r-regular expression is
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   257
written $\llbracket r\rrbracket_r$, 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   258
whose definition mirrors that of an annotated regular expression. 
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   259
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   260
	\begin{tabular}{lcl}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   261
		$\llbracket _{bs}\ONE \rrbracket_r$ & $\dn$ & $1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   262
		$\llbracket \ZERO \rrbracket_r$ & $\dn$ & $1$ \\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   263
		$\llbracket _{bs} r_1 \cdot r_2 \rrbracket_r$ & $\dn$ & $\llbracket r_1 \rrbracket_r + \llbracket r_2 \rrbracket_r + 1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   264
		$\llbracket _{bs}\mathbf{c} \rrbracket_r $ & $\dn$ & $1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   265
		$\llbracket _{bs}\sum as \rrbracket_r $ & $\dn$ & $\map \; (\llbracket \_ \rrbracket_r)\; as   + 1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   266
		$\llbracket _{bs} a^* \rrbracket_r $ & $\dn$ & $\llbracket a \rrbracket_r + 1$.
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   267
	\end{tabular}
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   268
\end{center}
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   269
\noindent
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   270
The $r$ in the subscript of $\llbracket \rrbracket_r$ is to 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   271
differentiate with the same operation for annotated regular expressions.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   272
Similar subscripts will be added for operations like $\rerase{}$:
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   273
\begin{center}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   274
	\begin{tabular}{lcl}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   275
		$\rerase{\ZERO}$ & $\dn$ & $\RZERO$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   276
		$\rerase{_{bs}\ONE}$ & $\dn$ & $\RONE$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   277
		$\rerase{_{bs}\mathbf{c}}$ & $\dn$ & $\RCHAR{c}$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   278
		$\rerase{_{bs}r_1\cdot r_2}$ & $\dn$ & $\RSEQ{\rerase{r_1}}{\rerase{r_2}}$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   279
		$\rerase{_{bs}\sum as}$ & $\dn$ & $\RALTS{\map \; \rerase{\_} \; as}$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   280
		$\rerase{_{bs} a ^*}$ & $\dn$ & $\rerase{a} ^*$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   281
	\end{tabular}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   282
\end{center}
594
Chengsong
parents: 593
diff changeset
   283
613
Chengsong
parents: 611
diff changeset
   284
\subsection{Why a New Datatype?}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   285
The reason we
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   286
define a new datatype is that 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   287
the $\erase$ function 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   288
does not preserve the structure of annotated
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   289
regular expressions.
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   290
We initially started by using 
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   291
plain regular expressions and tried to prove
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   292
lemma \ref{rsizeAsize},
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   293
however the $\erase$ function messes with the structure of the 
594
Chengsong
parents: 593
diff changeset
   294
annotated regular expression.
Chengsong
parents: 593
diff changeset
   295
The $+$ constructor
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   296
of basic regular expressions is only binary, whereas $\sum$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   297
takes a list. Therefore we need to convert between
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   298
annotated and normal regular expressions as follows:
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   299
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   300
	\begin{tabular}{lcl}
594
Chengsong
parents: 593
diff changeset
   301
		$\erase \; _{bs}\sum [] $ & $\dn$ & $\ZERO$\\
Chengsong
parents: 593
diff changeset
   302
		$\erase \; _{bs}\sum [a]$ & $\dn$ & $a$\\
Chengsong
parents: 593
diff changeset
   303
		$\erase \; _{bs}\sum a :: as$ & $\dn$ & $a + (\erase \; _{[]} \sum as)\quad \text{if $as$ length over 1}$
Chengsong
parents: 593
diff changeset
   304
	\end{tabular}
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
   305
\end{center}
594
Chengsong
parents: 593
diff changeset
   306
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   307
As can be seen, alternative regular expressions with an empty argument list
594
Chengsong
parents: 593
diff changeset
   308
will be turned into a $\ZERO$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   309
The singleton alternative $\sum [r]$ becomes $r$ during the
594
Chengsong
parents: 593
diff changeset
   310
$\erase$ function.
Chengsong
parents: 593
diff changeset
   311
The  annotated regular expression $\sum[a, b, c]$ would turn into
Chengsong
parents: 593
diff changeset
   312
$(a+(b+c))$.
Chengsong
parents: 593
diff changeset
   313
All these operations change the size and structure of
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   314
an annotated regular expression, adding unnecessary 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   315
complexities to the size bound proof.
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   316
613
Chengsong
parents: 611
diff changeset
   317
For example, if we define the size of a basic plain regular expression 
594
Chengsong
parents: 593
diff changeset
   318
in the usual way,
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   319
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   320
	\begin{tabular}{lcl}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   321
		$\llbracket \ONE \rrbracket_p$ & $\dn$ & $1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   322
		$\llbracket \ZERO \rrbracket_p$ & $\dn$ & $1$ \\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   323
		$\llbracket r_1 \cdot r_2 \rrbracket_p$ & $\dn$ & $\llbracket r_1 \rrbracket_p + \llbracket r_2 \rrbracket_p + 1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   324
		$\llbracket \mathbf{c} \rrbracket_p $ & $\dn$ & $1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   325
		$\llbracket r_1 \cdot r_2 \rrbracket_p $ & $\dn$ & $\llbracket r_1 \rrbracket_p \; + \llbracket r_2 \rrbracket_p + 1$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   326
		$\llbracket a^* \rrbracket_p $ & $\dn$ & $\llbracket a \rrbracket_p + 1$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   327
	\end{tabular}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   328
\end{center}
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   329
\noindent
594
Chengsong
parents: 593
diff changeset
   330
Then the property
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   331
\begin{center}
613
Chengsong
parents: 611
diff changeset
   332
	$\llbracket a \rrbracket \stackrel{?}{=} \llbracket a_\downarrow \rrbracket_p$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   333
\end{center}
594
Chengsong
parents: 593
diff changeset
   334
does not hold.
613
Chengsong
parents: 611
diff changeset
   335
With $\textit{rerase}$, however, 
Chengsong
parents: 611
diff changeset
   336
only the bitcodes are thrown away.
Chengsong
parents: 611
diff changeset
   337
Everything about the structure remains intact.
Chengsong
parents: 611
diff changeset
   338
Therefore it does not change the size
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   339
of an annotated regular expression and we have:
613
Chengsong
parents: 611
diff changeset
   340
\begin{lemma}\label{rsizeAsize}
Chengsong
parents: 611
diff changeset
   341
	$\rsize{\rerase a} = \asize a$
Chengsong
parents: 611
diff changeset
   342
\end{lemma}
Chengsong
parents: 611
diff changeset
   343
\begin{proof}
Chengsong
parents: 611
diff changeset
   344
	By routine structural induction on $a$.
Chengsong
parents: 611
diff changeset
   345
\end{proof}
Chengsong
parents: 611
diff changeset
   346
\noindent
594
Chengsong
parents: 593
diff changeset
   347
One might be able to prove an inequality such as
Chengsong
parents: 593
diff changeset
   348
$\llbracket a \rrbracket  \leq \llbracket  a_\downarrow \rrbracket_p $
Chengsong
parents: 593
diff changeset
   349
and then estimate $\llbracket  a_\downarrow \rrbracket_p$,
Chengsong
parents: 593
diff changeset
   350
but we found our approach more straightforward.\\
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   351
613
Chengsong
parents: 611
diff changeset
   352
\subsection{Functions for R-regular Expressions}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   353
The downside of our approach is that we need to redefine
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   354
several functions for $\rrexp$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   355
In this section we shall define the r-regular expression version
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   356
of $\bder$, and $\textit{bsimp}$ related functions.
613
Chengsong
parents: 611
diff changeset
   357
We use $r$ as the prefix or subscript to differentiate
Chengsong
parents: 611
diff changeset
   358
with the bitcoded version.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   359
%For example,$\backslash_r$, $\rdistincts$, and $\rsimp$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   360
%as opposed to $\backslash$, $\distinctBy$, and $\bsimp$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   361
%As promised, they are much simpler than their bitcoded counterparts.
613
Chengsong
parents: 611
diff changeset
   362
%The operations on r-regular expressions are 
Chengsong
parents: 611
diff changeset
   363
%almost identical to those of the annotated regular expressions,
Chengsong
parents: 611
diff changeset
   364
%except that no bitcodes are used. For example,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   365
The derivative operation for an r-regular expression is\\
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   366
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   367
	\begin{tabular}{@{}lcl@{}}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   368
		$(\ZERO)\,\backslash_r c$ & $\dn$ & $\ZERO$\\  
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   369
		$(\ONE)\,\backslash_r c$ & $\dn$ &
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   370
		$\textit{if}\;c=d\; \;\textit{then}\;
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   371
		\ONE\;\textit{else}\;\ZERO$\\  
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   372
		$(\sum \;\textit{rs})\,\backslash_r c$ & $\dn$ &
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   373
		$\sum\;(\textit{map} \; (\_\backslash_r c) \; rs )$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   374
		$(r_1\cdot r_2)\,\backslash_r c$ & $\dn$ &
594
Chengsong
parents: 593
diff changeset
   375
		$\textit{if}\;(\textit{rnullable}\,r_1)$\\
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   376
						 & &$\textit{then}\;\sum\,[(r_1\,\backslash_r c)\cdot\,r_2,$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   377
						 & &$\phantom{\textit{then},\;\sum\,}((r_2\,\backslash_r c))]$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   378
						 & &$\textit{else}\;\,(r_1\,\backslash_r c)\cdot r_2$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   379
		$(r^*)\,\backslash_r c$ & $\dn$ &
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   380
		$( r\,\backslash_r c)\cdot
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   381
		(_{[]}r^*))$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   382
	\end{tabular}    
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   383
\end{center}  
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   384
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   385
where we omit the definition of $\textit{rnullable}$.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   386
The generalisation from the derivatives w.r.t a character to
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   387
derivatives w.r.t strings is given as
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   388
\begin{center}
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   389
	\begin{tabular}{lcl}
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   390
		$r \backslash_{rs} []$ & $\dn$ & $r$\\
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   391
		$r \backslash_{rs} c::s$ & $\dn$ & $(r\backslash_r c) \backslash_{rs} s$
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   392
	\end{tabular}
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   393
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   394
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   395
The function $\distinctBy$ for r-regular expressions does not need 
594
Chengsong
parents: 593
diff changeset
   396
a function checking equivalence because
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   397
there are no bit annotations.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   398
Therefore we have
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   399
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   400
	\begin{tabular}{lcl}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   401
		$\rdistinct{[]}{rset} $ & $\dn$ & $[]$\\
594
Chengsong
parents: 593
diff changeset
   402
		$\rdistinct{r :: rs}{rset}$ & $\dn$ & 
Chengsong
parents: 593
diff changeset
   403
		$\textit{if}(r \in \textit{rset}) \; \textit{then} \; \rdistinct{rs}{rset}$\\
Chengsong
parents: 593
diff changeset
   404
					    &        & $\textit{else}\; \;
Chengsong
parents: 593
diff changeset
   405
					    r::\rdistinct{rs}{(rset \cup \{r\})}$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   406
	\end{tabular}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   407
\end{center}
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   408
%TODO: definition of rsimp (maybe only the alternative clause)
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   409
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   410
%We would like to make clear
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   411
%a difference between our $\rdistincts$ and
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   412
%the Isabelle $\textit {distinct}$ predicate.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   413
%In Isabelle $\textit{distinct}$ is a function that returns a boolean
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   414
%rather than a list.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   415
%It tests if all the elements of a list are unique.\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   416
With $\textit{rdistinct}$ in place,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   417
the flatten function for $\rrexp$ is as follows:
595
Chengsong
parents: 594
diff changeset
   418
 \begin{center}
Chengsong
parents: 594
diff changeset
   419
  \begin{tabular}{@{}lcl@{}}
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   420
  $\textit{rflts} \; (\sum \textit{as}) :: \textit{as'}$ & $\dn$ & $as \; @ \; \textit{rflts} \; as' $ \\
595
Chengsong
parents: 594
diff changeset
   421
  $\textit{rflts} \; \ZERO :: as'$ & $\dn$ & $ \textit{rflts} \;  \textit{as'} $ \\
Chengsong
parents: 594
diff changeset
   422
    $\textit{rflts} \; a :: as'$ & $\dn$ & $a :: \textit{rflts} \; \textit{as'}$ \quad(otherwise) 
Chengsong
parents: 594
diff changeset
   423
\end{tabular}    
Chengsong
parents: 594
diff changeset
   424
\end{center}  
Chengsong
parents: 594
diff changeset
   425
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   426
The function 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   427
$\rsimpalts$ corresponds to $\textit{bsimp}_{ALTS}$:
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   428
\begin{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   429
  \begin{tabular}{@{}lcl@{}}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   430
	  $\rsimpalts \;\; nil$ & $\dn$ & $\RZERO$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   431
	  $\rsimpalts \;\; r::nil$ & $\dn$ & $r$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   432
	  $\rsimpalts \;\; rs$ & $\dn$ & $\sum rs$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   433
\end{tabular}    
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   434
\end{center}  
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   435
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   436
Similarly, we have $\rsimpseq$ which corresponds to $\textit{bsimp}_{SEQ}$:
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   437
\begin{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   438
  \begin{tabular}{@{}lcl@{}}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   439
	  $\rsimpseq \;\; \RZERO \; \_ $ &   $=$ &   $\RZERO$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   440
	  $\rsimpseq \;\; \_ \; \RZERO $ &   $=$ &   $\RZERO$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   441
	  $\rsimpseq \;\; \RONE \cdot r_2$ & $\dn$ & $r_2$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   442
	  $\rsimpseq \;\; r_1 r_2$ & $\dn$ & $r_1 \cdot r_2$\\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   443
\end{tabular}    
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   444
\end{center}  
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   445
and get $\textit{rsimp}$ and $\rderssimp{\_}{\_}$:
595
Chengsong
parents: 594
diff changeset
   446
\begin{center}
Chengsong
parents: 594
diff changeset
   447
  \begin{tabular}{@{}lcl@{}}
Chengsong
parents: 594
diff changeset
   448
   
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   449
	  $\textit{rsimp} \; (r_1\cdot r_2)$ & $\dn$ & $ \textit{rsimp}_{SEQ} \; bs \;(\textit{rsimp} \; r_1) \; (\textit{rsimp}  \; r_2)  $ \\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   450
	  $\textit{rsimp} \; (_{bs}\sum \textit{rs})$ & $\dn$ & $\textit{rsimp}_{ALTS} \; \textit{bs} \; (\textit{rdistinct} \; ( \textit{rflts} ( \textit{map} \; rsimp \; rs)) \; \rerases \; \varnothing) $ \\
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   451
   $\textit{rsimp} \; r$ & $\dn$ & $\textit{r} \qquad \textit{otherwise}$   
595
Chengsong
parents: 594
diff changeset
   452
\end{tabular}    
Chengsong
parents: 594
diff changeset
   453
\end{center} 
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   454
\begin{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   455
	\begin{tabular}{@{}lcl@{}}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   456
		$r\backslash_{rsimp} \, c$ & $\dn$ & $\rsimp \; (r\backslash_r \, c)$
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   457
	\end{tabular}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   458
\end{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   459
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   460
\begin{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   461
	\begin{tabular}{@{}lcl@{}}
601
Chengsong
parents: 596
diff changeset
   462
$r \backslash_{rsimps} \; \; c\!::\!s $ & $\dn$ & $(r \backslash_{rsimp}\, c) \backslash_{rsimps}\, s$ \\
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   463
$r \backslash_{rsimps} [\,] $ & $\dn$ & $r$
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   464
	\end{tabular}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   465
\end{center}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   466
\noindent
601
Chengsong
parents: 596
diff changeset
   467
We do not define an r-regular expression version of $\blexersimp$,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   468
as our proof does not depend on it.
613
Chengsong
parents: 611
diff changeset
   469
Now we are ready to introduce how r-regular expressions allow
Chengsong
parents: 611
diff changeset
   470
us to prove the size bound on bitcoded regular expressions.
Chengsong
parents: 611
diff changeset
   471
Chengsong
parents: 611
diff changeset
   472
\subsection{Using R-regular Expressions to Bound Bit-coded Regular Expressions}
Chengsong
parents: 611
diff changeset
   473
Everything about the size of annotated regular expressions after the application
Chengsong
parents: 611
diff changeset
   474
of function $\bsimp$ and $\backslash_{simps}$
Chengsong
parents: 611
diff changeset
   475
can be calculated via the size of r-regular expressions after the application
Chengsong
parents: 611
diff changeset
   476
of $\rsimp$ and $\backslash_{rsimps}$:
564
Chengsong
parents: 562
diff changeset
   477
\begin{lemma}\label{sizeRelations}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   478
	The following two equalities hold:
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   479
	\begin{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   480
		\item
601
Chengsong
parents: 596
diff changeset
   481
			$\asize{\bsimps \; a} = \rsize{\rsimp{ \rerase{a}}}$
554
Chengsong
parents: 553
diff changeset
   482
		\item
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   483
			$\asize{\bderssimp{a}{s}} =  \rsize{\rderssimp{\rerase{a}}{s}}$
554
Chengsong
parents: 553
diff changeset
   484
	\end{itemize}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   485
\end{lemma}
601
Chengsong
parents: 596
diff changeset
   486
\begin{proof}
Chengsong
parents: 596
diff changeset
   487
	The first part is by induction on the inductive cases
Chengsong
parents: 596
diff changeset
   488
	of $\textit{bsimp}$.
Chengsong
parents: 596
diff changeset
   489
	The second part is by induction on the string $s$,
Chengsong
parents: 596
diff changeset
   490
	where the inductive step follows from part one.
Chengsong
parents: 596
diff changeset
   491
\end{proof}
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   492
\noindent
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   493
With lemma \ref{sizeRelations},
601
Chengsong
parents: 596
diff changeset
   494
we will be able to focus on 
Chengsong
parents: 596
diff changeset
   495
estimating only
Chengsong
parents: 596
diff changeset
   496
$\rsize{\rderssimp{\rerase{a}}{s}}$
Chengsong
parents: 596
diff changeset
   497
in later parts because
Chengsong
parents: 596
diff changeset
   498
\begin{center}
Chengsong
parents: 596
diff changeset
   499
	$\rsize{\rderssimp{\rerase{a}}{s}} \leq N_r \quad$
Chengsong
parents: 596
diff changeset
   500
	implies
Chengsong
parents: 596
diff changeset
   501
	$\quad \llbracket a \backslash_{bsimps} s \rrbracket \leq N_r$.
Chengsong
parents: 596
diff changeset
   502
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   503
%From now on we 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   504
%Unless stated otherwise in the rest of this 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   505
%chapter all regular expressions without
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   506
%bitcodes are seen as r-regular expressions ($\rrexp$s).
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   507
%For the binary alternative r-regular expression $\RALTS{[r_1, r_2]}$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   508
%we use the notation $r_1 + r_2$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   509
%for brevity.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   510
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   511
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   512
%-----------------------------------
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   513
%	SUB SECTION ROADMAP RREXP BOUND
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
   514
%-----------------------------------
553
0f00d440f484 more changes
Chengsong
parents: 543
diff changeset
   515
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   516
%\subsection{Roadmap to a Bound for $\textit{Rrexp}$}
553
0f00d440f484 more changes
Chengsong
parents: 543
diff changeset
   517
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   518
%The way we obtain the bound for $\rrexp$s is by two steps:
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   519
%\begin{itemize}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   520
%	\item
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   521
%		First, we rewrite $r\backslash s$ into something else that is easier
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   522
%		to bound. This step is crucial for the inductive case 
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   523
%		$r_1 \cdot r_2$ and $r^*$, where the derivative can grow and bloat in a wild way,
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   524
%		but after simplification, they will always be equal or smaller to a form consisting of an alternative
596
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   525
%		list of regular expressions $f \; (g\; (\sum rs))$ with some functions applied to it, where each element will be distinct after the function application.
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   526
%	\item
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   527
%		Then, for such a sum  list of regular expressions $f\; (g\; (\sum rs))$, we can control its size
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   528
%		by estimation, since $\distinctBy$ and $\flts$ are well-behaved and working together would only 
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   529
%		reduce the size of a regular expression, not adding to it.
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   530
%\end{itemize}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   531
%
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   532
%\section{Step One: Closed Forms}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   533
%We transform the function application $\rderssimp{r}{s}$
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   534
%into an equivalent 
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   535
%form $f\; (g \; (\sum rs))$.
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   536
%The functions $f$ and $g$ can be anything from $\flts$, $\distinctBy$ and other helper functions from $\bsimp{\_}$.
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   537
%This way we get a different but equivalent way of expressing : $r\backslash s = f \; (g\; (\sum rs))$, we call the
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   538
%right hand side the "closed form" of $r\backslash s$.
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   539
%
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   540
%\begin{quote}\it
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   541
%	Claim: For regular expressions $r_1 \cdot r_2$, we claim that
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   542
%\end{quote}
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   543
%\noindent
b306628a0eab more chap 56
Chengsong
parents: 595
diff changeset
   544
%We explain in detail how we reached those claims.
601
Chengsong
parents: 596
diff changeset
   545
If we attempt to prove 
Chengsong
parents: 596
diff changeset
   546
\begin{center}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   547
	$\forall r. \; \exists N_r.\;\; s.t. \llbracket r\backslash_{rsimps} s \rrbracket_r \leq N_r$
601
Chengsong
parents: 596
diff changeset
   548
\end{center}
Chengsong
parents: 596
diff changeset
   549
using a naive induction on the structure of $r$,
Chengsong
parents: 596
diff changeset
   550
then we are stuck at the inductive cases such as
Chengsong
parents: 596
diff changeset
   551
$r_1\cdot r_2$.
Chengsong
parents: 596
diff changeset
   552
The inductive hypotheses are:
Chengsong
parents: 596
diff changeset
   553
\begin{center}
Chengsong
parents: 596
diff changeset
   554
	1: $\text{for } r_1, \text{there exists } N_{r_1}.\;\; s.t. 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   555
	\;\;\forall s.  \llbracket r_1 \backslash_{rsimps} s \rrbracket_r \leq N_{r_1}. $\\
601
Chengsong
parents: 596
diff changeset
   556
	2: $\text{for } r_2, \text{there exists } N_{r_2}.\;\; s.t. 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   557
	\;\; \forall s. \llbracket r_2 \backslash_{rsimps} s \rrbracket_r \leq N_{r_2}. $
601
Chengsong
parents: 596
diff changeset
   558
\end{center}
Chengsong
parents: 596
diff changeset
   559
The inductive step to prove would be 
Chengsong
parents: 596
diff changeset
   560
\begin{center}
Chengsong
parents: 596
diff changeset
   561
	$\text{there exists } N_{r_1\cdot r_2}. \;\; s.t. \forall s. 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   562
	\llbracket (r_1 \cdot r_2) \backslash_{rsimps} s \rrbracket_r \leq N_{r_1\cdot r_2}.$
601
Chengsong
parents: 596
diff changeset
   563
\end{center}
Chengsong
parents: 596
diff changeset
   564
The problem is that it is not clear what 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   565
$(r_1\cdot r_2) \backslash_{rsimps} s$ looks like,
601
Chengsong
parents: 596
diff changeset
   566
and therefore $N_{r_1}$ and $N_{r_2}$ in the
Chengsong
parents: 596
diff changeset
   567
inductive hypotheses cannot be directly used.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   568
%We have already seen that $(r_1 \cdot r_2)\backslash s$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   569
%and $(r^*)\backslash s$ can grow in a wild way.
613
Chengsong
parents: 611
diff changeset
   570
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   571
The point however, is that they will be equivalent to a list of
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   572
terms $\sum rs$, where each term in $rs$ will
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   573
be made of $r_1 \backslash s' $, $r_2\backslash s'$,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   574
and $r \backslash s'$ with $s' \in \textit{SubString} \; s$ (which stands
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   575
for the set of substrings of $s$).
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   576
The list $\sum rs$ will then be de-duplicated by $\textit{rdistinct}$
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   577
in the simplification, which prevents the $rs$ from growing indefinitely.
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   578
613
Chengsong
parents: 611
diff changeset
   579
Based on this idea, we develop a proof in two steps.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   580
First, we show the below equality (where
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   581
$f$ and $g$ are functions that do not increase the size of the input)
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   582
\begin{center}
613
Chengsong
parents: 611
diff changeset
   583
$r\backslash_{rsimps} s = f\; (\textit{rdistinct} \; (g\; \sum rs))$,
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   584
\end{center}
613
Chengsong
parents: 611
diff changeset
   585
where $r = r_1 \cdot r_2$ or $r = r_0^*$ and so on.
Chengsong
parents: 611
diff changeset
   586
For example, for $r_1 \cdot r_2$ we have the equality as
Chengsong
parents: 611
diff changeset
   587
	\begin{center}
Chengsong
parents: 611
diff changeset
   588
		$ \rderssimp{r_1 \cdot r_2}{s} = 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   589
		\rsimp{(\sum (r_1 \backslash s \cdot r_2 ) \; :: \;(\map \; \rderssimp{r_2}{\_} \;(\vsuf{s}{r_1})))}$
613
Chengsong
parents: 611
diff changeset
   590
	\end{center}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   591
We call the right-hand-side the 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   592
\emph{Closed Form} of $(r_1 \cdot r_2)\backslash_{rsimps} s$.
613
Chengsong
parents: 611
diff changeset
   593
Second, we will bound the closed form of r-regular expressions
Chengsong
parents: 611
diff changeset
   594
using some estimation techniques
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   595
and then apply
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   596
lemma \ref{sizeRelations} to show that the bitcoded regular expressions
613
Chengsong
parents: 611
diff changeset
   597
in our $\blexersimp$ are finitely bounded.
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   598
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   599
We will describe in detail the first step of the proof
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   600
in the next section.
613
Chengsong
parents: 611
diff changeset
   601
Chengsong
parents: 611
diff changeset
   602
\section{Closed Forms}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   603
In this section we introduce in detail
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   604
how to express the string derivatives
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   605
of regular expressions (i.e. $r \backslash_r s$ where $s$ is a string
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   606
rather than a single character) in a different way than 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   607
our previous definition.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   608
In previous chapters, the derivative of a 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   609
regular expression $r$ w.r.t a string $s$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   610
was recursively defined on the string:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   611
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   612
	$r \backslash_s (c::s) \dn (r \backslash c) \backslash_s s$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   613
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   614
The problem is that 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   615
this definition does not provide much information
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   616
on what $r \backslash_s s$ looks like.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   617
If we are interested in the size of a derivative like 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   618
$(r_1 \cdot r_2)\backslash s$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   619
we have to somehow get a more concrete form to begin.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   620
We call such more concrete representations the ``closed forms'' of
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   621
string derivatives as opposed to their original definitions.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   622
The terminology ``closed form'' is borrowed from mathematics,
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   623
which usually describe expressions that are solely comprised of finitely many
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   624
well-known and easy-to-compute operations such as 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   625
additions, multiplications, and exponential functions.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   626
613
Chengsong
parents: 611
diff changeset
   627
We start by proving some basic identities
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   628
involving the simplification functions for r-regular expressions.
613
Chengsong
parents: 611
diff changeset
   629
After that we introduce the rewrite relations
Chengsong
parents: 611
diff changeset
   630
$\rightsquigarrow_h$, $\rightsquigarrow^*_{scf}$
Chengsong
parents: 611
diff changeset
   631
$\rightsquigarrow_f$ and $\rightsquigarrow_g$.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   632
These relations involve similar techniques as in chapter \ref{Bitcoded2}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   633
for annotated regular expressions.
613
Chengsong
parents: 611
diff changeset
   634
Finally, we use these identities to establish the
Chengsong
parents: 611
diff changeset
   635
closed forms of the alternative regular expression,
Chengsong
parents: 611
diff changeset
   636
the sequence regular expression, and the star regular expression.
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   637
%$r_1\cdot r_2$, $r^*$ and $\sum rs$.
601
Chengsong
parents: 596
diff changeset
   638
Chengsong
parents: 596
diff changeset
   639
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   640
613
Chengsong
parents: 611
diff changeset
   641
\subsection{Some Basic Identities}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   642
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   643
In what follows we will often convert between lists
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   644
and sets.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   645
We use Isabelle's $set$ to refer to the 
611
Chengsong
parents: 610
diff changeset
   646
function that converts a list $rs$ to the set
Chengsong
parents: 610
diff changeset
   647
containing all the elements in $rs$.
Chengsong
parents: 610
diff changeset
   648
\subsubsection{$\textit{rdistinct}$'s Does the Job of De-duplication}
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   649
The $\textit{rdistinct}$ function, as its name suggests, will
613
Chengsong
parents: 611
diff changeset
   650
de-duplicate an r-regular expression list.
Chengsong
parents: 611
diff changeset
   651
It will also remove any elements that 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   652
are already in the accumulator set.
555
Chengsong
parents: 554
diff changeset
   653
\begin{lemma}\label{rdistinctDoesTheJob}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   654
	%The function $\textit{rdistinct}$ satisfies the following
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   655
	%properties:
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   656
	Assume we have the predicate $\textit{isDistinct}$\footnote{We omit its
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   657
	recursive definition here. Its Isabelle counterpart would be $\textit{distinct}$.} 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   658
	for testing
613
Chengsong
parents: 611
diff changeset
   659
	whether a list's elements are unique. Then the following
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   660
	properties about $\textit{rdistinct}$ hold:
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   661
	\begin{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   662
		\item
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   663
			If $a \in acc$ then $a \notin (\rdistinct{rs}{acc})$.
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   664
		\item
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   665
			%If list $rs'$ is the result of $\rdistinct{rs}{acc}$,
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   666
			$\textit{isDistinct} \;\;\; (\rdistinct{rs}{acc})$.
555
Chengsong
parents: 554
diff changeset
   667
		\item
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   668
			$\textit{set} \; (\rdistinct{rs}{acc}) 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   669
			= (\textit{set} \; rs) - acc$
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   670
	\end{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   671
\end{lemma}
555
Chengsong
parents: 554
diff changeset
   672
\noindent
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   673
\begin{proof}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   674
	The first part is by an induction on $rs$.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   675
	The second and third parts can be proven by using the 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   676
	inductive cases of $\textit{rdistinct}$.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   677
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   678
\end{proof}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   679
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   680
\noindent
613
Chengsong
parents: 611
diff changeset
   681
%$\textit{rdistinct}$ will out all regular expression terms
Chengsong
parents: 611
diff changeset
   682
%that are in the accumulator, therefore 
Chengsong
parents: 611
diff changeset
   683
Concatenating a list $rs_a$ at the front of another
Chengsong
parents: 611
diff changeset
   684
list $rs$ whose elements are all from the accumulator, and then calling $\textit{rdistinct}$
Chengsong
parents: 611
diff changeset
   685
on the merged list, the output will be as if we had called $\textit{rdistinct}$
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   686
without the prepending of $rs$:
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   687
\begin{lemma}\label{rdistinctConcat}
554
Chengsong
parents: 553
diff changeset
   688
	The elements appearing in the accumulator will always be removed.
Chengsong
parents: 553
diff changeset
   689
	More precisely,
Chengsong
parents: 553
diff changeset
   690
	\begin{itemize}
Chengsong
parents: 553
diff changeset
   691
		\item
Chengsong
parents: 553
diff changeset
   692
			If $rs \subseteq rset$, then 
Chengsong
parents: 553
diff changeset
   693
			$\rdistinct{rs@rsa }{acc} = \rdistinct{rsa }{acc}$.
Chengsong
parents: 553
diff changeset
   694
		\item
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   695
			More generally, if $a \in rset$ and $\rdistinct{rs}{\{a\}} = []$,
554
Chengsong
parents: 553
diff changeset
   696
			then $\rdistinct{(rs @ rs')}{rset} = \rdistinct{rs'}{rset}$
Chengsong
parents: 553
diff changeset
   697
	\end{itemize}
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   698
\end{lemma}
554
Chengsong
parents: 553
diff changeset
   699
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   700
\begin{proof}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
   701
	By induction on $rs$ and using \ref{rdistinctDoesTheJob}.
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   702
\end{proof}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   703
\noindent
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   704
On the other hand, if an element $r$ does not appear in the input list waiting to be deduplicated,
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   705
then expanding the accumulator to include that element will not cause the output list to change:
611
Chengsong
parents: 610
diff changeset
   706
\begin{lemma}\label{rdistinctOnDistinct}
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   707
	The accumulator can be augmented to include elements not appearing in the input list,
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   708
	and the output will not change.	
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   709
	\begin{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   710
		\item
611
Chengsong
parents: 610
diff changeset
   711
			If $r \notin rs$, then $\rdistinct{rs}{acc} = \rdistinct{rs}{(\{r\} \cup acc)}$.
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   712
		\item
611
Chengsong
parents: 610
diff changeset
   713
			Particularly, if $\;\;\textit{isDistinct} \; rs$, then we have\\
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   714
			\[ \rdistinct{rs}{\varnothing} = rs \]
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   715
	\end{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   716
\end{lemma}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   717
\begin{proof}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   718
	The first half is by induction on $rs$. The second half is a corollary of the first.
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   719
\end{proof}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   720
\noindent
611
Chengsong
parents: 610
diff changeset
   721
The function $\textit{rdistinct}$ removes duplicates from anywhere in a list.
Chengsong
parents: 610
diff changeset
   722
Despite being seemingly obvious, 
Chengsong
parents: 610
diff changeset
   723
the induction technique is not as straightforward.
554
Chengsong
parents: 553
diff changeset
   724
\begin{lemma}\label{distinctRemovesMiddle}
Chengsong
parents: 553
diff changeset
   725
	The two properties hold if $r \in rs$:
Chengsong
parents: 553
diff changeset
   726
	\begin{itemize}
Chengsong
parents: 553
diff changeset
   727
		\item
555
Chengsong
parents: 554
diff changeset
   728
			$\rdistinct{rs}{rset} = \rdistinct{(rs @ [r])}{rset}$\\
Chengsong
parents: 554
diff changeset
   729
			and\\
554
Chengsong
parents: 553
diff changeset
   730
			$\rdistinct{(ab :: rs @ [ab])}{rset'} = \rdistinct{(ab :: rs)}{rset'}$
Chengsong
parents: 553
diff changeset
   731
		\item
555
Chengsong
parents: 554
diff changeset
   732
			$\rdistinct{ (rs @ rs') }{rset} = \rdistinct{rs @ [r] @ rs'}{rset}$\\
Chengsong
parents: 554
diff changeset
   733
			and\\
554
Chengsong
parents: 553
diff changeset
   734
			$\rdistinct{(ab :: rs @ [ab] @ rs'')}{rset'} = 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   735
			\rdistinct{(ab :: rs @ rs'')}{rset'}$
554
Chengsong
parents: 553
diff changeset
   736
	\end{itemize}
Chengsong
parents: 553
diff changeset
   737
\end{lemma}
Chengsong
parents: 553
diff changeset
   738
\noindent
Chengsong
parents: 553
diff changeset
   739
\begin{proof}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   740
	By induction on $rs$. All other variables are allowed to be arbitrary.
611
Chengsong
parents: 610
diff changeset
   741
	The second part of the lemma requires the first.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   742
	Note that for each part, the two sub-propositions need to be proven 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   743
	at the same time,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
   744
	so that the induction goes through.
554
Chengsong
parents: 553
diff changeset
   745
\end{proof}
555
Chengsong
parents: 554
diff changeset
   746
\noindent
611
Chengsong
parents: 610
diff changeset
   747
This allows us to prove a few more equivalence relations involving 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   748
$\textit{rdistinct}$ (they will be useful later):
555
Chengsong
parents: 554
diff changeset
   749
\begin{lemma}\label{rdistinctConcatGeneral}
611
Chengsong
parents: 610
diff changeset
   750
	\mbox{}
555
Chengsong
parents: 554
diff changeset
   751
	\begin{itemize}
Chengsong
parents: 554
diff changeset
   752
		\item
Chengsong
parents: 554
diff changeset
   753
			$\rdistinct{(rs @ rs')}{\varnothing} = \rdistinct{((\rdistinct{rs}{\varnothing})@ rs')}{\varnothing}$
Chengsong
parents: 554
diff changeset
   754
		\item
Chengsong
parents: 554
diff changeset
   755
			$\rdistinct{(rs @ rs')}{\varnothing} = \rdistinct{(\rdistinct{rs}{\varnothing} @ rs')}{\varnothing}$
Chengsong
parents: 554
diff changeset
   756
		\item
Chengsong
parents: 554
diff changeset
   757
			If $rset' \subseteq rset$, then $\rdistinct{rs}{rset} = 
Chengsong
parents: 554
diff changeset
   758
			\rdistinct{(\rdistinct{rs}{rset'})}{rset}$. As a corollary
Chengsong
parents: 554
diff changeset
   759
			of this,
Chengsong
parents: 554
diff changeset
   760
		\item
Chengsong
parents: 554
diff changeset
   761
			$\rdistinct{(rs @ rs')}{rset} = \rdistinct{
Chengsong
parents: 554
diff changeset
   762
			(\rdistinct{rs}{\varnothing}) @ rs')}{rset}$. This
Chengsong
parents: 554
diff changeset
   763
			gives another corollary use later:
Chengsong
parents: 554
diff changeset
   764
		\item
Chengsong
parents: 554
diff changeset
   765
			If $a \in rset$, then $\rdistinct{(rs @ rs')}{rset} = \rdistinct{
Chengsong
parents: 554
diff changeset
   766
			(\rdistinct{(a :: rs)}{\varnothing} @ rs')}{rset} $,
Chengsong
parents: 554
diff changeset
   767
Chengsong
parents: 554
diff changeset
   768
	\end{itemize}
Chengsong
parents: 554
diff changeset
   769
\end{lemma}
Chengsong
parents: 554
diff changeset
   770
\begin{proof}
Chengsong
parents: 554
diff changeset
   771
	By \ref{rdistinctDoesTheJob} and \ref{distinctRemovesMiddle}.
Chengsong
parents: 554
diff changeset
   772
\end{proof}
611
Chengsong
parents: 610
diff changeset
   773
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   774
The next lemma is a more general form of \ref{rdistinctConcat};
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   775
It says that
611
Chengsong
parents: 610
diff changeset
   776
$\textit{rdistinct}$ is composable w.r.t list concatenation:
Chengsong
parents: 610
diff changeset
   777
\begin{lemma}\label{distinctRdistinctAppend}
Chengsong
parents: 610
diff changeset
   778
			If $\;\; \textit{isDistinct} \; rs_1$, 
Chengsong
parents: 610
diff changeset
   779
			and $(set \; rs_1) \cap acc = \varnothing$,
Chengsong
parents: 610
diff changeset
   780
			then applying $\textit{rdistinct}$ on $rs_1 @ rs_a$ does not 
Chengsong
parents: 610
diff changeset
   781
			have an effect on $rs_1$:
Chengsong
parents: 610
diff changeset
   782
			\[\textit{rdistinct}\;  (rs_1 @ rsa)\;\, acc
Chengsong
parents: 610
diff changeset
   783
			= rs_1@(\textit{rdistinct} rsa \; (acc \cup rs_1))\]
Chengsong
parents: 610
diff changeset
   784
\end{lemma}
Chengsong
parents: 610
diff changeset
   785
\begin{proof}
Chengsong
parents: 610
diff changeset
   786
	By an induction on 
Chengsong
parents: 610
diff changeset
   787
	$rs_1$, where $rsa$ and $acc$ are allowed to be arbitrary.
Chengsong
parents: 610
diff changeset
   788
\end{proof}
Chengsong
parents: 610
diff changeset
   789
\noindent
Chengsong
parents: 610
diff changeset
   790
$\textit{rdistinct}$ needs to be applied only once, and 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   791
applying it multiple times does not make any difference:
611
Chengsong
parents: 610
diff changeset
   792
\begin{corollary}\label{distinctOnceEnough}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   793
	$\textit{rdistinct} \; (rs @ rsa) {} = \textit{rdistinct} \; ( (rdistinct \; 
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   794
	rs \; \{ \}) @ (\textit{rdistinct} \; rs_a \; (set \; rs)))$
611
Chengsong
parents: 610
diff changeset
   795
\end{corollary}
Chengsong
parents: 610
diff changeset
   796
\begin{proof}
Chengsong
parents: 610
diff changeset
   797
	By lemma \ref{distinctRdistinctAppend}.
Chengsong
parents: 610
diff changeset
   798
\end{proof}
555
Chengsong
parents: 554
diff changeset
   799
611
Chengsong
parents: 610
diff changeset
   800
\subsubsection{The Properties of $\textit{Rflts}$} 
Chengsong
parents: 610
diff changeset
   801
We give in this subsection some properties
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
   802
involving $\backslash_r$, $\backslash_{rsimps}$, $\textit{rflts}$ and 
611
Chengsong
parents: 610
diff changeset
   803
$\textit{rsimp}_{ALTS} $, together with any non-trivial lemmas that lead to them.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   804
These will be helpful in later closed-form proofs, when
611
Chengsong
parents: 610
diff changeset
   805
we want to transform derivative terms which have
Chengsong
parents: 610
diff changeset
   806
%the ways in which multiple functions involving
Chengsong
parents: 610
diff changeset
   807
%those are composed together
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   808
interleaving derivatives and simplifications applied to them.
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   809
611
Chengsong
parents: 610
diff changeset
   810
\noindent
Chengsong
parents: 610
diff changeset
   811
%When the function $\textit{Rflts}$ 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   812
%is applied to the concatenation of two lists; the output can be calculated by first applying the
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   813
%functions on two lists separately and then concatenating them together.
611
Chengsong
parents: 610
diff changeset
   814
$\textit{Rflts}$ is composable in terms of concatenation:
554
Chengsong
parents: 553
diff changeset
   815
\begin{lemma}\label{rfltsProps}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   816
	The function $\rflts$ has the properties below:\\
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   817
	\begin{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   818
		\item
554
Chengsong
parents: 553
diff changeset
   819
			$\rflts \; (rs_1 @ rs_2) = \rflts \; rs_1 @ \rflts \; rs_2$
Chengsong
parents: 553
diff changeset
   820
		\item
Chengsong
parents: 553
diff changeset
   821
			If $r \neq \RZERO$ and $\nexists rs_1. r = \RALTS{rs}_1$, then $\rflts \; (r::rs) = r :: \rflts \; rs$
Chengsong
parents: 553
diff changeset
   822
		\item
Chengsong
parents: 553
diff changeset
   823
			$\rflts \; (rs @ [\RZERO]) = \rflts \; rs$
Chengsong
parents: 553
diff changeset
   824
		\item
Chengsong
parents: 553
diff changeset
   825
			$\rflts \; (rs' @ [\RALTS{rs}]) = \rflts \; rs'@rs$
Chengsong
parents: 553
diff changeset
   826
		\item
Chengsong
parents: 553
diff changeset
   827
			$\rflts \; (rs @ [\RONE]) = \rflts \; rs @ [\RONE]$
Chengsong
parents: 553
diff changeset
   828
		\item
Chengsong
parents: 553
diff changeset
   829
			If $r \neq \RZERO$ and $\nexists rs'. r = \RALTS{rs'}$ then $\rflts \; (rs @ [r])
Chengsong
parents: 553
diff changeset
   830
			= (\rflts \; rs) @ [r]$
555
Chengsong
parents: 554
diff changeset
   831
		\item
Chengsong
parents: 554
diff changeset
   832
			If $r = \RALTS{rs}$ and $r \in rs'$ then for all $r_1 \in rs. 
Chengsong
parents: 554
diff changeset
   833
			r_1 \in \rflts \; rs'$.
Chengsong
parents: 554
diff changeset
   834
		\item
Chengsong
parents: 554
diff changeset
   835
			$\rflts \; (rs_a @ \RZERO :: rs_b) = \rflts \; (rs_a @ rs_b)$
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   836
	\end{itemize}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   837
\end{lemma}
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   838
\noindent
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   839
\begin{proof}
555
Chengsong
parents: 554
diff changeset
   840
	By induction on $rs_1$ in the first sub-lemma, and induction on $r$ in the second part,
Chengsong
parents: 554
diff changeset
   841
	and induction on $rs$, $rs'$, $rs$, $rs'$, $rs_a$ in the third, fourth, fifth, sixth and 
Chengsong
parents: 554
diff changeset
   842
	last sub-lemma.
543
b2bea5968b89 thesis_thys
Chengsong
parents: 532
diff changeset
   843
\end{proof}
611
Chengsong
parents: 610
diff changeset
   844
\noindent
Chengsong
parents: 610
diff changeset
   845
Now we introduce the property that the operations 
Chengsong
parents: 610
diff changeset
   846
derivative and $\rsimpalts$
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   847
commute, this will be used later on when deriving the closed form for
611
Chengsong
parents: 610
diff changeset
   848
the alternative regular expression:
Chengsong
parents: 610
diff changeset
   849
\begin{lemma}\label{rderRsimpAltsCommute}
Chengsong
parents: 610
diff changeset
   850
	$\rder{x}{(\rsimpalts \; rs)} = \rsimpalts \; (\map \; (\rder{x}{\_}) \; rs)$
Chengsong
parents: 610
diff changeset
   851
\end{lemma}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   852
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   853
	By induction on $rs$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   854
\end{proof}
611
Chengsong
parents: 610
diff changeset
   855
\noindent
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   856
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   857
\subsubsection{The $RL$ Function: Language Interpretation for $\textit{Rrexp}$s}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   858
Much like the definition of $L$ on plain regular expressions, one can also 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   859
define the language interpretation for $\rrexp$s.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   860
\begin{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   861
	\begin{tabular}{lcl}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   862
		$RL \; (\ZERO_r)$ & $\dn$ & $\phi$\\
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
   863
		$RL \; (\ONE_r)$ & $\dn$ & $\{[]\}$\\
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   864
		$RL \; (c)$ & $\dn$ & $\{[c]\}$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   865
		$RL \; \sum rs$ & $\dn$ & $ \bigcup_{r \in rs} (RL \; r)$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   866
		$RL \; (r_1 \cdot r_2)$ & $\dn$ & $ RL \; (r_1) @ RL \; (r_2)$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   867
		$RL \; (r^*)$ & $\dn$ & $ (RL(r))^*$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   868
	\end{tabular}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   869
\end{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   870
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   871
The main use of $RL$ is to establish some connections between $\rsimp{}$ 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   872
and $\rnullable{}$:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   873
\begin{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   874
	The following properties hold:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   875
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   876
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   877
			If $\rnullable{r}$, then $\rsimp{r} \neq \RZERO$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   878
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   879
			$\rnullable{r \backslash s} \quad $ if and only if $\quad \rnullable{\rderssimp{r}{s}}$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   880
	\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   881
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   882
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   883
	The first part is by induction on $r$. 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   884
	The second part is true because property 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   885
	\[ RL \; r = RL \; (\rsimp{r})\] holds.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   886
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   887
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   888
\subsubsection{Simplified $\textit{Rrexp}$s are Good}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   889
We formalise the notion of ``good" regular expressions,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   890
which means regular expressions that
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   891
are fully simplified in terms of our $\textit{rsimp}$ function. 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   892
For alternative regular expressions that means they
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   893
do not contain any nested alternatives, un-eliminated $\RZERO$s
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   894
or duplicate elements (for example, 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   895
$r_1 + (r_2 + r_3)$, $\RZERO + r$ and $ \sum [r, r, \ldots]$).
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   896
The clauses for $\good$ are:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   897
\begin{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   898
	\begin{tabular}{@{}lcl@{}}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   899
		$\good\; \RZERO$ & $\dn$ & $\textit{false}$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   900
		$\good\; \RONE$ & $\dn$ & $\textit{true}$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   901
		$\good\; \RCHAR{c}$ & $\dn$ & $\btrue$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   902
		$\good\; \RALTS{[]}$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   903
		$\good\; \RALTS{[r]}$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   904
		$\good\; \RALTS{r_1 :: r_2 :: rs}$ & $\dn$ & 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   905
		$\textit{isDistinct} \; (r_1 :: r_2 :: rs) \;$\\
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   906
						   & & $\land \; (\forall r' \in (r_1 :: r_2 :: rs).\; \good \; r'\; \,  \land \; \, \textit{nonAlt}\; r')$\\
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   907
		$\good \; \RSEQ{\RZERO}{r}$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   908
		$\good \; \RSEQ{\RONE}{r}$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   909
		$\good \; \RSEQ{r}{\RZERO}$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   910
		$\good \; \RSEQ{r_1}{r_2}$ & $\dn$ & $\good \; r_1 \;\, \textit{and} \;\, \good \; r_2$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   911
		$\good \; \RSTAR{r}$ & $\dn$ & $\btrue$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   912
	\end{tabular}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   913
\end{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   914
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   915
We omit the recursive definition of the predicate $\textit{nonAlt}$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   916
which evaluates to true when the regular expression is not an
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   917
alternative, and false otherwise.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   918
The $\good$ property is preserved under $\rsimp_{ALTS}$, provided that
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   919
its non-empty argument list of expressions are all good themselves, and $\textit{nonAlt}$, 
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   920
and unique:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   921
\begin{lemma}\label{rsimpaltsGood}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   922
	If $rs \neq []$ and for all $r \in rs. \textit{nonAlt} \; r$ and $\textit{isDistinct} \; rs$,
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   923
	then $\good \; (\rsimpalts \; rs)$ if and only if forall $r \in rs. \; \good \; r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   924
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   925
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   926
We also note that
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   927
if a regular expression $r$ is good, then $\rflts$ on the singleton
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   928
list $[r]$ will not break goodness:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   929
\begin{lemma}\label{flts2}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   930
	If $\good \; r$, then forall $r' \in \rflts \; [r]. \; \good \; r'$ and $\textit{nonAlt} \; r'$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   931
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   932
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   933
	By an induction on $r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   934
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   935
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   936
The other observation we make about $\rsimp{r}$ is that it never
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   937
comes with nested alternatives, which we describe as the $\nonnested$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   938
property:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   939
\begin{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   940
	\begin{tabular}{lcl}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   941
		$\nonnested \; \, \sum []$ & $\dn$ & $\btrue$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   942
		$\nonnested \; \, \sum ((\sum rs_1) :: rs_2)$ & $\dn$ & $\bfalse$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   943
		$\nonnested \; \, \sum (r :: rs)$ & $\dn$ & $\nonnested (\sum rs)$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   944
		$\nonnested \; \, r $ & $\dn$ & $\btrue$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   945
	\end{tabular}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   946
\end{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   947
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   948
The $\rflts$ function
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   949
always opens up nested alternatives,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   950
which enables $\rsimp$ to be non-nested:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   951
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   952
\begin{lemma}\label{nonnestedRsimp}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   953
	It is always the case that
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   954
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   955
		$\nonnested \; (\rsimp{r})$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   956
	\end{center}
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   957
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   958
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   959
	By induction on $r$.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   960
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   961
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   962
With this we can prove that a regular expression
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   963
after simplification and flattening and de-duplication,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   964
will not contain any alternative regular expression directly:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   965
\begin{lemma}\label{nonaltFltsRd}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   966
	If $x \in \rdistinct{\rflts\; (\map \; \rsimp{} \; rs)}{\varnothing}$ 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   967
	then $\textit{nonAlt} \; x$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   968
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   969
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   970
	By \ref{nonnestedRsimp}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   971
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   972
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   973
The other fact we know is that once $\rsimp{}$ has finished
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   974
processing an alternative regular expression, it will not
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   975
contain any $\RZERO$s. This is because all the recursive 
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   976
calls to the simplification on the children regular expressions
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   977
make the children good, and $\rflts$ will not delete
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   978
any $\RZERO$s out of a good regular expression list,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
   979
and $\rdistinct{}$ will not ``mess'' with the result.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   980
\begin{lemma}\label{flts3Obv}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   981
	The following are true:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   982
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   983
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   984
			If for all $r \in rs. \, \good \; r $ or $r = \RZERO$,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   985
			then for all $r \in \rflts\; rs. \, \good \; r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   986
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   987
			If $x \in \rdistinct{\rflts\; (\map \; rsimp{}\; rs)}{\varnothing}$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   988
			and for all $y$ such that $\llbracket y \rrbracket_r$ less than
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   989
			$\llbracket rs \rrbracket_r + 1$, either
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   990
			$\good \; (\rsimp{y})$ or $\rsimp{y} = \RZERO$,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   991
			then $\good \; x$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   992
	\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   993
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   994
\begin{proof}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   995
	The first part is by induction, where the inductive cases
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
   996
	are the inductive cases of $\rflts$.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   997
	The second part is a corollary from the first part.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   998
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
   999
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1000
This leads to good structural property of $\rsimp{}$,
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1001
that after simplification, a regular expression is
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1002
either good or $\RZERO$:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1003
\begin{lemma}\label{good1}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1004
	For any r-regular expression $r$, $\good \; \rsimp{r}$ or $\rsimp{r} = \RZERO$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1005
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1006
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1007
	By an induction on $r$. The inductive measure is the size $\llbracket \rrbracket_r$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1008
	Lemma \ref{rsimpMono} says that 
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1009
	$\llbracket \rsimp{r}\rrbracket_r$ is smaller than or equal to
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1010
	$\llbracket r \rrbracket_r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1011
	Therefore, in the $r_1 \cdot r_2$ and $\sum rs$ case,
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1012
	The inductive hypothesis applies to the children regular expressions
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1013
	$r_1$, $r_2$, etc. The lemma \ref{flts3Obv}'s precondition is satisfied
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1014
	by that as well.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1015
	The lemmas \ref{nonnestedRsimp} and  \ref{nonaltFltsRd} are used
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1016
	to ensure that goodness is preserved at the topmost level.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1017
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1018
We shall prove that any good regular expression is 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1019
a fixed-point for $\textit{rsimp}$.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1020
First we prove an auxiliary lemma:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1021
\begin{lemma}\label{goodaltsNonalt}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1022
	If $\good \; \sum rs$, then $\rflts\; rs = rs$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1023
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1024
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1025
	By an induction on $\sum rs$. The inductive rules are the cases
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1026
	for $\good$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1027
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1028
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1029
Now we are ready to prove that good regular expressions are invariant
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1030
with respect to $\rsimp{}$:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1031
\begin{lemma}\label{test}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1032
	If $\good \;r$ then $\rsimp{r} = r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1033
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1034
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1035
	By an induction on the inductive cases of $\good$, using lemmas
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1036
	\ref{goodaltsNonalt} and \ref{rdistinctOnDistinct}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1037
	The lemma \ref{goodaltsNonalt} is used in the alternative
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1038
	case where 2 or more elements are present in the list.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1039
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1040
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1041
Below we show a property involving $\rflts$, $\textit{rdistinct}$, 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1042
$\rsimp{}$ and $\rsimp_{ALTS}$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1043
which requires $\ref{good1}$ to go through smoothly:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1044
\begin{lemma}\label{flattenRsimpalts}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1045
An application of $\rsimp_{ALTS}$ can be ``absorbed'',
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1046
if its output is concatenated with a list and then applied to $\rflts$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1047
\begin{center}
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1048
	$\rflts \; ( (\rsimp_{ALTS} \; 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1049
	(\rdistinct{(\rflts \; (\map \; \rsimp{}\; rs))}{\varnothing})) :: 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1050
	\map \; \rsimp{} \; rs' ) = 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1051
	\rflts \; ( (\rdistinct{(\rflts \; (\map \; \rsimp{}\; rs))}{\varnothing}) @ (
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1052
	\map \; \rsimp{rs'}))$
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1053
\end{center}
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1054
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1055
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1056
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1057
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1058
	By \ref{good1}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1059
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1060
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1061
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1062
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1063
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1064
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1065
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1066
We are also ready to prove that $\textit{rsimp}$ is idempotent.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1067
\subsubsection{$\rsimp$ is Idempotent}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1068
The idempotency of $\rsimp$ is very useful in 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1069
manipulating regular expression terms into desired
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1070
forms so that key steps allowing further rewriting to closed forms
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1071
are possible.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1072
\begin{lemma}\label{rsimpIdem}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1073
	$\rsimp{r} = \rsimp{(\rsimp{r})}$
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1074
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1075
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1076
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1077
	By \ref{test} and \ref{good1}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1078
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1079
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1080
This property means we do not have to repeatedly
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1081
apply simplification in each step, which justifies
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1082
our definition of $\blexersimp$.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1083
This is in contrast to the work of Sulzmann and Lu where
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1084
the simplification is applied in a fixpoint manner.
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1085
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1086
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1087
On the other hand, we can repeat the same $\rsimp{}$ applications
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1088
on regular expressions as many times as we want, if we have at least
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1089
one simplification applied to it, and apply it wherever we need to:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1090
\begin{corollary}\label{headOneMoreSimp}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1091
	The following properties hold, directly from \ref{rsimpIdem}:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1092
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1093
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1094
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1095
			$\map \; \rsimp{(r :: rs)} = \map \; \rsimp{} \; (\rsimp{r} :: rs)$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1096
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1097
			$\rsimp{(\RALTS{rs})} = \rsimp{(\RALTS{\map \; \rsimp{} \; rs})}$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1098
	\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1099
\end{corollary}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1100
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1101
This will be useful in the later closed-form proof's rewriting steps.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1102
Similarly, we state the following useful facts below:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1103
\begin{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1104
	The following equalities hold if $r = \rsimp{r'}$ for some $r'$:
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1105
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1106
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1107
			If $r  = \sum rs$ then $\rsimpalts \; rs = \sum rs$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1108
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1109
			If $r = \sum rs$ then $\rdistinct{rs}{\varnothing} = rs$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1110
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1111
			$\rsimpalts \; (\rdistinct{\rflts \; [r]}{\varnothing}) = r$.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1112
	\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1113
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1114
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1115
	By application of lemmas \ref{rsimpIdem} and \ref{good1}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1116
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1117
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1118
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1119
With the idempotency of $\textit{rsimp}$ and its corollaries, 
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1120
we can start proving some key equalities leading to the 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1121
closed forms.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1122
Next we present a few equivalent terms under $\textit{rsimp}$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1123
To make the notation more concise
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1124
We use $r_1 \sequal r_2 $ to denote that $\rsimp{r_1} = \rsimp{r_2}$.
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1125
%\begin{center}
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1126
%\begin{tabular}{lcl}
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1127
%	$a \sequal b$ & $ \dn$ & $ \textit{rsimp} \; a = \textit{rsimp} \; b$
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1128
%\end{tabular}
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1129
%\end{center}
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1130
%\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1131
%\vspace{0em}
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1132
\begin{lemma}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1133
	The following equivalence hold:
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1134
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1135
	\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1136
		$\rsimpalts \; (\RZERO :: rs) \sequal \rsimpalts\; rs$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1137
	\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1138
		$\rsimpalts \; rs \sequal \rsimpalts (\map \; \rsimp{} \; rs)$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1139
	\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1140
		$\RALTS{\RALTS{rs}} \sequal \RALTS{rs}$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1141
	\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1142
		$\sum ((\sum rs_a) :: rs_b) \sequal \sum rs_a @ rs_b$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1143
	\item
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1144
		$\RALTS{rs} \sequal \RALTS{\map \; \rsimp{} \; rs}$
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1145
\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1146
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1147
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1148
	By induction on the lists involved.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1149
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1150
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1151
The above allows us to prove
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1152
two similar equalities (which are a bit more involved).
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1153
It says that we could flatten the elements
614
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1154
before simplification and still get the same result.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1155
\begin{lemma}\label{simpFlatten3}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1156
	One can flatten the inside $\sum$ of a $\sum$ if it is being 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1157
	simplified. Concretely,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1158
	\begin{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1159
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1160
			If for all $r \in rs, rs', rs''$, we have $\good \; r $
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1161
			or $r = \RZERO$, then $\sum (rs' @ rs @ rs'') \sequal 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1162
			\sum (rs' @ [\sum rs] @ rs'')$ holds. As a corollary,
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1163
		\item
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1164
			$\sum (rs' @ [\sum rs] @ rs'') \sequal \sum (rs' @ rs @ rs'')$
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1165
	\end{itemize}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1166
\end{lemma}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1167
\begin{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1168
	By rewriting steps involving the use of \ref{test} and \ref{rdistinctConcatGeneral}.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1169
	The second sub-lemma is a corollary of the previous.
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1170
\end{proof}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1171
%Rewriting steps not put in--too long and complicated-------------------------------
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1172
\begin{comment}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1173
	\begin{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1174
		$\rsimp{\sum (rs' @ rs @ rs'')}  \stackrel{def of bsimp}{=}$  \\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1175
		$\rsimpalts \; (\rdistinct{\rflts \; ((\map \; \rsimp{}\; rs') @ (\map \; \rsimp{} \; rs ) @ (\map \; \rsimp{} \; rs''))}{\varnothing})$ \\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1176
		$\stackrel{by \ref{test}}{=} 
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1177
		\rsimpalts \; (\rdistinct{(\rflts \; rs' @ \rflts \; rs @ \rflts \; rs'')}{
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1178
		\varnothing})$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1179
		$\stackrel{by \ref{rdistinctConcatGeneral}}{=}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1180
		\rsimpalts \; (\rdistinct{\rflts \; rs'}{\varnothing} @ \rdistinct{(
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1181
		\rflts\; rs @ \rflts \; rs'')}{\rflts \; rs'})$\\
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1182
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1183
	\end{center}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1184
\end{comment}
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1185
%Rewriting steps not put in--too long and complicated-------------------------------
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1186
\noindent
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1187
d5e9bcb384ec reorder
Chengsong
parents: 613
diff changeset
  1188
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1189
We need more equalities like the above to enable a closed form lemma,
613
Chengsong
parents: 611
diff changeset
  1190
for which we need to introduce a few rewrite relations
Chengsong
parents: 611
diff changeset
  1191
to help
Chengsong
parents: 611
diff changeset
  1192
us obtain them.
554
Chengsong
parents: 553
diff changeset
  1193
610
d028c662a3df data files
Chengsong
parents: 609
diff changeset
  1194
\subsection{The rewrite relation $\hrewrite$ , $\scfrewrites$ , $\frewrite$ and $\grewrite$}
613
Chengsong
parents: 611
diff changeset
  1195
Inspired by the success we had in the correctness proof 
Chengsong
parents: 611
diff changeset
  1196
in \ref{Bitcoded2},
Chengsong
parents: 611
diff changeset
  1197
we follow suit here, defining atomic simplification
Chengsong
parents: 611
diff changeset
  1198
steps as ``small-step'' rewriting steps. This allows capturing 
555
Chengsong
parents: 554
diff changeset
  1199
similarities between terms that would be otherwise
Chengsong
parents: 554
diff changeset
  1200
hard to express.
Chengsong
parents: 554
diff changeset
  1201
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1202
We use $\hrewrite$ for one-step atomic rewrite of 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1203
regular expression simplification, 
555
Chengsong
parents: 554
diff changeset
  1204
$\frewrite$ for rewrite of list of regular expressions that 
Chengsong
parents: 554
diff changeset
  1205
include all operations carried out in $\rflts$, and $\grewrite$ for
613
Chengsong
parents: 611
diff changeset
  1206
rewriting a list of regular expressions possible in both $\rflts$ and $\textit{rdistinct}$.
555
Chengsong
parents: 554
diff changeset
  1207
Their reflexive transitive closures are used to denote zero or many steps,
Chengsong
parents: 554
diff changeset
  1208
as was the case in the previous chapter.
613
Chengsong
parents: 611
diff changeset
  1209
As we have already
Chengsong
parents: 611
diff changeset
  1210
done something similar, the presentation about
Chengsong
parents: 611
diff changeset
  1211
these rewriting rules will be more concise than that in \ref{Bitcoded2}.
554
Chengsong
parents: 553
diff changeset
  1212
To differentiate between the rewriting steps for annotated regular expressions
Chengsong
parents: 553
diff changeset
  1213
and $\rrexp$s, we add characters $h$ and $g$ below the squig arrow symbol
Chengsong
parents: 553
diff changeset
  1214
to mean atomic simplification transitions 
Chengsong
parents: 553
diff changeset
  1215
of $\rrexp$s and $\rrexp$ lists, respectively.
Chengsong
parents: 553
diff changeset
  1216
555
Chengsong
parents: 554
diff changeset
  1217
Chengsong
parents: 554
diff changeset
  1218
Chengsong
parents: 554
diff changeset
  1219
613
Chengsong
parents: 611
diff changeset
  1220
\begin{figure}[H]
554
Chengsong
parents: 553
diff changeset
  1221
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1222
	\begin{mathpar}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1223
		\inferrule[RSEQ0L]{}{\RZERO \cdot r_2 \hrewrite \RZERO\\}
555
Chengsong
parents: 554
diff changeset
  1224
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1225
		\inferrule[RSEQ0R]{}{r_1 \cdot \RZERO \hrewrite \RZERO\\}
555
Chengsong
parents: 554
diff changeset
  1226
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1227
		\inferrule[RSEQ1]{}{(\RONE \cdot r) \hrewrite  r\\}\\	
555
Chengsong
parents: 554
diff changeset
  1228
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1229
		\inferrule[RSEQL]{ r_1 \hrewrite r_2}{r_1 \cdot r_3 \hrewrite r_2 \cdot r_3\\}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1230
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1231
		\inferrule[RSEQR]{ r_3 \hrewrite r_4}{r_1 \cdot r_3 \hrewrite r_1 \cdot r_4\\}\\
555
Chengsong
parents: 554
diff changeset
  1232
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1233
		\inferrule[RALTSChild]{r \hrewrite r'}{\sum (rs_1 @ [r] @ rs_2) \hrewrite \sum (rs_1 @ [r'] @ rs_2)\\}
555
Chengsong
parents: 554
diff changeset
  1234
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1235
		\inferrule[RALTS0]{}{\sum (rs_a @ [\RZERO] @ rs_b) \hrewrite \sum (rs_a @ rs_b)}
555
Chengsong
parents: 554
diff changeset
  1236
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1237
		\inferrule[RALTSNested]{}{\sum (rs_a @ [\sum rs_1] @ rs_b) \hrewrite \sum (rs_a @ rs_1 @ rs_b)}
555
Chengsong
parents: 554
diff changeset
  1238
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1239
		\inferrule[RALTSNil]{}{ \sum [] \hrewrite \RZERO\\}
555
Chengsong
parents: 554
diff changeset
  1240
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1241
		\inferrule[RALTSSingle]{}{ \sum [r] \hrewrite  r\\}	
555
Chengsong
parents: 554
diff changeset
  1242
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1243
		\inferrule[RALTSDelete]{\\ r_1 = r_2}{\sum rs_a @ [r_1] @ rs_b @ [r_2] @ rsc \hrewrite \sum rs_a @ [r_1] @ rs_b @ rs_c}
555
Chengsong
parents: 554
diff changeset
  1244
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1245
	\end{mathpar}
555
Chengsong
parents: 554
diff changeset
  1246
\end{center}
613
Chengsong
parents: 611
diff changeset
  1247
\caption{List of one-step rewrite rules for r-regular expressions ($\hrewrite$)}\label{hRewrite}
Chengsong
parents: 611
diff changeset
  1248
\end{figure}
554
Chengsong
parents: 553
diff changeset
  1249
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1250
613
Chengsong
parents: 611
diff changeset
  1251
Like $\rightsquigarrow_s$, it is
Chengsong
parents: 611
diff changeset
  1252
convenient to define rewrite rules for a list of regular expressions,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1253
where each element can rewrite in many steps to the other (scf stands for
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1254
li\emph{s}t \emph{c}losed \emph{f}orm). This relation is similar to the 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1255
$\stackrel{s*}{\rightsquigarrow}$ for annotated regular expressions.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1256
613
Chengsong
parents: 611
diff changeset
  1257
\begin{figure}[H]
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1258
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1259
	\begin{mathpar}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1260
		\inferrule{}{[] \scfrewrites [] }
613
Chengsong
parents: 611
diff changeset
  1261
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1262
		\inferrule{r \hrewrites r' \\ rs \scfrewrites rs'}{r :: rs \scfrewrites r' :: rs'}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1263
	\end{mathpar}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1264
\end{center}
613
Chengsong
parents: 611
diff changeset
  1265
\caption{List of one-step rewrite rules for a list of r-regular expressions}\label{scfRewrite}
Chengsong
parents: 611
diff changeset
  1266
\end{figure}
555
Chengsong
parents: 554
diff changeset
  1267
%frewrite
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1268
List of one-step rewrite rules for flattening 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1269
a list of  regular expressions($\frewrite$):
613
Chengsong
parents: 611
diff changeset
  1270
\begin{figure}[H]
555
Chengsong
parents: 554
diff changeset
  1271
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1272
	\begin{mathpar}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1273
		\inferrule{}{\RZERO :: rs \frewrite rs \\}
555
Chengsong
parents: 554
diff changeset
  1274
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1275
		\inferrule{}{(\sum rs) :: rs_a \frewrite rs @ rs_a \\}
555
Chengsong
parents: 554
diff changeset
  1276
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1277
		\inferrule{rs_1 \frewrite rs_2}{r :: rs_1 \frewrite r :: rs_2}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1278
	\end{mathpar}
555
Chengsong
parents: 554
diff changeset
  1279
\end{center}
613
Chengsong
parents: 611
diff changeset
  1280
\caption{List of one-step rewrite rules characterising the $\rflts$ operation on a list}\label{fRewrites}
Chengsong
parents: 611
diff changeset
  1281
\end{figure}
555
Chengsong
parents: 554
diff changeset
  1282
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1283
Lists of one-step rewrite rules for flattening and de-duplicating
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1284
a list of regular expressions ($\grewrite$):
613
Chengsong
parents: 611
diff changeset
  1285
\begin{figure}[H]
555
Chengsong
parents: 554
diff changeset
  1286
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1287
	\begin{mathpar}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1288
		\inferrule{}{\RZERO :: rs \grewrite rs \\}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  1289
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1290
		\inferrule{}{(\sum rs) :: rs_a \grewrite rs @ rs_a \\}
555
Chengsong
parents: 554
diff changeset
  1291
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1292
		\inferrule{rs_1 \grewrite rs_2}{r :: rs_1 \grewrite r :: rs_2}
555
Chengsong
parents: 554
diff changeset
  1293
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1294
		\inferrule[dB]{}{rs_a @ [a] @ rs_b @[a] @ rs_c \grewrite rs_a @ [a] @ rsb @ rsc}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1295
	\end{mathpar}
555
Chengsong
parents: 554
diff changeset
  1296
\end{center}
613
Chengsong
parents: 611
diff changeset
  1297
\caption{List of one-step rewrite rules characterising the $\rflts$ and $\textit{rdistinct}$
Chengsong
parents: 611
diff changeset
  1298
operations}\label{gRewrite}
Chengsong
parents: 611
diff changeset
  1299
\end{figure}
555
Chengsong
parents: 554
diff changeset
  1300
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1301
We define
613
Chengsong
parents: 611
diff changeset
  1302
two separate list rewriting relations $\frewrite$ and $\grewrite$.
611
Chengsong
parents: 610
diff changeset
  1303
The rewriting steps that take place during
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1304
flattening are characterised by $\frewrite$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1305
The rewrite relation $\grewrite$ characterises both flattening and de-duplicating.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1306
Sometimes $\grewrites$ is slightly too powerful
613
Chengsong
parents: 611
diff changeset
  1307
so we would rather use $\frewrites$ to prove
Chengsong
parents: 611
diff changeset
  1308
%because we only
Chengsong
parents: 611
diff changeset
  1309
equalities related to $\rflts$.
Chengsong
parents: 611
diff changeset
  1310
%certain equivalence under the rewriting steps of $\frewrites$.
556
Chengsong
parents: 555
diff changeset
  1311
For example, when proving the closed-form for the alternative regular expression,
613
Chengsong
parents: 611
diff changeset
  1312
one of the equalities needed is:
Chengsong
parents: 611
diff changeset
  1313
\begin{center}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1314
	$\sum (\rDistinct \;\; (\map \; (\_ \backslash x) \; (\rflts \; rs)) \;\; \varnothing) \sequal
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1315
	\sum (\rDistinct \;\;  (\rflts \; (\map \; (\_ \backslash x) \; rs)) \;\; \varnothing)
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1316
	$
613
Chengsong
parents: 611
diff changeset
  1317
\end{center}
556
Chengsong
parents: 555
diff changeset
  1318
\noindent
Chengsong
parents: 555
diff changeset
  1319
Proving this is by first showing 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1320
\begin{lemma}\label{earlyLaterDerFrewrites}
556
Chengsong
parents: 555
diff changeset
  1321
	$\map \; (\_ \backslash x) \;  (\rflts \; rs) \frewrites
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1322
	\rflts \; (\map \; (\_ \backslash x) \; rs)$
556
Chengsong
parents: 555
diff changeset
  1323
\end{lemma}
Chengsong
parents: 555
diff changeset
  1324
\noindent
613
Chengsong
parents: 611
diff changeset
  1325
and then the equivalence between two terms
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1326
that can reduce in many steps to each other:
556
Chengsong
parents: 555
diff changeset
  1327
\begin{lemma}\label{frewritesSimpeq}
Chengsong
parents: 555
diff changeset
  1328
	If $rs_1 \frewrites rs_2 $, then $\sum (\rDistinct \; rs_1 \; \varnothing) \sequal 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1329
	\sum (\rDistinct \;  rs_2 \;  \varnothing)$.
556
Chengsong
parents: 555
diff changeset
  1330
\end{lemma}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1331
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1332
These two lemmas can both be proven using a straightforward induction (and
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1333
the proofs for them are therefore omitted).
613
Chengsong
parents: 611
diff changeset
  1334
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1335
Now the above equalities can be derived with ease: 
613
Chengsong
parents: 611
diff changeset
  1336
\begin{corollary}
Chengsong
parents: 611
diff changeset
  1337
	$\sum (\rDistinct \;\; (\map \; (\_ \backslash x) \; (\rflts \; rs)) \;\; \varnothing) \sequal
Chengsong
parents: 611
diff changeset
  1338
	\sum (\rDistinct \;\;  (\rflts \; (\map \; (\_ \backslash x) \; rs)) \;\; \varnothing)
Chengsong
parents: 611
diff changeset
  1339
	$
Chengsong
parents: 611
diff changeset
  1340
\end{corollary}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1341
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1342
	By lemmas \ref{earlyLaterDerFrewrites} and \ref{frewritesSimpeq}.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1343
\end{proof}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1344
But this trick will not work for $\grewrites$.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1345
For example, a rewriting step in proving
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1346
closed forms is:
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1347
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1348
	$\rsimp{(\rsimpalts \; (\map \; (\_ \backslash x) \; (\rdistinct{(\rflts \; (\map \; (\rsimp{} \; \circ \; (\lambda r. \rderssimp{r}{xs}))))}{\varnothing})))}$\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1349
	$=$ \\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1350
	$\rsimp{(\rsimpalts \; (\rdistinct{(\map \; (\_ \backslash x) \; (\rflts \; (\map \; (\rsimp{} \; \circ \; (\lambda r. \rderssimp{r}{xs})))) ) }{\varnothing}))} $
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1351
	\noindent
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1352
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1353
For this, one would hope to have a rewriting relation between the two lists involved,
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1354
similar to \ref{earlyLaterDerFrewrites}. However, it turns out that 
556
Chengsong
parents: 555
diff changeset
  1355
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1356
	$\map \; (\_ \backslash x) \; (\rDistinct \; rs \; rset) \grewrites \rDistinct \; (\map \;
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1357
	(\_ \backslash x) \; rs) \; ( rset \backslash x)$
556
Chengsong
parents: 555
diff changeset
  1358
\end{center}
Chengsong
parents: 555
diff changeset
  1359
\noindent
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1360
does $\mathbf{not}$ hold in general.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1361
For this rewriting step we will introduce some slightly more cumbersome
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1362
proof technique later.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1363
The point is that $\frewrite$
613
Chengsong
parents: 611
diff changeset
  1364
allows us to prove equivalence in a straightforward way that is 
Chengsong
parents: 611
diff changeset
  1365
not possible for $\grewrite$. 
555
Chengsong
parents: 554
diff changeset
  1366
556
Chengsong
parents: 555
diff changeset
  1367
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1368
\subsubsection{Terms That Can Be Rewritten Using $\hrewrites$, $\grewrites$, and $\frewrites$}
613
Chengsong
parents: 611
diff changeset
  1369
In this part, we present lemmas stating
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1370
pairs of r-regular expressions and r-regular expression lists
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1371
where one can rewrite from one in many steps to the other.
613
Chengsong
parents: 611
diff changeset
  1372
Most of the proofs to these lemmas are straightforward, using
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1373
an induction on the corresponding rewriting relations.
613
Chengsong
parents: 611
diff changeset
  1374
These proofs will therefore be omitted when this is the case.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1375
We present in the following lemma a few pairs of terms that are rewritable via 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1376
$\grewrites$:
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1377
\begin{lemma}\label{gstarRdistinctGeneral}
613
Chengsong
parents: 611
diff changeset
  1378
	\mbox{}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1379
	\begin{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1380
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1381
			$rs_1 @ rs \grewrites rs_1 @ (\rDistinct \; rs \; rs_1)$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1382
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1383
			$rs \grewrites \rDistinct \; rs \; \varnothing$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1384
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1385
			$rs_a @ (\rDistinct \; rs \; rs_a) \grewrites rs_a @ (\rDistinct \; 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1386
			rs \; (\{\RZERO\} \cup rs_a))$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1387
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1388
			$rs \;\; @ \;\; \rDistinct \; rs_a \; rset \grewrites rs @  \rDistinct \; rs_a \;
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1389
			(rest \cup rs)$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1390
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1391
	\end{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1392
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1393
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1394
If a pair of terms $rs_1, rs_2$ are rewritable via $\grewrites$ to each other,
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1395
then they are equivalent under $\rsimp{}$:
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1396
\begin{lemma}\label{grewritesSimpalts}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1397
	\mbox{}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1398
	If $rs_1 \grewrites rs_2$, then
613
Chengsong
parents: 611
diff changeset
  1399
	we have the following equivalence:
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1400
	\begin{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1401
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1402
			$\sum rs_1 \sequal \sum rs_2$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1403
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1404
			$\rsimpalts \; rs_1 \sequal \rsimpalts \; rs_2$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1405
	\end{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1406
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1407
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1408
Here are a few connecting lemmas showing that
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1409
if a list of regular expressions can be rewritten using $\grewrites$ or $\frewrites $ or
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1410
$\scfrewrites$,
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1411
then an alternative constructor taking the list can also be rewritten using $\hrewrites$:
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1412
\begin{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1413
	\begin{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1414
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1415
			If $rs \grewrites rs'$ then $\sum rs \hrewrites \sum rs'$.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1416
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1417
			If $rs \grewrites rs'$ then $\sum rs \hrewrites \rsimpalts \; rs'$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1418
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1419
			If $rs_1 \scfrewrites rs_2$ then $\sum (rs @ rs_1) \hrewrites \sum (rs @ rs_2)$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1420
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1421
			If $rs_1 \scfrewrites rs_2$ then $\sum rs_1 \hrewrites \sum rs_2$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1422
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1423
	\end{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1424
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1425
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1426
Now comes the core of the proof, 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1427
which says that once two lists are rewritable to each other,
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1428
then they are equivalent under $\textit{rsimp}$:
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1429
\begin{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1430
	If $r_1 \hrewrites r_2$ then $r_1 \sequal r_2$.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1431
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1432
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1433
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1434
Similar to what we did in chapter \ref{Bitcoded2}, 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1435
we prove that if one can rewrite from one r-regular expression ($r$)
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1436
to the other ($r'$), after taking derivatives one can still rewrite
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1437
the first ($r\backslash c$) to the other ($r'\backslash c$).
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1438
\begin{lemma}\label{interleave}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1439
	If $r \hrewrites r' $ then $\rder{c}{r} \hrewrites \rder{c}{r'}$
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1440
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1441
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1442
This allows us to prove more $\mathbf{rsimp}$-equivalent terms, involving $\backslash_r$.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1443
\begin{lemma}\label{insideSimpRemoval}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1444
	$\rsimp{(\rder{c}{(\rsimp{r})})} = \rsimp{(\rder{c}{r})}  $
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1445
\end{lemma}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1446
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1447
\begin{proof}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1448
	By \ref{interleave} and \ref{rsimpIdem}.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1449
\end{proof}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1450
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1451
And this unlocks more equivalent terms:
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1452
\begin{lemma}\label{Simpders}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1453
	As corollaries of \ref{insideSimpRemoval}, we have
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1454
	\begin{itemize}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1455
		\item
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  1456
			If $s \neq []$ then $\rderssimp{r}{s} = \rsimp{( r \backslash_{rs} s)}$.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1457
		\item
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1458
			$\rsimpalts \; (\map \; (\_ \backslash_r x) \;
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1459
			(\rdistinct{rs}{\varnothing})) \sequal
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1460
			\rsimpalts \; (\rDistinct \; 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1461
			(\map \; (\_ \backslash_r x) rs) \;\varnothing  )$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1462
	\end{itemize}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1463
\end{lemma}
611
Chengsong
parents: 610
diff changeset
  1464
\begin{proof}
Chengsong
parents: 610
diff changeset
  1465
	Part 1 is by lemma \ref{insideSimpRemoval},
613
Chengsong
parents: 611
diff changeset
  1466
	part 2 is by lemma \ref{insideSimpRemoval} .%and \ref{distinctDer}.
611
Chengsong
parents: 610
diff changeset
  1467
\end{proof}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1468
\noindent
613
Chengsong
parents: 611
diff changeset
  1469
Chengsong
parents: 611
diff changeset
  1470
\subsection{Closed Forms for $\sum rs$, $r_1\cdot r_2$ and $r^*$}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1471
Lemma \ref{Simpders} leads to our first closed form,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1472
which is for the alternative regular expression:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1473
\begin{theorem}\label{altsClosedForm}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1474
	\mbox{}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1475
	\begin{center}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1476
		$\rderssimp{(\sum rs)}{s} \sequal
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1477
		\sum \; (\map \; (\rderssimp{\_}{s}) \; rs)$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1478
	\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1479
\end{theorem}
556
Chengsong
parents: 555
diff changeset
  1480
\noindent
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1481
\begin{proof}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1482
	By a reverse induction on the string $s$.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1483
	One rewriting step, as we mentioned earlier,
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1484
	involves
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1485
	\begin{center}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1486
		$\rsimpalts \; (\map \; (\_ \backslash x) \; 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1487
		(\rdistinct{(\rflts \; (\map \; (\rsimp{} \; \circ \; 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1488
		(\lambda r. \rderssimp{r}{xs}))))}{\varnothing}))
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1489
		\sequal
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1490
		\rsimpalts \; (\rdistinct{(\map \; (\_ \backslash x) \; 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1491
			(\rflts \; (\map \; (\rsimp{} \; \circ \; 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1492
		(\lambda r. \rderssimp{r}{xs})))) ) }{\varnothing}) $.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1493
	\end{center}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1494
	This can be proven by a combination of 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1495
	\ref{grewritesSimpalts}, \ref{gstarRdistinctGeneral}, \ref{rderRsimpAltsCommute}, and
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1496
	\ref{insideSimpRemoval}.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1497
\end{proof}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1498
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1499
This closed form has a variant which can be more convenient in later proofs:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1500
\begin{corollary}\label{altsClosedForm1}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1501
	If $s \neq []$ then 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1502
	$\rderssimp \; (\sum \; rs) \; s = 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1503
	\rsimp{(\sum \; (\map \; \rderssimp{\_}{s} \; rs))}$.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1504
\end{corollary}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1505
\noindent
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1506
The harder closed forms are the sequence and star ones.
613
Chengsong
parents: 611
diff changeset
  1507
Before we obtain them, some preliminary definitions
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1508
are needed to make proof statements concise.
556
Chengsong
parents: 555
diff changeset
  1509
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  1510
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  1511
\subsubsection{Closed Form for Sequence Regular Expressions}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1512
For the sequence regular expression,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1513
let's first look at a series of derivative steps on it 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1514
(assuming that each time when a derivative is taken,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1515
the head of the sequence is always nullable):
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1516
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1517
	\begin{tabular}{llll}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1518
		$r_1 \cdot r_2$ &  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1519
		$\longrightarrow_{\backslash c}$ &  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1520
		$r_1\backslash c \cdot r_2 + r_2 \backslash c$ &
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1521
		$ \longrightarrow_{\backslash c'} $ \\ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1522
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1523
		$(r_1 \backslash cc' \cdot r_2 + r_2 \backslash c') + r_2 \backslash cc'$ & 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1524
		$\longrightarrow_{\backslash c''} $ &
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1525
		$((r_1 \backslash cc'c'' \cdot r_2 + r_2 \backslash c'') + r_2 \backslash c'c'') 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1526
		+ r_2 \backslash cc'c''$ & 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1527
		$   \longrightarrow_{\backslash c''} \quad \ldots$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1528
	\end{tabular}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1529
\end{center}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1530
Roughly speaking $r_1 \cdot r_2 \backslash s$ can be expressed as 
558
Chengsong
parents: 557
diff changeset
  1531
a giant alternative taking a list of terms 
Chengsong
parents: 557
diff changeset
  1532
$[r_1 \backslash_r s \cdot r_2, r_2 \backslash_r s'', r_2 \backslash_r s_1'', \ldots]$,
Chengsong
parents: 557
diff changeset
  1533
where the head of the list is always the term
Chengsong
parents: 557
diff changeset
  1534
representing a match involving only $r_1$, and the tail of the list consisting of
Chengsong
parents: 557
diff changeset
  1535
terms of the shape $r_2 \backslash_r s''$, $s''$ being a suffix of $s$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1536
This intuition is also echoed by Murugesan and Sundaram \cite{Murugesan2014}, 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1537
where they gave
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1538
a pencil-and-paper derivation of $(r_1 \cdot r_2)\backslash s$:
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  1539
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1540
	\begin{tabular}{lc}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1541
		$L \; [ (r_1 \cdot r_2) \backslash_r (c_1 :: c_2 :: \ldots c_n) ]$ & $ =$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1542
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1543
		\rule{0pt}{3ex} $L \; [ ((r_1 \backslash_r c_1) \cdot r_2 + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1544
		(\delta\; (\nullable \; r_1) \; (r_2 \backslash_r c_1) )) \backslash_r 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1545
		(c_2 :: \ldots c_n) ]$ &
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1546
		$=$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1547
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1548
		\rule{0pt}{3ex} $L \; [ ((r_1 \backslash_r c_1c_2 \cdot r_2 + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1549
		(\delta \; (\nullable \; r_1) \; (r_2 \backslash_r c_1c_2)))
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1550
		$ & \\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1551
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1552
		$\quad + (\delta \ (\nullable \; r_1 \backslash_r c)\; (r_2 \backslash_r c_2) )) 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1553
		\backslash_r (c_3 \ldots c_n) ]$ & $\ldots$ \\
558
Chengsong
parents: 557
diff changeset
  1554
	\end{tabular}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1555
\end{center}
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1556
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1557
The $\delta$ function 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1558
returns $r$ when the boolean condition
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1559
$b$ evaluates to true and
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1560
$\ZERO_r$ otherwise:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1561
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1562
	\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1563
		$\delta \; b\; r$ & $\dn$ & $r \quad \textit{if} \; b \; is \;\textit{true}$\\
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1564
				  & $\dn$ & $\ZERO_r \quad otherwise$
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1565
	\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1566
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1567
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1568
Note that the term
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1569
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1570
	\begin{tabular}{lc}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1571
		\rule{0pt}{3ex} $((r_1 \backslash_r c_1c_2 \cdot r_2 + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1572
		(\delta \; (\nullable \; r_1) \; (r_2 \backslash_r c_1c_2)))
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1573
		$ & \\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1574
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1575
		$\quad + (\delta \ (\nullable \; r_1 \backslash_r c)\; (r_2 \backslash_r c_2) )) 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1576
		\backslash_r (c_3 \ldots c_n)$ &\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1577
	\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1578
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1579
\noindent
558
Chengsong
parents: 557
diff changeset
  1580
does not faithfully
Chengsong
parents: 557
diff changeset
  1581
represent what the intermediate derivatives would actually look like
Chengsong
parents: 557
diff changeset
  1582
when one or more intermediate results $r_1 \backslash s' \cdot r_2$ are not 
Chengsong
parents: 557
diff changeset
  1583
nullable in the head of the sequence.
Chengsong
parents: 557
diff changeset
  1584
For example, when $r_1$ and $r_1 \backslash_r c_1$ are not nullable,
Chengsong
parents: 557
diff changeset
  1585
the regular expression would not look like 
Chengsong
parents: 557
diff changeset
  1586
\[
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1587
	r_1 \backslash_r c_1c_2
558
Chengsong
parents: 557
diff changeset
  1588
\]
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1589
instead of
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1590
\[
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1591
	(r_1 \backslash_r c_1c_2 + \ZERO_r ) + \ZERO_r.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1592
\]
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1593
The redundant $\ZERO_r$s will not be created in the
558
Chengsong
parents: 557
diff changeset
  1594
first place.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1595
In a closed-form one needs to take into account this (because
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1596
closed forms require exact equality rather than language equivalence)
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1597
and only generate the 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1598
$r_2 \backslash_r s''$ terms satisfying the property
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1599
\begin{center}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1600
$\exists s'.  such \; that \; s'@s'' = s \;\; \land \;\;
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1601
r_1 \backslash s' \; is \; nullable$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1602
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1603
Given the arguments $s$ and $r_1$, we denote the list of strings
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1604
$s''$ satisfying the above property as $\vsuf{s}{r_1}$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1605
The function $\vsuf{\_}{\_}$ is defined recursively on the structure of the string\footnote{
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1606
	Perhaps a better name for it would be ``NullablePrefixSuffix''
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1607
	to differentiate with the list of \emph{all} prefixes of $s$, but
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1608
	that is a bit too long for a function name and we are yet to find
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1609
a more concise and easy-to-understand name.}
558
Chengsong
parents: 557
diff changeset
  1610
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1611
	\begin{tabular}{lcl}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1612
		$\vsuf{[]}{\_} $ & $=$ &  $[]$\\
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1613
		$\vsuf{c::cs}{r_1}$ & $ =$ & $ \textit{if} \; (\rnullable{r_1}) \; \textit{then} \; (\vsuf{cs}{(\rder{c}{r_1})}) @ [c :: cs]$\\
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1614
				    && $\textit{else} \; (\vsuf{cs}{(\rder{c}{r_1}) })  $
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1615
	\end{tabular}
558
Chengsong
parents: 557
diff changeset
  1616
\end{center}
Chengsong
parents: 557
diff changeset
  1617
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1618
The list starts with shorter suffixes
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1619
and ends with longer ones (in other words, the string elements $s''$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1620
in the list $\vsuf{s}{r_1}$ are sorted
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1621
in the same order as that of the terms $r_2\backslash s''$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1622
appearing in $(r_1\cdot r_2)\backslash s$).
558
Chengsong
parents: 557
diff changeset
  1623
In essence, $\vsuf{\_}{\_}$ is doing a 
Chengsong
parents: 557
diff changeset
  1624
"virtual derivative" of $r_1 \cdot r_2$, but instead of producing 
Chengsong
parents: 557
diff changeset
  1625
the entire result $(r_1 \cdot r_2) \backslash s$, 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1626
it only stores strings,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1627
with each string $s''$ representing a term such that $r_2 \backslash s''$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1628
is occurring in $(r_1\cdot r_2)\backslash s$.
558
Chengsong
parents: 557
diff changeset
  1629
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1630
With $\textit{Suffix}$ we are ready to express the
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1631
sequence regular expression's closed form,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1632
but before doing so 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1633
more definitions are needed.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1634
The first thing is the flattening function $\sflat{\_}$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1635
which takes an alternative regular expression and produces a flattened version
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1636
of that alternative regular expression.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1637
It is needed to convert
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1638
a left-associative nested sequence of alternatives into 
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1639
a flattened list:
558
Chengsong
parents: 557
diff changeset
  1640
\[
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1641
	\sum(\ldots ((r_1 + r_2) + r_3) + \ldots)
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1642
	\stackrel{\sflat{\_}}{\rightarrow} 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1643
	\sum[r_1, r_2, r_3, \ldots]
558
Chengsong
parents: 557
diff changeset
  1644
\]
Chengsong
parents: 557
diff changeset
  1645
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1646
The definitions of $\sflat{\_}$ and helper functions
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1647
$\sflataux{\_}$ and $\llparenthesis \_ \rrparenthesis''$ are given below.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1648
\begin{center}  
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1649
	\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1650
		$\sflataux{\sum r :: rs}$ & $\dn$ & $\sflataux{r} @ rs$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1651
		$\sflataux{\sum []}$ & $ \dn $ & $ []$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1652
		$\sflataux r$ & $\dn$ & $ [r]$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1653
	\end{tabular}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  1654
\end{center}
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  1655
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1656
\begin{center} 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1657
	\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1658
		$\sflat{(\sum r :: rs)}$ & $\dn$ & $\sum (\sflataux{r} @ rs)$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1659
		$\sflat{\sum []}$ & $ \dn $ & $ \sum []$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1660
		$\sflat r$ & $\dn$ & $ r$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1661
	\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1662
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1663
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1664
\begin{center}  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1665
	\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1666
		$\sflataux{[]}'$ & $ \dn $ & $ []$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1667
		$\sflataux{ (r_1 + r_2) :: rs }'$ & $\dn$ & $r_1 :: r_2 :: rs$\\
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1668
		$\sflataux{r :: rs}'$ & $\dn$ & $ r::rs$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1669
	\end{tabular}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1670
\end{center}
558
Chengsong
parents: 557
diff changeset
  1671
\noindent
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
  1672
$\sflataux{\_}$ breaks up nested alternative regular expressions 
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1673
of the $(\ldots((r_1 + r_2) + r_3) + \ldots )$(left-associated) shape
558
Chengsong
parents: 557
diff changeset
  1674
into a "balanced" list: $\AALTS{\_}{[r_1,\, r_2 ,\, r_3, \ldots]}$.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1675
It will return the singleton list $[r]$ otherwise.
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1676
$\sflat{\_}$ works the same  as $\sflataux{\_}$, except that it keeps
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1677
the output type a regular expression, not a list.
558
Chengsong
parents: 557
diff changeset
  1678
$\sflataux{\_}$  and $\sflat{\_}$ are only recursive on the  
Chengsong
parents: 557
diff changeset
  1679
first element of the list.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1680
$\sflataux{\_}'$ takes a list of regular expressions as input, and outputs
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1681
a list of regular expressions.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1682
The use of $\sflataux{\_}$ and $\sflataux{\_}'$ is clear once we have
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1683
$\textit{createdBySequence}$ defined:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1684
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1685
	\begin{mathpar}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1686
		\inferrule{\mbox{}}{\textit{createdBySequence}\; (r_1 \cdot r_2)}
558
Chengsong
parents: 557
diff changeset
  1687
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1688
		\inferrule{\textit{createdBySequence} \; r_1}{\textit{createdBySequence} \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1689
		(r_1 + r_2)}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1690
	\end{mathpar}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1691
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1692
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1693
The predicate $\textit{createdBySequence}$ is used to describe the shape of
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1694
the derivative regular expressions $(r_1\cdot r_2) \backslash s$:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1695
\begin{lemma}\label{recursivelyDerseq}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1696
	It is always the case that
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1697
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1698
		$\textit{createdBySequence} \; ( (r_1\cdot r_2) \backslash_r s) $
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1699
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1700
	holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1701
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1702
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1703
	By a reverse induction on the string $s$, where the inductive cases are $[]$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1704
	and $xs  @ [x]$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1705
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1706
\noindent
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1707
If we have a regular expression $r$ whose shape 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1708
fits into those described by $\textit{createdBySequence}$,
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1709
then we can convert between
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1710
$r \backslash_r c$ and $(\sflataux{r}) \backslash_r c$ with
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1711
$\sflataux{\_}'$:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1712
\begin{lemma}\label{sfauIdemDer}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1713
	If $\textit{createdBySequence} \; r$, then 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1714
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1715
		$\sflataux{ r \backslash_r c} = 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1716
		\llparenthesis (\map \; (\_ \backslash_r c) \; (\sflataux{r}) ) \rrparenthesis''$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1717
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1718
	holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1719
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1720
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1721
	By a simple induction on the inductive cases of $\textit{createdBySequence}.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1722
	$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1723
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1724
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1725
Now we are ready to express
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1726
the shape of $r_1 \cdot r_2 \backslash s$
558
Chengsong
parents: 557
diff changeset
  1727
\begin{lemma}\label{seqSfau0}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1728
	$\sflataux{(r_1 \cdot r_2) \backslash_r s} = (r_1 \backslash_r s) \cdot r_2 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1729
	:: (\map \; (r_2 \backslash_r \_) \; (\textit{Suffix} \; s \; r_1))$ 
558
Chengsong
parents: 557
diff changeset
  1730
\end{lemma}
Chengsong
parents: 557
diff changeset
  1731
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1732
	By a reverse induction on the string $s$, where the inductive cases 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1733
	are $[]$ and $xs @ [x]$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1734
	For the inductive case, we know that $\textit{createdBySequence} \; ((r_1 \cdot r_2)
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1735
	\backslash_r xs)$ holds from lemma \ref{recursivelyDerseq},
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1736
	which can be used to prove
558
Chengsong
parents: 557
diff changeset
  1737
	\[
Chengsong
parents: 557
diff changeset
  1738
		\map \; (r_2 \backslash_r \_) \; (\vsuf{[x]}{(r_1 \backslash_r xs)}) \;\; @ \;\;
Chengsong
parents: 557
diff changeset
  1739
		\map \; (\_ \backslash_r x) \; (\map \; (r_2 \backslash \_) \; (\vsuf{xs}{r_1}))
Chengsong
parents: 557
diff changeset
  1740
	\]
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1741
	=
558
Chengsong
parents: 557
diff changeset
  1742
	\[
Chengsong
parents: 557
diff changeset
  1743
		\map \; (r_2 \backslash_r \_) \; (\vsuf{xs @ [x]}{r_1})
Chengsong
parents: 557
diff changeset
  1744
	\]
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1745
	using lemma \ref{sfauIdemDer}.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1746
	This equality enables the inductive case to go through.
558
Chengsong
parents: 557
diff changeset
  1747
\end{proof}
Chengsong
parents: 557
diff changeset
  1748
\noindent 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1749
This lemma says that $(r_1\cdot r_2)\backslash s$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1750
can be flattened into a list whose head and tail meet the description
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1751
we gave earlier.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1752
%Note that this lemma does $\mathbf{not}$ depend on any
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1753
%specific definitions we used,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1754
%allowing people investigating derivatives to get an alternative
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1755
%view of what $r_1 \cdot r_2$ is.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  1756
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1757
We now use $\textit{createdBySequence}$ and
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1758
$\sflataux{\_}$ to describe an intuition
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1759
behind the sequence closed form.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1760
If two regular expressions only differ in the way their
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1761
alternatives are nested, then we should be able to get the same result
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1762
once we apply simplification to both of them:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1763
\begin{lemma}\label{sflatRsimpeq}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1764
	If $r$ is created from a sequence through
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1765
	a series of derivatives 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1766
	(i.e. if $\textit{createdBySequence} \; r$ holds), 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1767
	and that $\sflataux{r} = rs$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1768
	then we have
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1769
	that 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1770
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1771
		$\textit{rsimp} \; r = \textit{rsimp} \; (\sum \; rs)$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1772
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1773
	holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1774
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1775
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1776
	By an induction on the inductive cases of $\textit{createdBySequence}$. 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1777
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1778
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1779
Now we are ready for the closed form 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1780
for the sequence regular expressions (without the inner applications
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1781
of simplifications):
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1782
\begin{lemma}\label{seqClosedFormGeneral}
558
Chengsong
parents: 557
diff changeset
  1783
	$\rsimp{\sflat{(r_1 \cdot r_2) \backslash s} }
Chengsong
parents: 557
diff changeset
  1784
	=\rsimp{(\sum (  (r_1 \backslash s) \cdot r_2 :: 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1785
	\map\; (r_2 \backslash \_) \; (\vsuf{s}{r_1})))}$
558
Chengsong
parents: 557
diff changeset
  1786
\end{lemma}
Chengsong
parents: 557
diff changeset
  1787
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1788
	We know that 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1789
	$\sflataux{(r_1 \cdot r_2) \backslash_r s} = (r_1 \backslash_r s) \cdot r_2 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1790
	:: (\map \; (r_2 \backslash_r \_) \; (\textit{Suffix} \; s \; r_1))$
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1791
	holds
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1792
	by lemma \ref{seqSfau0}.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1793
	This allows the theorem to go through because of lemma \ref{sflatRsimpeq}.
558
Chengsong
parents: 557
diff changeset
  1794
\end{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1795
Together with the idempotency property of $\rsimp{}$ (lemma \ref{rsimpIdem}),
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1796
it is possible to convert the above lemma to obtain the
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1797
proper closed form for $\backslash_{rsimps}$ rather than $\backslash_r$:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1798
for  derivatives nested with simplification:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1799
\begin{theorem}\label{seqClosedForm}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1800
	$\rderssimp{(r_1 \cdot r_2)}{s} = \rsimp{(\sum ((r_1 \backslash s) \cdot r_2 ) 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1801
	:: (\map \; (r_2 \backslash \_) (\vsuf{s}{r_1})))}$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1802
\end{theorem}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1803
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1804
	By a case analysis of the string $s$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1805
	When $s$ is an empty list, the rewrite is straightforward.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1806
	When $s$ is a non-empty list, the
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1807
	lemmas \ref{seqClosedFormGeneral} and \ref{Simpders} apply,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1808
	making the proof go through.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1809
\end{proof}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  1810
\subsubsection{Closed Forms for Star Regular Expressions}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1811
The closed form for the star regular expression involves similar tricks
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1812
for the sequence regular expression.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1813
The $\textit{Suffix}$ function is now replaced by something
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1814
slightly more complex, because the growth pattern of star
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1815
regular expressions' derivatives is a bit different:
564
Chengsong
parents: 562
diff changeset
  1816
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1817
	\begin{tabular}{lclc}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1818
		$r^* $ & $\longrightarrow_{\backslash c}$ & 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1819
		$(r\backslash c)  \cdot  r^*$ & $\longrightarrow_{\backslash c'}$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1820
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1821
		$r \backslash cc'  \cdot r^* + r \backslash c' \cdot r^*$ &
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1822
		$\longrightarrow_{\backslash c''}$ & 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1823
		$(r_1 \backslash cc'c'' \cdot r^* + r \backslash c'') + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1824
		(r \backslash c'c'' \cdot r^* + r \backslash c'' \cdot r^*)$ & 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1825
		$\longrightarrow_{\backslash c'''}$ \\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1826
		\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1827
		$\ldots$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1828
	\end{tabular}
564
Chengsong
parents: 562
diff changeset
  1829
\end{center}
Chengsong
parents: 562
diff changeset
  1830
When we have a string $s = c :: c' :: c'' \ldots$  such that $r \backslash c$, $r \backslash cc'$, $r \backslash c'$, 
Chengsong
parents: 562
diff changeset
  1831
$r \backslash cc'c''$, $r \backslash c'c''$, $r\backslash c''$ etc. are all nullable,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1832
the number of terms in $r^* \backslash s$ will grow exponentially rather than linearly
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1833
in the sequence case.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1834
The good news is that the function $\textit{rsimp}$ will again
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  1835
ignore the difference between different nesting patterns of alternatives,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1836
and the exponentially growing star derivative like
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1837
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1838
	$(r_1 \backslash cc'c'' \cdot r^* + r \backslash c'') + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1839
	(r \backslash c'c'' \cdot r^* + r \backslash c'' \cdot r^*) $ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1840
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1841
can be treated as
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1842
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1843
	$\RALTS{[r_1 \backslash cc'c'' \cdot r^*, r \backslash c'', 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1844
	r \backslash c'c'' \cdot r^*, r \backslash c'' \cdot r^*]}$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1845
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1846
which can be de-duplicated by $\rDistinct$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1847
and therefore bounded finitely.
564
Chengsong
parents: 562
diff changeset
  1848
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1849
%and then de-duplicate terms of the form  ($s'$ being a substring of $s$).
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  1850
%This allows us to use a similar technique as $r_1 \cdot r_2$ case,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1851
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1852
Now the crux of this section is finding a suitable description
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1853
for $rs$ where
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1854
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1855
	$\rderssimp{r^*}{s} = \rsimp{\sum rs}$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1856
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1857
holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1858
In addition, the list $rs$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1859
shall be in the form of 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1860
$\map \; (\lambda s'. r\backslash s' \cdot r^*) \; Ss$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1861
The $Ss$ is a list of strings, and for example in the sequence
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1862
closed form it is specified as $\textit{Suffix} \; s \; r_1$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1863
To get $Ss$ for the star regular expression,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1864
we need to introduce $\starupdate$ and $\starupdates$:
558
Chengsong
parents: 557
diff changeset
  1865
\begin{center}
Chengsong
parents: 557
diff changeset
  1866
	\begin{tabular}{lcl}
Chengsong
parents: 557
diff changeset
  1867
		$\starupdate \; c \; r \; [] $ & $\dn$ & $[]$\\
Chengsong
parents: 557
diff changeset
  1868
		$\starupdate \; c \; r \; (s :: Ss)$ & $\dn$ & \\
Chengsong
parents: 557
diff changeset
  1869
						     & & $\textit{if} \; 
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  1870
						     (\rnullable \; (r \backslash_{rs} s))$ \\
558
Chengsong
parents: 557
diff changeset
  1871
						     & & $\textit{then} \;\; (s @ [c]) :: [c] :: (
Chengsong
parents: 557
diff changeset
  1872
						     \starupdate \; c \; r \; Ss)$ \\
Chengsong
parents: 557
diff changeset
  1873
						     & & $\textit{else} \;\; (s @ [c]) :: (
Chengsong
parents: 557
diff changeset
  1874
						     \starupdate \; c \; r \; Ss)$
Chengsong
parents: 557
diff changeset
  1875
	\end{tabular}
Chengsong
parents: 557
diff changeset
  1876
\end{center}
Chengsong
parents: 557
diff changeset
  1877
\begin{center}
Chengsong
parents: 557
diff changeset
  1878
	\begin{tabular}{lcl}
Chengsong
parents: 557
diff changeset
  1879
		$\starupdates \; [] \; r \; Ss$ & $=$ & $Ss$\\
Chengsong
parents: 557
diff changeset
  1880
		$\starupdates \; (c :: cs) \; r \; Ss$ &  $=$ &  $\starupdates \; cs \; r \; (
Chengsong
parents: 557
diff changeset
  1881
		\starupdate \; c \; r \; Ss)$
Chengsong
parents: 557
diff changeset
  1882
	\end{tabular}
Chengsong
parents: 557
diff changeset
  1883
\end{center}
Chengsong
parents: 557
diff changeset
  1884
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1885
Assuming we have that
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1886
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1887
	$\rderssimp{r^*}{s} = \rsimp{(\sum \map \; (\lambda s'. r\backslash s' \cdot r^*) \; Ss)}$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1888
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1889
holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1890
The idea of $\starupdate$ and $\starupdates$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1891
is to update $Ss$ when another
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1892
derivative is taken on $\rderssimp{r^*}{s}$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1893
w.r.t a character $c$ and a string $s'$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1894
respectively.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1895
Both $\starupdate$ and $\starupdates$ take three arguments as input:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1896
the new character $c$ or string $s$ to take derivative with, 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1897
the regular expression
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1898
$r$ under the star $r^*$, and the
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1899
list of strings $Ss$ for the derivative $r^* \backslash s$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1900
up until this point  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1901
such that 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1902
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1903
$(r^*) \backslash s = \sum_{s' \in sSet} (r\backslash s') \cdot r^*$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1904
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1905
is satisfied.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1906
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1907
Functions $\starupdate$ and $\starupdates$ characterise what the 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1908
star derivatives will look like once ``straightened out'' into lists.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1909
The helper functions for such operations will be similar to
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1910
$\sflat{\_}$, $\sflataux{\_}$ and $\sflataux{\_}$, which we defined for sequence.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1911
We use similar symbols to denote them, with a $*$ subscript to mark the difference.
558
Chengsong
parents: 557
diff changeset
  1912
\begin{center}
Chengsong
parents: 557
diff changeset
  1913
	\begin{tabular}{lcl}
Chengsong
parents: 557
diff changeset
  1914
		$\hflataux{r_1 + r_2}$ & $\dn$ & $\hflataux{r_1} @ \hflataux{r_2}$\\
Chengsong
parents: 557
diff changeset
  1915
		$\hflataux{r}$ & $\dn$ & $[r]$
Chengsong
parents: 557
diff changeset
  1916
	\end{tabular}
Chengsong
parents: 557
diff changeset
  1917
\end{center}
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1918
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  1919
\begin{center}
558
Chengsong
parents: 557
diff changeset
  1920
	\begin{tabular}{lcl}
Chengsong
parents: 557
diff changeset
  1921
		$\hflat{r_1 + r_2}$ & $\dn$ & $\sum (\hflataux {r_1} @ \hflataux {r_2}) $\\
Chengsong
parents: 557
diff changeset
  1922
		$\hflat{r}$ & $\dn$ & $r$
Chengsong
parents: 557
diff changeset
  1923
	\end{tabular}
Chengsong
parents: 557
diff changeset
  1924
\end{center}
Chengsong
parents: 557
diff changeset
  1925
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1926
These definitions are tailor-made for dealing with alternatives that have
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1927
originated from a star's derivatives.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1928
A typical star derivative always has the structure of a balanced binary tree:
564
Chengsong
parents: 562
diff changeset
  1929
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1930
	$(r_1 \backslash cc'c'' \cdot r^* + r \backslash c'') + 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1931
	(r \backslash c'c'' \cdot r^* + r \backslash c'' \cdot r^*) $ 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1932
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1933
All of the nested structures of alternatives
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1934
generated from derivatives are binary, and therefore
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1935
$\hflat{\_}$ and $\hflataux{\_}$ only deal with binary alternatives.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1936
$\hflat{\_}$ ``untangles'' like the following:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1937
\[
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1938
	\sum ((r_1 + r_2) + (r_3 + r_4))  + \ldots \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1939
	\stackrel{\hflat{\_}}{\longrightarrow} \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1940
	\RALTS{[r_1, r_2, \ldots, r_n]} 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1941
\]
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1942
Here is a lemma stating the recursive property of $\starupdate$ and $\starupdates$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1943
with the helpers $\hflat{\_}$ and $\hflataux{\_}$\footnote{The function $\textit{concat}$ takes a list of lists 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1944
			and merges each of the element lists to form a flattened list.}:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1945
\begin{lemma}\label{stupdateInduct1}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1946
	\mbox
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1947
	For a list of strings $Ss$, the following hold.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1948
	\begin{itemize}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1949
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1950
			If we do a derivative on the terms 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1951
			$r\backslash_r s \cdot r^*$ (where $s$ is taken from the list $Ss$),
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1952
			the result will be the same as if we apply $\starupdate$ to $Ss$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1953
			\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1954
				\begin{tabular}{c}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1955
			$\textit{concat} \; (\map \; (\hflataux{\_} \circ ( (\_\backslash_r x)
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1956
			\circ (\lambda s.\;\; (r \backslash_r s) \cdot r^*)))\; Ss )\;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1957
			$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1958
			\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1959
			$=$ \\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1960
			\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1961
			$\map \; (\lambda s. (r \backslash_r s) \cdot (r^*)) \; 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1962
			(\starupdate \; x \; r \; Ss)$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1963
				\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1964
			\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1965
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1966
			$\starupdates$ is ``composable'' w.r.t a derivative.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1967
			It piggybacks the character $x$ to the tail of the string
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1968
			$xs$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1969
			\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1970
				\begin{tabular}{c}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1971
					$\textit{concat} \; (\map \; \hflataux{\_} \; 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1972
					(\map \; (\_\backslash_r x) \; 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1973
					(\map \; (\lambda s.\;\; (r \backslash_r s) \cdot 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1974
					(r^*) ) \; (\starupdates \; xs \; r \; Ss))))$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1975
					\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1976
					$=$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1977
					\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1978
					$\map \; (\lambda s.\;\; (r\backslash_r s) \cdot (r^*)) \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1979
					(\starupdates \; (xs @ [x]) \; r \; Ss)$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1980
				\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1981
			\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1982
	\end{itemize}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1983
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1984
			
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1985
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1986
	Part 1 is by induction on $Ss$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1987
	Part 2 is by induction on $xs$, where $Ss$ is left to take arbitrary values.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1988
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1989
			
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1990
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1991
Like $\textit{createdBySequence}$, we need
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1992
a predicate for ``star-created'' regular expressions:
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1993
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1994
	\begin{mathpar}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1995
		\inferrule{\mbox{}}{ \textit{createdByStar}\; \RSEQ{ra}{\RSTAR{rb}} }
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1996
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1997
		\inferrule{  \textit{createdByStar} \; r_1\; \land  \; \textit{createdByStar} \; r_2 }{\textit{createdByStar} \; (r_1 + r_2) } 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  1998
	\end{mathpar}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  1999
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2000
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2001
All regular expressions created by taking derivatives of
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2002
$r_1 \cdot (r_2)^*$ satisfy the $\textit{createdByStar}$ predicate:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2003
\begin{lemma}\label{starDersCbs}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2004
	$\textit{createdByStar} \; ((r_1 \cdot r_2^*) \backslash_r s) $ holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2005
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2006
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2007
	By a reverse induction on $s$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2008
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2009
If a regular expression conforms to the shape of a star's derivative,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2010
then we can push an application of $\hflataux{\_}$ inside a derivative of it:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2011
\begin{lemma}\label{hfauPushin}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2012
	If $\textit{createdByStar} \; r$ holds, then
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2013
	\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2014
		$\hflataux{r \backslash_r c} = \textit{concat} \; (
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2015
		\map \; \hflataux{\_} (\map \; (\_\backslash_r c) \;(\hflataux{r})))$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2016
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2017
	holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2018
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2019
\begin{proof}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2020
	By an induction on the inductive cases of $\textit{createdByStar}$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2021
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2022
%This is not entirely true for annotated regular expressions: 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2023
%%TODO: bsimp bders \neq bderssimp
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2024
%\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2025
%	$(1+ (c\cdot \ASEQ{bs}{c^*}{c} ))$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2026
%\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2027
%For bit-codes, the order in which simplification is applied
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2028
%might cause a difference in the location they are placed.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2029
%If we want something like
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2030
%\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2031
%	$\bderssimp{r}{s} \myequiv \bsimp{\bders{r}{s}}$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2032
%\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2033
%Some "canonicalization" procedure is required,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2034
%which either pushes all the common bitcodes to nodes
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2035
%as senior as possible:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2036
%\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2037
%	$_{bs}(_{bs_1 @ bs'}r_1 + _{bs_1 @ bs''}r_2) \rightarrow _{bs @ bs_1}(_{bs'}r_1 + _{bs''}r_2) $
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2038
%\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2039
%or does the reverse. However bitcodes are not of interest if we are talking about
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2040
%the $\llbracket r \rrbracket$ size of a regex.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2041
%Therefore for the ease and simplicity of producing a
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2042
%proof for a size bound, we are happy to restrict ourselves to 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2043
%unannotated regular expressions, and obtain such equalities as
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2044
%TODO: rsimp sflat
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2045
% The simplification of a flattened out regular expression, provided it comes
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2046
%from the derivative of a star, is the same as the one nested.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2047
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2048
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2049
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2050
Now we introduce an inductive property
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2051
for $\starupdate$ and $\hflataux{\_}$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2052
\begin{lemma}\label{starHfauInduct}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2053
	If we do derivatives of $r^*$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2054
	with a string that starts with $c$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2055
	then flatten it out,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2056
	we obtain a list
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2057
	of the shape $\sum_{s' \in sS} (r\backslash_r s') \cdot r^*$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2058
	where $sS = \starupdates \; s \; r \; [[c]]$. Namely,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2059
	\begin{center}
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2060
	$\hflataux{(( (\rder{c}{r_0})\cdot(r_0^*))\backslash_{rs} s)} = 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2061
		\map \; (\lambda s_1. (r_0 \backslash_r s_1) \cdot (r_0^*)) \; 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2062
		(\starupdates \; s \; r_0 \; [[c]])$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2063
	\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2064
holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2065
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2066
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2067
	By an induction on $s$, the inductive cases
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2068
	being $[]$ and $s@[c]$. The lemmas \ref{hfauPushin} and \ref{starDersCbs} are used.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2069
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2070
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2071
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2072
The function $\hflataux{\_}$ has a similar effect as $\textit{flatten}$:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2073
\begin{lemma}\label{hflatauxGrewrites}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2074
	$a :: rs \grewrites \hflataux{a} @ rs$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2075
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2076
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2077
	By induction on $a$. $rs$ is set to take arbitrary values.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2078
\end{proof}
638
dd9dde2d902b comments till chap4
Chengsong
parents: 625
diff changeset
  2079
It is also not surprising that 
dd9dde2d902b comments till chap4
Chengsong
parents: 625
diff changeset
  2080
two regular expressions differing only in terms
dd9dde2d902b comments till chap4
Chengsong
parents: 625
diff changeset
  2081
of the
dd9dde2d902b comments till chap4
Chengsong
parents: 625
diff changeset
  2082
nesting of parentheses are equivalent w.r.t. $\textit{rsimp}$:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2083
\begin{lemma}\label{cbsHfauRsimpeq1}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2084
	$\rsimp{(r_1 + r_2)} = \rsimp{(\RALTS{\hflataux{r_1} @ \hflataux{r_2}})}$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2085
\end{lemma}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2086
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2087
\begin{proof}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2088
	By using the rewriting relation $\rightsquigarrow$
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2089
\end{proof}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2090
And from this we obtain the following fact: a 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2091
regular expression created by star 
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2092
is the same as its flattened version, up to equivalence under $\textit{bsimp}$.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2093
For example,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2094
\begin{lemma}\label{hfauRsimpeq2}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2095
	$\textit{createdByStar} \; r \implies \rsimp{r} = \rsimp{\RALTS{\hflataux{r}}}$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2096
\end{lemma}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2097
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2098
	By structural induction on $r$, where the induction rules 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2099
	are these of $\createdByStar{\_}$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2100
	Lemma \ref{cbsHfauRsimpeq1} is used in the inductive case.
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2101
\end{proof}
564
Chengsong
parents: 562
diff changeset
  2102
Chengsong
parents: 562
diff changeset
  2103
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2104
%Here is a corollary that states the lemma in
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2105
%a more intuitive way:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2106
%\begin{corollary}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2107
%	$\hflataux{r^* \backslash_r (c::xs)} = \map \; (\lambda s. (r \backslash_r s) \cdot
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2108
%	(r^*))\; (\starupdates \; c\; r\; [[c]])$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2109
%\end{corollary}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2110
%\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2111
%Note that this is also agnostic of the simplification
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2112
%function we defined, and is therefore of more general interest.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2113
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2114
Together with the rewriting relation
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2115
\begin{lemma}\label{starClosedForm6Hrewrites}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2116
	We have the following set of rewriting relations or equalities:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2117
	\begin{itemize}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2118
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2119
			$\textit{rsimp} \; (r^* \backslash_r (c::s)) 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2120
			\sequal
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2121
			\sum \; ( ( \sum (\lambda s. (r\backslash_r s) \cdot r^*) \; (
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2122
			\starupdates \; s \; r \; [ c::[]] ) ) )$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2123
		\item
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2124
			$r \backslash_{rsimps} (c::s) = \textit{rsimp} \; ( (
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2125
			\sum ( (\map \; (\lambda s_1. (r\backslash s_1) \; r^*) \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2126
			(\starupdates \;s \; r \; [ c::[] ])))))$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2127
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2128
			$\sum ( (\map \; (\lambda s. (r\backslash s) \; r^*) \; Ss))
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2129
			\sequal
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2130
			 \sum ( (\map \; (\lambda s. \textit{rsimp} \; (r\backslash s) \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2131
			 r^*) \; Ss) )$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2132
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2133
			$\map \; (\lambda s. (\rsimp{r \backslash_r s}) \cdot (r^*)) \; Ss
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2134
			\scfrewrites
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2135
			\map \; (\lambda s. (\rsimp{r \backslash_r s}) \cdot (r^*)) \; Ss$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2136
		\item
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2137
			$( ( \sum ( ( \map \ (\lambda s. \;\;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2138
			(\textit{rsimp} \; (r \backslash_r s)) \cdot r^*) \; (\starupdates \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2139
			s \; r \; [ c::[] ])))))$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2140
			$\sequal$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2141
			$( ( \sum ( ( \map \ (\lambda s. \;\;
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2142
			( r \backslash_{rsimps} s)) \cdot r^*) \; (\starupdates \;
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2143
			s \; r \; [ c::[] ]))))$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2144
	\end{itemize}
558
Chengsong
parents: 557
diff changeset
  2145
\end{lemma}
Chengsong
parents: 557
diff changeset
  2146
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2147
	Part 1 leads to part 2.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2148
	The rest of them are routine.
558
Chengsong
parents: 557
diff changeset
  2149
\end{proof}
Chengsong
parents: 557
diff changeset
  2150
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2151
Next the closed form for star regular expressions can be derived:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2152
\begin{theorem}\label{starClosedForm}
558
Chengsong
parents: 557
diff changeset
  2153
	$\rderssimp{r^*}{c::s} = 
Chengsong
parents: 557
diff changeset
  2154
	\rsimp{
Chengsong
parents: 557
diff changeset
  2155
		(\sum (\map \; (\lambda s. (\rderssimp{r}{s})\cdot r^*) \; 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2156
		(\starupdates \; s\; r \; [[c]])
558
Chengsong
parents: 557
diff changeset
  2157
		)
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2158
		)
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2159
	}
558
Chengsong
parents: 557
diff changeset
  2160
	$
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2161
\end{theorem}
558
Chengsong
parents: 557
diff changeset
  2162
\begin{proof}
Chengsong
parents: 557
diff changeset
  2163
	By an induction on $s$.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2164
	The lemmas \ref{rsimpIdem}, \ref{starHfauInduct}, \ref{starClosedForm6Hrewrites} 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2165
	and \ref{hfauRsimpeq2}
558
Chengsong
parents: 557
diff changeset
  2166
	are used.	
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2167
	In \ref{starClosedForm6Hrewrites}, the equalities are
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2168
	used to link the LHS and RHS.
558
Chengsong
parents: 557
diff changeset
  2169
\end{proof}
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2170
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2171
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2172
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2173
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2174
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2175
613
Chengsong
parents: 611
diff changeset
  2176
%----------------------------------------------------------------------------------------
Chengsong
parents: 611
diff changeset
  2177
%	SECTION ??
Chengsong
parents: 611
diff changeset
  2178
%----------------------------------------------------------------------------------------
Chengsong
parents: 611
diff changeset
  2179
Chengsong
parents: 611
diff changeset
  2180
%-----------------------------------
Chengsong
parents: 611
diff changeset
  2181
%	SECTION syntactic equivalence under simp
Chengsong
parents: 611
diff changeset
  2182
%-----------------------------------
Chengsong
parents: 611
diff changeset
  2183
Chengsong
parents: 611
diff changeset
  2184
Chengsong
parents: 611
diff changeset
  2185
%----------------------------------------------------------------------------------------
Chengsong
parents: 611
diff changeset
  2186
%	SECTION ALTS CLOSED FORM
Chengsong
parents: 611
diff changeset
  2187
%----------------------------------------------------------------------------------------
Chengsong
parents: 611
diff changeset
  2188
%\section{A Closed Form for \textit{ALTS}}
Chengsong
parents: 611
diff changeset
  2189
%Now we prove that  $rsimp (rders\_simp (RALTS rs) s) = rsimp (RALTS (map (\lambda r. rders\_simp r s) rs))$.
Chengsong
parents: 611
diff changeset
  2190
%
Chengsong
parents: 611
diff changeset
  2191
%
Chengsong
parents: 611
diff changeset
  2192
%There are a few key steps, one of these steps is
Chengsong
parents: 611
diff changeset
  2193
%
Chengsong
parents: 611
diff changeset
  2194
%
Chengsong
parents: 611
diff changeset
  2195
%
Chengsong
parents: 611
diff changeset
  2196
%One might want to prove this by something a simple statement like: 
Chengsong
parents: 611
diff changeset
  2197
%
Chengsong
parents: 611
diff changeset
  2198
%For this to hold we want the $\textit{distinct}$ function to pick up
Chengsong
parents: 611
diff changeset
  2199
%the elements before and after derivatives correctly:
Chengsong
parents: 611
diff changeset
  2200
%$r \in rset \equiv (rder x r) \in (rder x rset)$.
Chengsong
parents: 611
diff changeset
  2201
%which essentially requires that the function $\backslash$ is an injective mapping.
Chengsong
parents: 611
diff changeset
  2202
%
Chengsong
parents: 611
diff changeset
  2203
%Unfortunately the function $\backslash c$ is not an injective mapping.
Chengsong
parents: 611
diff changeset
  2204
%
Chengsong
parents: 611
diff changeset
  2205
%\subsection{function $\backslash c$ is not injective (1-to-1)}
Chengsong
parents: 611
diff changeset
  2206
%\begin{center}
Chengsong
parents: 611
diff changeset
  2207
%	The derivative $w.r.t$ character $c$ is not one-to-one.
Chengsong
parents: 611
diff changeset
  2208
%	Formally,
Chengsong
parents: 611
diff changeset
  2209
%	$\exists r_1 \;r_2. r_1 \neq r_2 \mathit{and} r_1 \backslash c = r_2 \backslash c$
Chengsong
parents: 611
diff changeset
  2210
%\end{center}
Chengsong
parents: 611
diff changeset
  2211
%This property is trivially true for the
Chengsong
parents: 611
diff changeset
  2212
%character regex example:
Chengsong
parents: 611
diff changeset
  2213
%\begin{center}
Chengsong
parents: 611
diff changeset
  2214
%	$r_1 = e; \; r_2 = d;\; r_1 \backslash c = \ZERO = r_2 \backslash c$
Chengsong
parents: 611
diff changeset
  2215
%\end{center}
Chengsong
parents: 611
diff changeset
  2216
%But apart from the cases where the derivative
Chengsong
parents: 611
diff changeset
  2217
%output is $\ZERO$, are there non-trivial results
Chengsong
parents: 611
diff changeset
  2218
%of derivatives which contain strings?
Chengsong
parents: 611
diff changeset
  2219
%The answer is yes.
Chengsong
parents: 611
diff changeset
  2220
%For example,
Chengsong
parents: 611
diff changeset
  2221
%\begin{center}
Chengsong
parents: 611
diff changeset
  2222
%	Let $r_1 = a^*b\;\quad r_2 = (a\cdot a^*)\cdot b + b$.\\
Chengsong
parents: 611
diff changeset
  2223
%	where $a$ is not nullable.\\
Chengsong
parents: 611
diff changeset
  2224
%	$r_1 \backslash c = ((a \backslash c)\cdot a^*)\cdot c + b \backslash c$\\
Chengsong
parents: 611
diff changeset
  2225
%	$r_2 \backslash c = ((a \backslash c)\cdot a^*)\cdot c + b \backslash c$
Chengsong
parents: 611
diff changeset
  2226
%\end{center}
Chengsong
parents: 611
diff changeset
  2227
%We start with two syntactically different regular expressions,
Chengsong
parents: 611
diff changeset
  2228
%and end up with the same derivative result.
Chengsong
parents: 611
diff changeset
  2229
%This is not surprising as we have such 
Chengsong
parents: 611
diff changeset
  2230
%equality as below in the style of Arden's lemma:\\
Chengsong
parents: 611
diff changeset
  2231
%\begin{center}
Chengsong
parents: 611
diff changeset
  2232
%	$L(A^*B) = L(A\cdot A^* \cdot B + B)$
Chengsong
parents: 611
diff changeset
  2233
%\end{center}
Chengsong
parents: 611
diff changeset
  2234
\section{Bounding Closed Forms}
Chengsong
parents: 611
diff changeset
  2235
Chengsong
parents: 611
diff changeset
  2236
In this section, we introduce how we formalised the bound
Chengsong
parents: 611
diff changeset
  2237
on closed forms.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2238
We first show that in general the number of regular expressions up to a certain 
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2239
size is finite.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2240
Then we prove that functions such as $\rflts$
613
Chengsong
parents: 611
diff changeset
  2241
will not cause the size of r-regular expressions to grow.
Chengsong
parents: 611
diff changeset
  2242
Putting this together with a general bound 
Chengsong
parents: 611
diff changeset
  2243
on the finiteness of distinct regular expressions
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2244
up to a specific size, we obtain a bound on 
613
Chengsong
parents: 611
diff changeset
  2245
the closed forms.
Chengsong
parents: 611
diff changeset
  2246
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2247
\subsection{Finiteness of Distinct Regular Expressions}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2248
We define the set of regular expressions whose size is no more than
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2249
a certain size $N$ as $\textit{sizeNregex} \; N$:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2250
\[
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2251
	\textit{sizeNregex} \; N \dn \{r\; \mid \;  \llbracket r \rrbracket_r \leq N \}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2252
\]
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2253
We have that $\textit{sizeNregex} \; N$ is always a finite set:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2254
\begin{lemma}\label{finiteSizeN}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2255
	$\textit{finite} \; (\textit{sizeNregex} \; N)$ holds.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2256
\end{lemma}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2257
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2258
	By splitting the set $\textit{sizeNregex} \; (N + 1)$ into
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2259
	subsets by their categories:
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2260
	$\{\ZERO_r, \ONE_r, c\}$, $\{r^* \mid r \in \textit{sizeNregex} \; N\}$,
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2261
	and so on. Each of these subsets is finitely bounded.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2262
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2263
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2264
From this we get a corollary that
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2265
if forall $r \in rs$, $\rsize{r} \leq N$, then the output of 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2266
$\rdistinct{rs}{\varnothing}$ is a list of regular
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2267
expressions of finite size depending on $N$ only. 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2268
\begin{corollary}\label{finiteSizeNCorollary}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2269
	$\rsize{\rdistinct{rs}{\varnothing}} \leq c_N * N$ holds,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2270
	where the constant $c_N$ is equal to $\textit{card} \; (\textit{sizeNregex} \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2271
	N)$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2272
\end{corollary}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2273
\begin{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2274
	For all $r$ in 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2275
	$\textit{set} \; (\rdistinct{rs}{\varnothing})$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2276
	it is always the case that $\rsize{r} \leq N$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2277
	In addition, the list length is bounded by
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2278
	$c_N$, yielding the desired bound.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2279
\end{proof}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2280
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2281
This fact will be handy in estimating the closed form sizes.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2282
%We have proven that the size of the
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2283
%output of $\textit{rdistinct} \; rs' \; \varnothing$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2284
%is bounded by a constant $N * c_N$ depending only on $N$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2285
%provided that each of $rs'$'s element
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2286
%is bounded by $N$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2287
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2288
\subsection{$\textit{rsimp}$ Does Not Increase the Size}
613
Chengsong
parents: 611
diff changeset
  2289
Although it seems evident, we need a series
Chengsong
parents: 611
diff changeset
  2290
of non-trivial lemmas to establish that functions such as $\rflts$
Chengsong
parents: 611
diff changeset
  2291
do not cause the regular expressions to grow.
Chengsong
parents: 611
diff changeset
  2292
\begin{lemma}\label{rsimpMonoLemmas}
Chengsong
parents: 611
diff changeset
  2293
	\mbox{}
Chengsong
parents: 611
diff changeset
  2294
	\begin{itemize}
Chengsong
parents: 611
diff changeset
  2295
		\item
Chengsong
parents: 611
diff changeset
  2296
			\[
Chengsong
parents: 611
diff changeset
  2297
				\llbracket \rsimpalts \; rs \rrbracket_r \leq
Chengsong
parents: 611
diff changeset
  2298
				\llbracket \sum \; rs \rrbracket_r
Chengsong
parents: 611
diff changeset
  2299
			\]
Chengsong
parents: 611
diff changeset
  2300
		\item
Chengsong
parents: 611
diff changeset
  2301
			\[
Chengsong
parents: 611
diff changeset
  2302
				\llbracket \rsimpseq \; r_1 \;  r_2 \rrbracket_r \leq
Chengsong
parents: 611
diff changeset
  2303
				\llbracket r_1 \cdot r_2 \rrbracket_r
Chengsong
parents: 611
diff changeset
  2304
			\]
Chengsong
parents: 611
diff changeset
  2305
		\item
Chengsong
parents: 611
diff changeset
  2306
			\[
Chengsong
parents: 611
diff changeset
  2307
				\llbracket \rflts \; rs \rrbracket_r  \leq
Chengsong
parents: 611
diff changeset
  2308
				\llbracket rs \rrbracket_r 
Chengsong
parents: 611
diff changeset
  2309
			\]
Chengsong
parents: 611
diff changeset
  2310
		\item
Chengsong
parents: 611
diff changeset
  2311
			\[
Chengsong
parents: 611
diff changeset
  2312
				\llbracket \rDistinct \; rs \; ss \rrbracket_r  \leq
Chengsong
parents: 611
diff changeset
  2313
				\llbracket rs \rrbracket_r 
Chengsong
parents: 611
diff changeset
  2314
			\]
Chengsong
parents: 611
diff changeset
  2315
		\item
Chengsong
parents: 611
diff changeset
  2316
			If all elements $a$ in the set $as$ satisfy the property
Chengsong
parents: 611
diff changeset
  2317
			that $\llbracket \textit{rsimp} \; a \rrbracket_r \leq
Chengsong
parents: 611
diff changeset
  2318
			\llbracket a \rrbracket_r$, then we have 
Chengsong
parents: 611
diff changeset
  2319
			\[
Chengsong
parents: 611
diff changeset
  2320
				\llbracket \; \rsimpalts \; (\textit{rdistinct} \;
Chengsong
parents: 611
diff changeset
  2321
				(\textit{rflts} \; (\textit{map}\;\textit{rsimp} as)) \{\})
Chengsong
parents: 611
diff changeset
  2322
				\rrbracket \leq
Chengsong
parents: 611
diff changeset
  2323
				\llbracket \; \sum \; (\rDistinct \; (\rflts \;(\map \;
Chengsong
parents: 611
diff changeset
  2324
				\textit{rsimp} \; x))\; \{ \} ) \rrbracket_r 
Chengsong
parents: 611
diff changeset
  2325
			\]
Chengsong
parents: 611
diff changeset
  2326
	\end{itemize}
Chengsong
parents: 611
diff changeset
  2327
\end{lemma}
Chengsong
parents: 611
diff changeset
  2328
\begin{proof}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2329
	Points 1, 3, and 4 can be proven by an induction on $rs$.
613
Chengsong
parents: 611
diff changeset
  2330
	Point 2 is by case analysis on $r_1$ and $r_2$.
Chengsong
parents: 611
diff changeset
  2331
	The last part is a corollary of the previous ones.
Chengsong
parents: 611
diff changeset
  2332
\end{proof}
Chengsong
parents: 611
diff changeset
  2333
\noindent
Chengsong
parents: 611
diff changeset
  2334
With the lemmas for each inductive case in place, we are ready to get 
Chengsong
parents: 611
diff changeset
  2335
the non-increasing property as a corollary:
Chengsong
parents: 611
diff changeset
  2336
\begin{corollary}\label{rsimpMono}
Chengsong
parents: 611
diff changeset
  2337
	$\llbracket \textit{rsimp} \; r \rrbracket_r \leq \llbracket r \rrbracket_r$
Chengsong
parents: 611
diff changeset
  2338
\end{corollary}
Chengsong
parents: 611
diff changeset
  2339
\begin{proof}
Chengsong
parents: 611
diff changeset
  2340
	By \ref{rsimpMonoLemmas}.
Chengsong
parents: 611
diff changeset
  2341
\end{proof}
Chengsong
parents: 611
diff changeset
  2342
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2343
\subsection{Estimating the Closed Forms' sizes}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2344
We recap the closed forms we obtained
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2345
earlier:
558
Chengsong
parents: 557
diff changeset
  2346
\begin{itemize}
Chengsong
parents: 557
diff changeset
  2347
	\item
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2348
		$\rderssimp{(\sum rs)}{s} \sequal
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2349
		\sum \; (\map \; (\rderssimp{\_}{s}) \; rs)$
558
Chengsong
parents: 557
diff changeset
  2350
	\item
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2351
		$\rderssimp{(r_1 \cdot r_2)}{s} \sequal \sum ((r_1 \backslash s) \cdot r_2 ) 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2352
		:: (\map \; (r_2 \backslash \_) (\vsuf{s}{r_1}))$
558
Chengsong
parents: 557
diff changeset
  2353
	\item
Chengsong
parents: 557
diff changeset
  2354
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2355
		$\rderssimp{r^*}{c::s} = 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2356
		\rsimp{
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2357
			(\sum (\map \; (\lambda s. (\rderssimp{r}{s})\cdot r^*) \; 
558
Chengsong
parents: 557
diff changeset
  2358
			(\starupdates \; s\; r \; [[c]])
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2359
			)
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2360
			)
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2361
		}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2362
		$
558
Chengsong
parents: 557
diff changeset
  2363
\end{itemize}	
Chengsong
parents: 557
diff changeset
  2364
\noindent	
Chengsong
parents: 557
diff changeset
  2365
The closed forms on the left-hand-side
Chengsong
parents: 557
diff changeset
  2366
are all of the same shape: $\rsimp{ (\sum rs)} $.
Chengsong
parents: 557
diff changeset
  2367
Such regular expression will be bounded by the size of $\sum rs'$, 
Chengsong
parents: 557
diff changeset
  2368
where every element in $rs'$ is distinct, and each element 
Chengsong
parents: 557
diff changeset
  2369
can be described by some inductive sub-structures 
Chengsong
parents: 557
diff changeset
  2370
(for example when $r = r_1 \cdot r_2$ then $rs'$ 
Chengsong
parents: 557
diff changeset
  2371
will be solely comprised of $r_1 \backslash s'$ 
Chengsong
parents: 557
diff changeset
  2372
and $r_2 \backslash s''$, $s'$ and $s''$ being 
Chengsong
parents: 557
diff changeset
  2373
sub-strings of $s$).
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2374
which will each have a size upper bound 
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2375
according to the inductive hypothesis, which controls $r \backslash s$.
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  2376
558
Chengsong
parents: 557
diff changeset
  2377
We elaborate the above reasoning by a series of lemmas
Chengsong
parents: 557
diff changeset
  2378
below, where straightforward proofs are omitted.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2379
%We want to apply it to our setting $\rsize{\rsimp{\sum rs}}$.
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2380
We show that $\textit{rdistinct}$ and $\rflts$
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2381
working together is at least as 
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2382
good as $\textit{rdistinct}$ alone, which can be written as
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2383
\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2384
	$\llbracket \rdistinct{(\rflts \; \textit{rs})}{\varnothing} \rrbracket_r 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2385
	\leq 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2386
	\llbracket \rdistinct{rs}{\varnothing}  \rrbracket_r  $.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2387
\end{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2388
We need this so that we know the outcome of our real 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2389
simplification is better than or equal to a rough estimate,
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2390
and therefore can be bounded by that estimate.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2391
This is a bit harder to establish compared to proving
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2392
$\textit{flts}$ does not make a list larger (which can
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2393
be proven using routine induction):
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2394
\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2395
	$\llbracket  \textit{rflts}\; rs \rrbracket_r \leq
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2396
	\llbracket  \textit{rs} \rrbracket_r$
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2397
\end{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2398
We cannot simply prove how each helper function
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2399
reduces the size and then put them together:
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2400
From
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2401
\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2402
$\llbracket  \textit{rflts}\; rs \rrbracket_r \leq
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2403
	\llbracket  \textit{rs} \rrbracket_r$
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2404
\end{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2405
and
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2406
\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2407
     $\llbracket  \textit{rdistinct} \; rs \; \varnothing \leq
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2408
     \llbracket rs \rrbracket_r$
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2409
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2410
one cannot infer 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2411
\begin{center}
558
Chengsong
parents: 557
diff changeset
  2412
	$\llbracket \rdistinct{(\rflts \; \textit{rs})}{\varnothing} \rrbracket_r 
Chengsong
parents: 557
diff changeset
  2413
	\leq 
Chengsong
parents: 557
diff changeset
  2414
	\llbracket \rdistinct{rs}{\varnothing}  \rrbracket_r  $.
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2415
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2416
What we can infer is that 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2417
\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2418
	$\llbracket \rdistinct{(\rflts \; \textit{rs})}{\varnothing} \rrbracket_r 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2419
	\leq
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2420
	\llbracket rs \rrbracket_r$
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2421
\end{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2422
but this estimate is too rough and $\llbracket rs \rrbracket_r$	is unbounded.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2423
The way we 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2424
get around this is by first proving a more general lemma 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2425
(so that the inductive case goes through):
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2426
\begin{lemma}\label{fltsSizeReductionAlts}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2427
	If we have three accumulator sets:
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2428
	$noalts\_set$, $alts\_set$ and $corr\_set$,
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2429
	satisfying:
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2430
	\begin{itemize}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2431
		\item
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2432
			$\forall r \in noalts\_set. \; \nexists xs.\; r = \sum  xs$
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2433
		\item
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2434
			$\forall r \in alts\_set. \; \exists xs. \; r = \sum xs
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2435
			\; \textit{and} \; set \; xs \subseteq corr\_set$
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2436
	\end{itemize}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2437
	then we have that
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2438
	\begin{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2439
	\begin{tabular}{lcl}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2440
	$\llbracket  (\textit{rdistinct} \; (\textit{rflts} \; as) \;
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2441
	(noalts\_set \cup corr\_set)) \rrbracket_r$ & $\leq$ &\\
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2442
						    $\llbracket  (\textit{rdistinct} \; as \; (noalts\_set \cup alts\_set \cup
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2443
	\{ \ZERO_r \} )) \rrbracket_r$ & & \\ 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2444
	\end{tabular}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2445
	\end{center}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2446
		holds.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  2447
\end{lemma}
558
Chengsong
parents: 557
diff changeset
  2448
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2449
We split the accumulator into two parts: the part
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2450
which contains alternative regular expressions ($alts\_set$), and 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2451
the part without any of them($noalts\_set$).
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2452
This is because $\rflts$ opens up the alternatives in $as$,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2453
causing the accumulators on both sides of the inequality
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2454
to diverge slightly.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2455
If we want to compare the accumulators that are not
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2456
perfectly in sync, we need to consider the alternatives and non-alternatives
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2457
separately.
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2458
The set $corr\_set$ is the corresponding set
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2459
of $alts\_set$ with all elements under the alternative constructor
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2460
spilled out.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2461
\begin{proof}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2462
	By induction on the list $as$. We make use of lemma \ref{rdistinctConcat}.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2463
\end{proof}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2464
By setting all three sets to the empty set, one gets the desired size estimate:
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2465
\begin{corollary}\label{interactionFltsDB}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2466
	$\llbracket \rdistinct{(\rflts \; \textit{rs})}{\varnothing} \rrbracket_r 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2467
	\leq 
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2468
	\llbracket \rdistinct{rs}{\varnothing}  \rrbracket_r  $.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2469
\end{corollary}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2470
\begin{proof}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2471
	By using the lemma \ref{fltsSizeReductionAlts}.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2472
\end{proof}
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2473
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2474
The intuition for why this is true
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2475
is that if we remove duplicates from the $\textit{LHS}$, at least the same amount of 
558
Chengsong
parents: 557
diff changeset
  2476
duplicates will be removed from the list $\textit{rs}$ in the $\textit{RHS}$. 
Chengsong
parents: 557
diff changeset
  2477
Chengsong
parents: 557
diff changeset
  2478
Now this $\rsimp{\sum rs}$ can be estimated using $\rdistinct{rs}{\varnothing}$:
Chengsong
parents: 557
diff changeset
  2479
\begin{lemma}\label{altsSimpControl}
Chengsong
parents: 557
diff changeset
  2480
	$\rsize{\rsimp{\sum rs}} \leq \rsize{\rdistinct{rs}{\varnothing}}+ 1$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  2481
\end{lemma}
558
Chengsong
parents: 557
diff changeset
  2482
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2483
	By using corollary \ref{interactionFltsDB}.
558
Chengsong
parents: 557
diff changeset
  2484
\end{proof}
Chengsong
parents: 557
diff changeset
  2485
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2486
This is a key lemma in establishing the bounds of all the 
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2487
closed forms.
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2488
With this we are now ready to control the sizes of
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2489
$(r_1 \cdot r_2 )\backslash s$ and $r^* \backslash s$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2490
\begin{theorem}\label{rBound}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2491
	For any regex $r$, $\exists N_r. \forall s. \; \rsize{\rderssimp{r}{s}} \leq N_r$
558
Chengsong
parents: 557
diff changeset
  2492
\end{theorem}
Chengsong
parents: 557
diff changeset
  2493
\noindent
Chengsong
parents: 557
diff changeset
  2494
\begin{proof}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2495
	We prove this by induction on $r$. The base cases for $\RZERO$,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2496
	$\RONE $ and $\RCHAR{c}$ are straightforward. 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2497
	In the sequence $r_1 \cdot r_2$ case,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2498
	the inductive hypotheses state 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2499
	$\exists N_1. \forall s. \; \llbracket \rderssimp{r}{s} \rrbracket \leq N_1$ and
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2500
	$\exists N_2. \forall s. \; \llbracket \rderssimp{r_2}{s} \rrbracket \leq N_2$. 
562
Chengsong
parents: 561
diff changeset
  2501
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2502
	When the string $s$ is not empty, we can reason as follows
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2503
	%
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2504
	\begin{center}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2505
		\begin{tabular}{lcll}
558
Chengsong
parents: 557
diff changeset
  2506
& & $ \llbracket   \rderssimp{r_1\cdot r_2 }{s} \rrbracket_r $\\
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2507
& $ = $ & $\llbracket \rsimp{(\sum(r_1 \backslash_{rsimps} s \cdot r_2 \; \;  :: \; \; 
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2508
		\map \; (r_2\backslash_{rsimps} \_)\; (\vsuf{s}{r})))} \rrbracket_r $ & (1) \\			
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2509
										     & $\leq$ & $\llbracket \rdistinct{(r_1 \backslash_{rsimps} s \cdot r_2 \; \;  :: \; \; 
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2510
	\map \; (r_2\backslash_{rsimps} \_)\; (\vsuf{s}{r}))}{\varnothing} \rrbracket_r  + 1$ & (2) \\
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2511
											     & $\leq$ & $2 + N_1 + \rsize{r_2} + (N_2 * (card\;(\sizeNregex \; N_2)))$ & (3)\\
558
Chengsong
parents: 557
diff changeset
  2512
\end{tabular}
Chengsong
parents: 557
diff changeset
  2513
\end{center}
561
486fb297ac7c more done
Chengsong
parents: 559
diff changeset
  2514
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2515
(1) is by theorem \ref{seqClosedForm}.
561
486fb297ac7c more done
Chengsong
parents: 559
diff changeset
  2516
(2) is by \ref{altsSimpControl}.
486fb297ac7c more done
Chengsong
parents: 559
diff changeset
  2517
(3) is by \ref{finiteSizeNCorollary}.
562
Chengsong
parents: 561
diff changeset
  2518
Chengsong
parents: 561
diff changeset
  2519
Chengsong
parents: 561
diff changeset
  2520
Combining the cases when $s = []$ and $s \neq []$, we get (4):
Chengsong
parents: 561
diff changeset
  2521
\begin{center}
Chengsong
parents: 561
diff changeset
  2522
	\begin{tabular}{lcll}
Chengsong
parents: 561
diff changeset
  2523
		$\rsize{(r_1 \cdot r_2) \backslash_r s}$ & $\leq$ & 
Chengsong
parents: 561
diff changeset
  2524
		$max \; (2 + N_1 + 
Chengsong
parents: 561
diff changeset
  2525
		\llbracket r_2 \rrbracket_r + 
Chengsong
parents: 561
diff changeset
  2526
		N_2 * (card\; (\sizeNregex \; N_2))) \; \rsize{r_1\cdot r_2}$ & (4)
Chengsong
parents: 561
diff changeset
  2527
	\end{tabular}
Chengsong
parents: 561
diff changeset
  2528
\end{center}
558
Chengsong
parents: 557
diff changeset
  2529
562
Chengsong
parents: 561
diff changeset
  2530
We reason similarly for  $\STAR$.
Chengsong
parents: 561
diff changeset
  2531
The inductive hypothesis is
Chengsong
parents: 561
diff changeset
  2532
$\exists N. \forall s. \; \llbracket \rderssimp{r}{s} \rrbracket \leq N$.
564
Chengsong
parents: 562
diff changeset
  2533
Let $n_r = \llbracket r^* \rrbracket_r$.
562
Chengsong
parents: 561
diff changeset
  2534
When $s = c :: cs$ is not empty,
Chengsong
parents: 561
diff changeset
  2535
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2536
	\begin{tabular}{lcll}
562
Chengsong
parents: 561
diff changeset
  2537
& & $ \llbracket   \rderssimp{r^* }{c::cs} \rrbracket_r $\\
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2538
& $ = $ & $\llbracket \rsimp{(\sum (\map \; (\lambda s. (r \backslash_{rsimps} s) \cdot r^*) \; (\starupdates\; 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2539
	cs \; r \; [[c]] )) )} \rrbracket_r $ & (5) \\			
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2540
					      & $\leq$ & $\llbracket 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2541
					      \rdistinct{
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2542
						      (\map \; 
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2543
						      (\lambda s. (r \backslash_{rsimps} s) \cdot r^*) \; 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2544
						      (\starupdates\; cs \; r \; [[c]] )
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2545
					      )}
562
Chengsong
parents: 561
diff changeset
  2546
	{\varnothing} \rrbracket_r  + 1$ & (6) \\
Chengsong
parents: 561
diff changeset
  2547
					 & $\leq$ & $1 + (\textit{card} (\sizeNregex \; (N + n_r)))
Chengsong
parents: 561
diff changeset
  2548
	* (1 + (N + n_r)) $ & (7)\\
Chengsong
parents: 561
diff changeset
  2549
\end{tabular}
Chengsong
parents: 561
diff changeset
  2550
\end{center}
Chengsong
parents: 561
diff changeset
  2551
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2552
(5) is by theorem \ref{starClosedForm}.
562
Chengsong
parents: 561
diff changeset
  2553
(6) is by \ref{altsSimpControl}.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2554
(7) is by corollary \ref{finiteSizeNCorollary}.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2555
Combining with the case when $s = []$, one obtains
562
Chengsong
parents: 561
diff changeset
  2556
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2557
	\begin{tabular}{lcll}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2558
		$\rsize{r^* \backslash_r s}$ & $\leq$ & $max \; n_r \; 1 + (\textit{card} (\sizeNregex \; (N + n_r)))
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2559
		* (1 + (N + n_r)) $ & (8)\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2560
	\end{tabular}
562
Chengsong
parents: 561
diff changeset
  2561
\end{center}
Chengsong
parents: 561
diff changeset
  2562
\noindent
Chengsong
parents: 561
diff changeset
  2563
Chengsong
parents: 561
diff changeset
  2564
The alternative case is slightly less involved.
Chengsong
parents: 561
diff changeset
  2565
The inductive hypothesis 
Chengsong
parents: 561
diff changeset
  2566
is equivalent to $\exists N. \forall r \in (\map \; (\_ \backslash_r s) \; rs). \rsize{r} \leq N$.
Chengsong
parents: 561
diff changeset
  2567
In the case when $s = c::cs$, we have 
Chengsong
parents: 561
diff changeset
  2568
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2569
	\begin{tabular}{lcll}
562
Chengsong
parents: 561
diff changeset
  2570
& & $ \llbracket   \rderssimp{\sum rs }{c::cs} \rrbracket_r $\\
620
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2571
& $ = $ & $\llbracket \rsimp{(\sum (\map \; (\_ \backslash_{rsimps} s)  \; rs) )} \rrbracket_r $ & (9) \\			
ae6010c14e49 chap6 almost done
Chengsong
parents: 618
diff changeset
  2572
& $\leq$ & $\llbracket (\sum (\map \; (\_ \backslash_{rsimps} s)  \; rs) ) \rrbracket_r $  & (10) \\
562
Chengsong
parents: 561
diff changeset
  2573
& $\leq$ & $1 + N * (length \; rs) $ & (11)\\
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2574
	\end{tabular}
562
Chengsong
parents: 561
diff changeset
  2575
\end{center}
Chengsong
parents: 561
diff changeset
  2576
\noindent
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2577
(9) is by theorem \ref{altsClosedForm}, (10) by lemma \ref{rsimpMono} and (11) by inductive hypothesis.
562
Chengsong
parents: 561
diff changeset
  2578
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2579
Combining with the case when $s = []$, we obtain 
562
Chengsong
parents: 561
diff changeset
  2580
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2581
	\begin{tabular}{lcll}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2582
		$\rsize{\sum rs \backslash_r s}$ & $\leq$ & $max \; \rsize{\sum rs} \; 1+N*(length \; rs)$ 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2583
						 & (12)\\
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  2584
	\end{tabular}
562
Chengsong
parents: 561
diff changeset
  2585
\end{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2586
We have all the inductive cases proven.
558
Chengsong
parents: 557
diff changeset
  2587
\end{proof}
Chengsong
parents: 557
diff changeset
  2588
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2589
This leads to our main result on the size bound:
564
Chengsong
parents: 562
diff changeset
  2590
\begin{corollary}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2591
	For any annotated regular expression $a$, $\exists N_r. \forall s. \; \rsize{\bderssimp{a}{s}} \leq N_r$
564
Chengsong
parents: 562
diff changeset
  2592
\end{corollary}
Chengsong
parents: 562
diff changeset
  2593
\begin{proof}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  2594
	By lemma \ref{sizeRelations} and theorem \ref{rBound}.
564
Chengsong
parents: 562
diff changeset
  2595
\end{proof}
558
Chengsong
parents: 557
diff changeset
  2596
\noindent
Chengsong
parents: 557
diff changeset
  2597
609
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2598
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2599
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2600
61139fdddae0 chap1 totally done
Chengsong
parents: 601
diff changeset
  2601
558
Chengsong
parents: 557
diff changeset
  2602
%-----------------------------------
Chengsong
parents: 557
diff changeset
  2603
%	SECTION 2
Chengsong
parents: 557
diff changeset
  2604
%-----------------------------------
Chengsong
parents: 557
diff changeset
  2605
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2606
\section{Bounded Repetitions}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2607
We have promised in chapter \ref{Introduction}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2608
that our lexing algorithm can potentially be extended
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2609
to handle bounded repetitions
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2610
in natural and elegant ways.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2611
Now we fulfill our promise by adding support for 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2612
the ``exactly-$n$-times'' bounded regular expression $r^{\{n\}}$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2613
We add clauses in our derivatives-based lexing algorithms (with simplifications)
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2614
introduced in chapter \ref{Bitcoded2}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2615
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2616
\subsection{Augmented Definitions}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2617
There are a number of definitions that need to be augmented.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2618
The most notable one would be the POSIX rules for $r^{\{n\}}$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2619
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2620
	\begin{mathpar}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2621
		\inferrule{\forall v \in vs_1. \vdash v:r \land 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2622
		|v| \neq []\\ \forall v \in vs_2. \vdash v:r \land |v| = []\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2623
		\textit{length} \; (vs_1 @ vs_2) = n}{\textit{Stars} \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2624
		(vs_1 @ vs_2) : r^{\{n\}} }
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2625
	\end{mathpar}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2626
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2627
As Ausaf had pointed out \cite{Ausaf},
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2628
sometimes empty iterations have to be taken to get
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2629
a match with exactly $n$ repetitions,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2630
and hence the $vs_2$ part.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2631
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2632
Another important definition would be the size:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2633
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2634
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2635
		$\llbracket r^{\{n\}} \rrbracket_r$ & $\dn$ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2636
		$\llbracket r \rrbracket_r + n$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2637
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2638
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2639
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2640
Arguably we should use $\log \; n$ for the size because
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2641
the number of digits increases logarithmically w.r.t $n$.
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2642
For simplicity we choose to add the counter directly to the size.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2643
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2644
The derivative w.r.t a bounded regular expression
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2645
is given as 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2646
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2647
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2648
		$r^{\{n\}} \backslash_r c$ & $\dn$ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2649
		$r\backslash_r c \cdot r^{\{n-1\}} \;\; \textit{if} \; n \geq 1$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2650
					   & & $\RZERO \;\quad \quad\quad \quad
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2651
					   \textit{otherwise}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2652
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2653
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2654
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2655
For brevity, we sometimes use NTIMES to refer to bounded 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2656
regular expressions.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2657
The $\mkeps$ function clause for NTIMES would be
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2658
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2659
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2660
		$\mkeps \; r^{\{n\}} $ & $\dn$ & $\Stars \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2661
		(\textit{replicate} \; n\; (\mkeps \; r))$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2662
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2663
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2664
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2665
The injection looks like
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2666
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2667
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2668
		$\inj \; r^{\{n\}} \; c\; (\Seq \;v \; (\Stars \; vs)) $ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2669
		$\dn$ & $\Stars \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2670
		((\inj \; r \;c \;v ) :: vs)$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2671
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2672
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2673
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2674
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2675
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2676
\subsection{Proofs for the Augmented Lexing Algorithm}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2677
We need to maintain two proofs with the additional $r^{\{n\}}$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2678
construct: the 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2679
correctness proof in chapter \ref{Bitcoded2},
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2680
and the finiteness proof in chapter \ref{Finite}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2681
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2682
\subsubsection{Correctness Proof Augmentation}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2683
The correctness of $\textit{lexer}$ and $\textit{blexer}$ with bounded repetitions
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2684
have been proven by Ausaf and Urban\cite{AusafDyckhoffUrban2016}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2685
As they have commented, once the definitions are in place,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2686
the proofs given for the basic regular expressions will extend to
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2687
bounded regular expressions, and there are no ``surprises''.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2688
We confirm this point because the correctness theorem would also
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2689
extend without surprise to $\blexersimp$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2690
The rewrite rules such as $\rightsquigarrow$, $\stackrel{s}{\rightsquigarrow}$ and so on
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2691
do not need to be changed,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2692
and only a few lemmas such as lemma \ref{fltsPreserves} need to be adjusted to 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2693
add one more line which can be solved by the Sledgehammer tool
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2694
to solve the $r^{\{n\}}$ inductive case.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2695
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2696
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2697
\subsubsection{Finiteness Proof Augmentation}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2698
The bounded repetitions are
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2699
very similar to stars, and therefore the treatment
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2700
is similar, with minor changes to handle some slight complications
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2701
when the counter reaches 0.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2702
The exponential growth is similar:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2703
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2704
	\begin{tabular}{ll}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2705
		$r^{\{n\}} $ & $\longrightarrow_{\backslash c}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2706
		$(r\backslash c)  \cdot  
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2707
		r^{\{n - 1\}}*$ & $\longrightarrow_{\backslash c'}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2708
		\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2709
		$r \backslash cc'  \cdot r^{\{n - 2\}}* + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2710
		r \backslash c' \cdot r^{\{n - 1\}}*$ &
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2711
		$\longrightarrow_{\backslash c''}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2712
		\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2713
		$(r_1 \backslash cc'c'' \cdot r^{\{n-3\}}* + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2714
		r \backslash c''\cdot r^{\{n-1\}}) + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2715
		(r \backslash c'c'' \cdot r^{\{n-2\}}* + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2716
		r \backslash c'' \cdot r^{\{n-1\}}*)$ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2717
		$\longrightarrow_{\backslash c'''}$ \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2718
		\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2719
		$\ldots$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2720
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2721
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2722
Again, we assume that $r\backslash c$, $r \backslash cc'$ and so on
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2723
are all nullable.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2724
The flattened list of terms for $r^{\{n\}} \backslash_{rs} s$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2725
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2726
	$[r_1 \backslash cc'c'' \cdot r^{\{n-3\}}*,\;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2727
	r \backslash c''\cdot r^{\{n-1\}}, \; 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2728
	r \backslash c'c'' \cdot r^{\{n-2\}}*, \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2729
	r \backslash c'' \cdot r^{\{n-1\}}*,\; \ldots ]$  
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2730
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2731
that comes from 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2732
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2733
		$(r_1 \backslash cc'c'' \cdot r^{\{n-3\}}* + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2734
		r \backslash c''\cdot r^{\{n-1\}}) + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2735
		(r \backslash c'c'' \cdot r^{\{n-2\}}* + 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2736
		r \backslash c'' \cdot r^{\{n-1\}}*)+ \ldots$ 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2737
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2738
are made of sequences with different tails, where the counters
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2739
might differ.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2740
The observation for maintaining the bound is that
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2741
these counters never exceed $n$, the original
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2742
counter. With the number of counters staying finite,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2743
$\rDistinct$ will deduplicate and keep the list finite.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2744
We introduce this idea as a lemma once we describe all
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2745
the necessary helper functions.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2746
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2747
Similar to the star case, we want
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2748
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2749
	$\rderssimp{r^{\{n\}}}{s} = \rsimp{\sum rs}$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2750
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2751
where $rs$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2752
shall be in the form of 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2753
$\map \; f \; Ss$, where $f$ is a function and
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2754
$Ss$ a list of objects to act on.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2755
For star, the object's datatype is string.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2756
The list of strings $Ss$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2757
is generated using functions 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2758
$\starupdate$ and $\starupdates$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2759
The function that takes a string and returns a regular expression
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2760
is the anonymous function $
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2761
(\lambda s'. \; r\backslash s' \cdot r^{\{m\}})$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2762
In the NTIMES setting,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2763
the $\starupdate$ and $\starupdates$ functions are replaced by 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2764
$\textit{nupdate}$ and $\textit{nupdates}$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2765
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2766
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2767
		$\nupdate \; c \; r \; [] $ & $\dn$ & $[]$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2768
		$\nupdate \; c \; r \; 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2769
		(\Some \; (s, \; n + 1) \; :: \; Ss)$ & $\dn$ & %\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2770
						     $\textit{if} \; 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2771
						     (\rnullable \; (r \backslash_{rs} s))$ \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2772
						     & & $\;\;\textit{then} 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2773
						     \;\; \Some \; (s @ [c], n + 1) :: \Some \; ([c], n) :: (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2774
						     \nupdate \; c \; r \; Ss)$ \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2775
						     & & $\textit{else} \;\; \Some \; (s @ [c], n+1) :: (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2776
						     \nupdate \; c \; r \; Ss)$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2777
		$\nupdate \; c \; r \; (\textit{None} :: Ss)$ & $\dn$ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2778
		$(\None :: \nupdate  \; c \; r \; Ss)$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2779
							      & & \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2780
	%\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2781
%\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2782
%\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2783
	%\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2784
		$\nupdates \; [] \; r \; Ss$ & $\dn$ & $Ss$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2785
		$\nupdates \; (c :: cs) \; r \; Ss$ &  $\dn$ &  $\nupdates \; cs \; r \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2786
		\nupdate \; c \; r \; Ss)$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2787
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2788
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2789
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2790
which take into account when a subterm
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2791
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2792
	$r \backslash_s s \cdot r^{\{n\}}$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2793
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2794
counter $n$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2795
is 0, and therefore expands to 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2796
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2797
$r \backslash_s (s@[c]) \cdot r^{\{n\}} \;+
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2798
\; \ZERO$ 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2799
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2800
after taking a derivative.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2801
The object now has type 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2802
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2803
$\textit{option} \;(\textit{string}, \textit{nat})$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2804
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2805
and therefore the function for converting such an option into
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2806
a regular expression term is called $\opterm$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2807
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2808
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2809
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2810
	$\opterm \; r \; SN$ & $\dn$ & $\textit{case} \; SN\; of$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2811
				 & & $\;\;\Some \; (s, n) \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2812
				 (r\backslash_{rs} s)\cdot r^{\{n\}}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2813
				 & & $\;\;\None  \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2814
				 \ZERO$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2815
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2816
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2817
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2818
Put together, the list $\map \; f \; Ss$ is instantiated as
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2819
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2820
	$\map \; (\opterm \; r) \; (\nupdates \; s \; r \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2821
	[\Some \; ([c], n)])$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2822
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2823
For the closed form to be bounded, we would like
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2824
simplification to be applied to each term in the list.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2825
Therefore we introduce some variants of $\opterm$,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2826
which help conveniently express the rewriting steps 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2827
needed in the closed form proof.
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2828
We have $\optermOsimp$, $\optermosimp$ and $\optermsimp$
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  2829
with slightly different spellings because they help the proof to go through:
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2830
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2831
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2832
	$\optermOsimp \; r \; SN$ & $\dn$ & $\textit{case} \; SN\; of$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2833
				 & & $\;\;\Some \; (s, n) \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2834
				 \textit{rsimp} \; ((r\backslash_{rs} s)\cdot r^{\{n\}})$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2835
				 & & $\;\;\None  \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2836
				 \ZERO$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2837
				 \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2838
	$\optermosimp \; r \; SN$ & $\dn$ & $\textit{case} \; SN\; of$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2839
				 & & $\;\;\Some \; (s, n) \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2840
				 (\textit{rsimp} \; (r\backslash_{rs} s)) 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2841
				 \cdot r^{\{n\}}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2842
				 & & $\;\;\None  \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2843
				 \ZERO$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2844
				 \\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2845
	$\optermsimp \; r \; SN$ & $\dn$ & $\textit{case} \; SN\; of$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2846
				 & & $\;\;\Some \; (s, n) \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2847
				 (r\backslash_{rsimps} s)\cdot r^{\{n\}}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2848
				 & & $\;\;\None  \Rightarrow 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2849
				 \ZERO$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2850
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2851
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2852
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2853
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2854
For a list of 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2855
$\textit{option} \;(\textit{string}, \textit{nat})$ elements,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2856
we define the highest power for it recursively:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2857
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2858
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2859
		$\hpa \; [] \; n $ & $\dn$ & $n$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2860
		$\hpa \; (\None :: os) \; n $ &  $\dn$ &  $\hpa \; os \; n$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2861
		$\hpa \; (\Some \; (s, n) :: os) \; m$ & $\dn$ & 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2862
		$\hpa \;os \; (\textit{max} \; n\; m)$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2863
		\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2864
		$\hpower \; rs $ & $\dn$ & $\hpa \; rs \; 0$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2865
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2866
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2867
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2868
Now the intuition that an NTIMES regular expression's power
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2869
does not increase can be easily expressed as
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2870
\begin{lemma}\label{nupdatesMono2}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2871
	$\hpower \; (\nupdates \;s \; r \; [\Some \; ([c], n)]) \leq n$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2872
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2873
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2874
	Note that the power is non-increasing after a $\nupdate$ application:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2875
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2876
		$\hpa \;\; (\nupdate \; c \; r \; Ss)\;\; m \leq 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2877
		 \hpa\; \; Ss \; m$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2878
	 \end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2879
	 This is also the case for $\nupdates$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2880
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2881
		$\hpa \;\; (\nupdates \; s \; r \; Ss)\;\; m \leq 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2882
		 \hpa\; \; Ss \; m$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2883
	 \end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2884
	 Therefore we have that
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2885
	 \begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2886
		 $\hpower \;\; (\nupdates \; s \; r \; Ss) \leq
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2887
		  \hpower \;\; Ss$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2888
	 \end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2889
	 which leads to the lemma being proven.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2890
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2891
 \end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2892
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2893
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2894
We also define the inductive rules for
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2895
the shape of derivatives of the NTIMES regular expressions:\\[-3em]
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2896
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2897
	\begin{mathpar}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2898
		\inferrule{\mbox{}}{\cbn \;\ZERO}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2899
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2900
		\inferrule{\mbox{}}{\cbn \; \; r_a \cdot (r^{\{n\}})}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2901
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2902
		\inferrule{\cbn \; r_1 \;\; \; \cbn \; r_2}{\cbn \; r_1 + r_2}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2903
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2904
		\inferrule{\cbn \; r}{\cbn \; r + \ZERO}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2905
	\end{mathpar}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2906
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2907
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2908
A derivative of NTIMES fits into the shape described by $\cbn$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2909
\begin{lemma}\label{ntimesDersCbn}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2910
	$\cbn \; ((r' \cdot r^{\{n\}}) \backslash_{rs} s)$ holds.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2911
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2912
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2913
	By a reverse induction on $s$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2914
	For the inductive case, note that if $\cbn \; r$ holds,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2915
	then $\cbn \; (r\backslash_r c)$ holds.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2916
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2917
\noindent
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2918
In addition, for $\cbn$-shaped regular expressions, one can flatten
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2919
them:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2920
\begin{lemma}\label{ntimesHfauPushin}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2921
	If $\cbn \; r$ holds, then $\hflataux{r \backslash_r c} = 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2922
	\textit{concat} \; (\map \; \hflataux{\map \; (\_\backslash_r c) \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2923
	(\hflataux{r})})$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2924
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2925
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2926
	By an induction on the inductive cases of $\cbn$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2927
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2928
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2929
This time we do not need to define the flattening functions for NTIMES only,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2930
because $\hflat{\_}$ and $\hflataux{\_}$ work on NTIMES already.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2931
\begin{lemma}\label{ntimesHfauInduct}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2932
$\hflataux{( (r\backslash_r c) \cdot r^{\{n\}}) \backslash_{rsimps} s} = 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2933
 \map \; (\opterm \; r) \; (\nupdates \; s \; r \; [\Some \; ([c], n)])$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2934
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2935
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2936
	By a reverse induction on $s$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2937
	The lemmas \ref{ntimesHfauPushin} and \ref{ntimesDersCbn} are used.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2938
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2939
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2940
We have a recursive property for NTIMES with $\nupdate$ 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2941
similar to that for STAR,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2942
and one for $\nupdates $ as well:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2943
\begin{lemma}\label{nupdateInduct1}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2944
	\mbox{}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2945
	\begin{itemize}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2946
		\item
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2947
			\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2948
	 $\textit{concat} \; (\map \; (\hflataux{\_} \circ (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2949
	\opterm \; r)) \; Ss) = \map \; (\opterm \; r) \; (\nupdate \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2950
	c \; r \; Ss)$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2951
	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2952
	holds.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2953
\item
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2954
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2955
	 $\textit{concat} \; (\map \; \hflataux{\_}\; 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2956
	\map \; (\_\backslash_r x) \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2957
		(\map \; (\opterm \; r) \; (\nupdates \; xs \; r \; Ss)))$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2958
		$=$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2959
	$\map \; (\opterm \; r) \; (\nupdates \;(xs@[x]) \; r\;Ss)$ 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2960
	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2961
	holds.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2962
	\end{itemize}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2963
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2964
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2965
	(i) is by an induction on $Ss$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2966
	(ii) is by an induction on $xs$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2967
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2968
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2969
The $\nString$ predicate is defined for conveniently
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2970
expressing that there are no empty strings in the
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2971
$\Some \;(s, n)$ elements generated by $\nupdate$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2972
\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2973
	\begin{tabular}{lcl}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2974
		$\nString \; \None$  & $\dn$ & $ \textit{true}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2975
		$\nString \; (\Some \; ([], n))$ & $\dn$ & $ \textit{false}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2976
		$\nString \; (\Some \; (c::s, n))$  & $\dn$ & $ \textit{true}$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2977
	\end{tabular}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2978
\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2979
\begin{lemma}\label{nupdatesNonempty}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2980
	If for all elements $o \in \textit{set} \; Ss$,
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  2981
	$\nString \; o$ holds, then we have that
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2982
	for all elements $o' \in \textit{set} \; (\nupdates \; s \; r \; Ss)$,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2983
	$\nString \; o'$ holds.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2984
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2985
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2986
	By an induction on $s$, where $Ss$ is set to vary over all possible values.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2987
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2988
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2989
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2990
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2991
\begin{lemma}\label{ntimesClosedFormsSteps}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2992
	The following list of equalities or rewriting relations hold:\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2993
	(i) $r^{\{n+1\}} \backslash_{rsimps} (c::s) = 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2994
	\textit{rsimp} \; (\sum (\map \; (\opterm \;r \;\_) \; (\nupdates \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2995
	s \; r \; [\Some \; ([c], n)])))$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2996
	(ii)
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2997
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2998
	$\sum (\map \; (\opterm \; r) \; (\nupdates \; s \; r \; [
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  2999
	\Some \; ([c], n)]))$ \\ $ \sequal$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3000
	 $\sum (\map \; (\textit{rsimp} \circ (\opterm \; r))\; (\nupdates \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3001
	 s\;r \; [\Some \; ([c], n)]))$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3002
 	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3003
	(iii)
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3004
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3005
	$\sum \;(\map \; (\optermosimp \; r) \; (\nupdates \; s \; r\; [\Some \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3006
	([c], n)]))$\\ 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3007
	$\sequal$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3008
	 $\sum \;(\map \; (\optermsimp r) \; (\nupdates \; s \; r \; [\Some \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3009
	([c], n)])) $\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3010
	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3011
	(iv)
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3012
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3013
	$\sum \;(\map \; (\optermosimp \; r) \; (\nupdates \; s \; r\; [\Some \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3014
	([c], n)])) $ \\ $\sequal$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3015
	 $\sum \;(\map \; (\optermOsimp r) \; (\nupdates \; s \; r \; [\Some \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3016
	([c], n)])) $\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3017
	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3018
	(v)
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3019
	\begin{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3020
	 $\sum \;(\map \; (\optermOsimp r) \; (\nupdates \; s \; r \; [\Some \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3021
	 ([c], n)])) $ \\ $\sequal$\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3022
	  $\sum \; (\map \; (\textit{rsimp} \circ (\opterm \; r)) \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3023
	  (\nupdates \; s \; r \; [\Some \; ([c], n)]))$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3024
  	\end{center}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3025
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3026
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3027
	Routine.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3028
	(iii) and (iv) make use of the fact that all the strings $s$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3029
	inside $\Some \; (s, m)$ which are elements of the list
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3030
	$\nupdates \; s\;r\;[\Some\; ([c], n)]$ are non-empty,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3031
	which is from lemma \ref{nupdatesNonempty}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3032
	Once the string in $o = \Some \; (s, n)$ is 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3033
	nonempty, $\optermsimp \; r \;o$,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3034
	$\optermosimp \; r \; o$ and $\optermosimp \; \; o$ are guaranteed
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3035
	to be equal.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3036
	(v) uses \ref{nupdateInduct1}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3037
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3038
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3039
Now we are ready to present the closed form for NTIMES:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3040
\begin{theorem}\label{ntimesClosedForm}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3041
	The derivative of $r^{\{n+1\}}$ can be described as an alternative
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3042
	containing a list
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3043
	of terms:\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3044
	$r^{\{n+1\}} \backslash_{rsimps} (c::s) = \textit{rsimp} \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3045
	\sum (\map \; (\optermsimp \; r) \; (\nupdates \; s \; r \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3046
	[\Some \; ([c], n)])))$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3047
\end{theorem}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3048
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3049
	By the rewriting steps described in lemma \ref{ntimesClosedFormsSteps}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3050
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3051
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3052
The key observation for bounding this closed form
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3053
is that the counter on $r^{\{n\}}$ will 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3054
only decrement during derivatives:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3055
\begin{lemma}\label{nupdatesNLeqN}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3056
	For an element $o$ in $\textit{set} \; (\nupdates \; s \; r \;
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3057
	[\Some \; ([c], n)])$, either $o = \None$, or $o = \Some
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3058
	\; (s', m)$ for some string $s'$ and number $m \leq n$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3059
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3060
\noindent
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3061
The proof is routine and therefore omitted.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3062
This allows us to say what kind of terms
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3063
are in the list $\textit{set} \; (\map \; (\optermsimp \; r) \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3064
\nupdates \; s \; r \; [\Some \; ([c], n)]))$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3065
only $\ZERO_r$s or a sequence with the tail an $r^{\{m\}}$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3066
with a small $m$:
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3067
\begin{lemma}\label{ntimesClosedFormListElemShape}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3068
	For any element $r'$ in $\textit{set} \; (\map \; (\optermsimp \; r) \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3069
	\nupdates \; s \; r \; [\Some \; ([c], n)]))$,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3070
	we have that $r'$ is either $\ZERO$ or $r \backslash_{rsimps} s' \cdot
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3071
	r^{\{m\}}$ for some string $s'$ and number $m \leq n$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3072
\end{lemma}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3073
\begin{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3074
	Using lemma \ref{nupdatesNLeqN}.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3075
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3076
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3077
\begin{theorem}\label{ntimesClosedFormBounded}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3078
	Assuming that for any string $s$, $\llbracket r \backslash_{rsimps} s
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3079
	\rrbracket_r \leq N$ holds, then we have that\\
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3080
	$\llbracket r^{\{n+1\}} \backslash_{rsimps} s \rrbracket_r \leq
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3081
	\textit{max} \; (c_N+1)* (N + \llbracket r^{\{n\}} \rrbracket+1)$,
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3082
	where $c_N = \textit{card} \; (\textit{sizeNregex} \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3083
	N + \llbracket r^{\{n\}} \rrbracket_r+1))$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3084
\end{theorem}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3085
\begin{proof}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3086
We have that for all regular expressions $r'$ in 
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3087
\begin{center}
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3088
$\textit{set} \; (\map \; (\optermsimp \; r) \; (
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3089
	\nupdates \; s \; r \; [\Some \; ([c], n)]))$,
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3090
\end{center}
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3091
	$r'$'s size is less than or equal to $N + \llbracket r^{\{n\}} 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3092
	\rrbracket_r + 1$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3093
because $r'$ can only be either a $\ZERO$ or $r \backslash_{rsimps} s' \cdot
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3094
r^{\{m\}}$ for some string $s'$ and number 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3095
$m \leq n$ (lemma \ref{ntimesClosedFormListElemShape}).
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3096
In addition, we know that the list 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3097
$\map \; (\optermsimp \; r) \; (
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3098
\nupdates \; s \; r \; [\Some \; ([c], n)])$'s size is at most
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3099
$c_N = \textit{card} \; 
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3100
(\sizeNregex \; ((N + \llbracket r^{\{n\}} \rrbracket) + 1))$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3101
This gives us $\llbracket r \backslash_{rsimps} \;s \rrbracket_r
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3102
\leq N * c_N$.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3103
\end{proof}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3104
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3105
We aim to formalise the correctness and size bound
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3106
for constructs like $r^{\{\ldots n\}}$, $r^{\{n \ldots\}}$
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3107
and so on, which is still work in progress.
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3108
They should more or less follow the same recipe described in this section.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3109
Once we know how to deal with them recursively using suitable auxiliary
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3110
definitions, we can routinely establish the proofs.
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
  3111
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3112
557
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  3113
%----------------------------------------------------------------------------------------
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  3114
%	SECTION 3
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  3115
%----------------------------------------------------------------------------------------
812e5d112f49 more changes
Chengsong
parents: 556
diff changeset
  3116
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3117
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3118
\section{Comments and Future Improvements}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3119
\subsection{Some Experimental Results}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3120
What guarantee does this bound give us?
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3121
It states that whatever the regex is, it will not grow indefinitely.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3122
Take our previous example $(a + aa)^*$ as an example:
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3123
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3124
	\begin{tabular}{@{}c@{\hspace{0mm}}c@{\hspace{0mm}}c@{}}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3125
		\begin{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3126
			\begin{axis}[
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3127
				xlabel={number of $a$'s},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3128
				x label style={at={(1.05,-0.05)}},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3129
				ylabel={regex size},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3130
				enlargelimits=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3131
				xtick={0,5,...,30},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3132
				xmax=33,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3133
				ymax= 40,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3134
				ytick={0,10,...,40},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3135
				scaled ticks=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3136
				axis lines=left,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3137
				width=5cm,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3138
				height=4cm, 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3139
				legend entries={$(a + aa)^*$},  
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3140
				legend pos=south east,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3141
				legend cell align=left]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3142
				\addplot[red,mark=*, mark options={fill=white}] table {a_aa_star.data};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3143
			\end{axis}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3144
		\end{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3145
	\end{tabular}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3146
\end{center}
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3147
We are able to limit the size of the regex $(a + aa)^*$'s derivatives
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3148
with our simplification
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3149
rules very effectively.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3150
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3151
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3152
In our proof for the inductive case $r_1 \cdot r_2$, the dominant term in the bound
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3153
is $l_{N_2} * N_2$, where $N_2$ is the bound we have for $\llbracket \bderssimp{r_2}{s} \rrbracket$.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3154
Given that $l_{N_2}$ is roughly the size $4^{N_2}$, the size bound $\llbracket \bderssimp{r_1 \cdot r_2}{s} \rrbracket$
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3155
inflates the size bound of $\llbracket \bderssimp{r_2}{s} \rrbracket$ with the function
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3156
$f(x) = x * 2^x$.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3157
This means the bound we have will surge up at least
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3158
tower-exponentially with a linear increase of the depth.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3159
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3160
One might be pretty skepticafl about what this non-elementary
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3161
bound can bring us.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3162
It turns out that the giant bounds are far from being hit.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3163
Here we have some test data from randomly generated regular expressions:
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3164
\begin{figure}[H]
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3165
	\begin{tabular}{@{}c@{\hspace{2mm}}c@{\hspace{0mm}}c@{}}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3166
		\begin{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3167
			\begin{axis}[
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3168
				xlabel={$n$},
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3169
				x label style={at={(1.05,-0.05)}},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3170
				ylabel={regex size},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3171
				enlargelimits=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3172
				xtick={0,5,...,30},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3173
				xmax=33,
611
Chengsong
parents: 610
diff changeset
  3174
				%ymax=1000,
Chengsong
parents: 610
diff changeset
  3175
				%ytick={0,100,...,1000},
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3176
				scaled ticks=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3177
				axis lines=left,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3178
				width=4.75cm,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3179
				height=3.8cm, 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3180
				legend entries={regex1},  
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3181
				legend pos=north east,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3182
				legend cell align=left]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3183
				\addplot[red,mark=*, mark options={fill=white}] table {regex1_size_change.data};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3184
			\end{axis}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3185
		\end{tikzpicture}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3186
 & 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3187
  \begin{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3188
	  \begin{axis}[
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3189
		  xlabel={$n$},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3190
		  x label style={at={(1.05,-0.05)}},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3191
		  %ylabel={time in secs},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3192
		  enlargelimits=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3193
		  xtick={0,5,...,30},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3194
		  xmax=33,
611
Chengsong
parents: 610
diff changeset
  3195
		  %ymax=1000,
Chengsong
parents: 610
diff changeset
  3196
		  %ytick={0,100,...,1000},
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3197
		  scaled ticks=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3198
		  axis lines=left,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3199
		  width=4.75cm,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3200
		  height=3.8cm, 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3201
		  legend entries={regex2},  
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3202
		  legend pos=south east,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3203
		  legend cell align=left]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3204
		  \addplot[blue,mark=*, mark options={fill=white}] table {regex2_size_change.data};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3205
	  \end{axis}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3206
  \end{tikzpicture}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3207
 & 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3208
  \begin{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3209
	  \begin{axis}[
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3210
		  xlabel={$n$},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3211
		  x label style={at={(1.05,-0.05)}},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3212
		  %ylabel={time in secs},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3213
		  enlargelimits=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3214
		  xtick={0,5,...,30},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3215
		  xmax=33,
611
Chengsong
parents: 610
diff changeset
  3216
		  %ymax=1000,
Chengsong
parents: 610
diff changeset
  3217
		  %ytick={0,100,...,1000},
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3218
		  scaled ticks=false,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3219
		  axis lines=left,
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3220
		  width=4.75cm,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3221
		  height=3.8cm, 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3222
		  legend entries={regex3},  
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3223
		  legend pos=south east,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3224
		  legend cell align=left]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3225
		  \addplot[cyan,mark=*, mark options={fill=white}] table {regex3_size_change.data};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3226
	  \end{axis}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3227
  \end{tikzpicture}\\
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3228
  \multicolumn{3}{c}{}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3229
	\end{tabular}    
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3230
  \caption{Graphs: size change of 3 randomly generated 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3231
  regular expressions $w.r.t.$ input string length. 
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3232
  The x-axis represents the length of the input.}
611
Chengsong
parents: 610
diff changeset
  3233
\end{figure}  
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3234
\noindent
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3235
Most of the regex's sizes seem to stay within a polynomial bound $w.r.t$ the 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3236
original size.
591
b2d0de6aee18 more polishing integrated comments chap2
Chengsong
parents: 590
diff changeset
  3237
We will discuss improvements to this bound in the next chapter.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3238
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3239
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3240
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3241
\subsection{Possible Further Improvements}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3242
There are two problems with this finiteness result, though:\\
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3243
(i)	
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3244
		First, it is not yet a direct formalisation of our lexer's complexity,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3245
		as a complexity proof would require looking into 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3246
		the time it takes to execute {\bf all} the operations
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3247
		involved in the lexer (simp, collect, decode), not just the derivative.\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3248
(ii)
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3249
		Second, the bound is not yet tight, and we seek to improve $N_a$ so that
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3250
		it is polynomial on $\llbracket a \rrbracket$.\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3251
Still, we believe this contribution is useful,
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3252
because
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3253
\begin{itemize}
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3254
	\item
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3255
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3256
		The size proof can serve as a starting point for a complexity
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3257
		formalisation.
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3258
		Derivatives are the most important phases of our lexer algorithm.
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3259
		Size properties about derivatives cover the majority of the algorithm
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3260
		and is therefore a good indication of the complexity of the entire program.
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3261
	\item
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3262
		The bound is already a strong indication that catastrophic
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3263
		backtracking is much less likely to occur in our $\blexersimp$
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3264
		algorithm.
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3265
		We refine $\blexersimp$ with $\blexerStrong$ in the next chapter
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3266
		so that we conjecture the bound becomes polynomial.
590
988e92a70704 more chap5 and chap6 bsimp_idem
Chengsong
parents: 577
diff changeset
  3267
\end{itemize}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3268
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3269
%----------------------------------------------------------------------------------------
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3270
%	SECTION 4
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3271
%----------------------------------------------------------------------------------------
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3272
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3273
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3274
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3275
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3276
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3277
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3278
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3279
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3280
One might wonder about the actual bound rather than the loose bound we gave
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3281
for the convenience of a more straightforward proof.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3282
How much can the regex $r^* \backslash s$ grow? 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3283
As  earlier graphs have shown,
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3284
%TODO: reference that graph where size grows quickly
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3285
they can grow at a maximum speed
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3286
exponential $w.r.t$ the number of characters, 
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3287
but will eventually level off when the string $s$ is long enough.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3288
If they grow to a size exponential $w.r.t$ the original regex, our algorithm
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3289
would still be slow.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3290
And unfortunately, we have concrete examples
576
3e1b699696b6 thesis chap5
Chengsong
parents: 564
diff changeset
  3291
where such regular expressions grew exponentially large before levelling off:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3292
\begin{center}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3293
$(a ^ * + (aa) ^ * + (aaa) ^ * + \ldots + 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3294
(\underbrace{a \ldots a}_{\text{n a's}})^*)^*$ 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3295
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3296
will already have a maximum
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3297
size that is  exponential on the number $n$ 
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3298
under our current simplification rules:
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3299
%TODO: graph of a regex whose size increases exponentially.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3300
\begin{center}
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3301
	\begin{tikzpicture}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3302
		\begin{axis}[
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3303
			height=0.5\textwidth,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3304
			width=\textwidth,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3305
			xlabel=number of a's,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3306
			xtick={0,...,9},
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3307
			ylabel=maximum size,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3308
			ymode=log,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3309
			log basis y={2}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3310
			]
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3311
			\addplot[mark=*,blue] table {re-chengsong.data};
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3312
		\end{axis}
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3313
	\end{tikzpicture}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3314
\end{center}
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3315
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3316
For convenience we use $(\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)^*$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3317
to express $(a ^ * + (aa) ^ * + (aaa) ^ * + \ldots + 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3318
(\underbrace{a \ldots a}_{\text{n a's}})^*$ in the below discussion.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3319
The exponential size is triggered by that the regex
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3320
$\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3321
inside the $(\ldots) ^*$ having exponentially many
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3322
different derivatives, despite those differences being minor.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3323
$(\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)^*\backslash \underbrace{a \ldots a}_{\text{m a's}}$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3324
will therefore contain the following terms (after flattening out all nested 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3325
alternatives):
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3326
\begin{center}
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3327
$(\sum_{i = 1}^{n}  (\underbrace{a \ldots a}_{\text{((i - (m' \% i))\%i) a's}})\cdot  (\underbrace{a \ldots a}_{\text{i a's}})^* )\cdot (\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3328
[1mm]
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3329
	$(1 \leq m' \leq m )$
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3330
\end{center}
639
80cc6dc4c98b until chap 7
Chengsong
parents: 638
diff changeset
  3331
There are at least exponentially
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3332
many such terms.\footnote{To be exact, these terms are 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3333
distinct for $m' \leq L.C.M.(1, \ldots, n)$, the details are omitted,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3334
but the point is that the number is exponential.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3335
} 
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3336
With each new input character taking the derivative against the intermediate result, more and more such distinct
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3337
terms will accumulate.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3338
The function $\textit{distinctBy}$ will not be able to de-duplicate any two of these terms 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3339
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3340
$(\sum_{i = 1}^{n}  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3341
(\underbrace{a \ldots a}_{\text{((i - (m' \% i))\%i) a's}})\cdot  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3342
(\underbrace{a \ldots a}_{\text{i a's}})^* )\cdot 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3343
(\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)^*$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3344
$(\sum_{i = 1}^{n}  (\underbrace{a \ldots a}_{\text{((i - (m'' \% i))\%i) a's}})\cdot  
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3345
(\underbrace{a \ldots a}_{\text{i a's}})^* )\cdot 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3346
(\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)^*$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3347
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3348
\noindent
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3349
where $m' \neq m''$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3350
as they are slightly different.
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3351
This means that with our current simplification methods,
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3352
we will not be able to control the derivative so that
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3353
$\llbracket \bderssimp{r}{s} \rrbracket$ stays polynomial. %\leq O((\llbracket r\rrbacket)^c)$
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3354
These terms are similar in the sense that the head of those terms
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3355
are all consisted of sub-terms of the form: 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3356
$(\underbrace{a \ldots a}_{\text{j a's}})\cdot  (\underbrace{a \ldots a}_{\text{i a's}})^* $.
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3357
For  $\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*$, there will be at most
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3358
$n * (n + 1) / 2$ such terms. 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3359
For example, $(a^* + (aa)^* + (aaa)^*) ^*$'s derivatives
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3360
can be described by 6 terms:
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3361
$a^*$, $a\cdot (aa)^*$, $ (aa)^*$, 
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3362
$aa \cdot (aaa)^*$, $a \cdot (aaa)^*$, and $(aaa)^*$.
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3363
The total number of different "head terms",  $n * (n + 1) / 2$,
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3364
is proportional to the number of characters in the regex 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3365
$(\sum_{i=1}^{n} (\underbrace{a \ldots a}_{\text{i a's}})^*)^*$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3366
If we can improve our deduplication process so that it becomes smarter
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3367
and only keep track of these $n * (n+1) /2$ terms, then we can keep
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3368
the size growth polynomial again.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3369
This example also suggests a slightly different notion of size, which we call the 
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3370
alphabetic width:
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3371
\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3372
	\begin{tabular}{lcl}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3373
		$\textit{awidth} \; \ZERO$ & $\dn$ & $0$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3374
		$\textit{awidth} \; \ONE$ & $\dn$ & $0$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3375
		$\textit{awidth} \; c$ & $\dn$ & $1$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3376
		$\textit{awidth} \; r_1 + r_2$ & $\dn$ & $\textit{awidth} \; 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3377
		r_1 + \textit{awidth} \; r_2$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3378
		$\textit{awidth} \; r_1 \cdot r_2$ & $\dn$ & $\textit{awidth} \;
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3379
		r_1 + \textit{awidth} \; r_2$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3380
		$\textit{awidth} \; r^*$ & $\dn$ & $\textit{awidth} \; r$\\
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3381
	\end{tabular}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3382
\end{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3383
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3384
593
83fab852d72d more chap5
Chengsong
parents: 591
diff changeset
  3385
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3386
Antimirov\parencite{Antimirov95} has proven that 
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3387
$\textit{PDER}_{UNIV}(r) \leq \textit{awidth}(r)$,
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3388
where $\textit{PDER}_{UNIV}(r)$ is a set of all possible subterms
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3389
created by doing derivatives of $r$ against all possible strings.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3390
If we can make sure that at any moment in our lexing algorithm our 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3391
intermediate result hold at most one copy of each of the 
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3392
subterms then we can get the same bound as Antimirov's.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3393
This leads to the algorithm in the next chapter.
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3394
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3395
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3396
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3397
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3398
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3399
%----------------------------------------------------------------------------------------
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3400
%	SECTION 1
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3401
%----------------------------------------------------------------------------------------
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3402
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3403
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3404
%-----------------------------------
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3405
%	SUBSECTION 1
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3406
%-----------------------------------
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3407
%\subsection{Syntactic Equivalence Under $\simp$}
640
bd1354127574 more proofreading done, last version before submission
Chengsong
parents: 639
diff changeset
  3408
%We prove that minor differences can be annihilated
618
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3409
%by $\simp$.
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3410
%For example,
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3411
%\begin{center}
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3412
%	$\simp \;(\simpALTs\; (\map \;(\_\backslash \; x)\; (\distinct \; \mathit{rs}\; \phi))) = 
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3413
%	\simp \;(\simpALTs \;(\distinct \;(\map \;(\_ \backslash\; x) \; \mathit{rs}) \; \phi))$
233cf2b97d1a chapter 5 finished!!
Chengsong
parents: 614
diff changeset
  3414
%\end{center}
532
cc54ce075db5 restructured
Chengsong
parents:
diff changeset
  3415