ChengsongTanPhdThesis/main.tex
author Chengsong
Tue, 14 Jun 2022 18:06:33 +0100
changeset 542 a7344c9afbaf
parent 538 8016a2480704
child 554 15d182ffbc76
permissions -rw-r--r--
chapter3 finished
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     2
% Masters/Doctoral Thesis 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     3
% LaTeX Template
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     4
% Version 2.5 (27/8/17)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     5
%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     6
% This template was downloaded from:
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     7
% http://www.LaTeXTemplates.com
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     8
%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
     9
% Version 2.x major modifications by:
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    10
% Vel (vel@latextemplates.com)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    11
%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    12
% This template is based on a template by:
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    13
% Steve Gunn (http://users.ecs.soton.ac.uk/srg/softwaretools/document/templates/)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    14
% Sunil Patel (http://www.sunilpatel.co.uk/thesis-template/)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    15
%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    16
% Template license:
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    17
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    18
%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    19
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    20
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    21
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    22
%	PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    23
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    24
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    25
\documentclass[
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    26
11pt, % The default document font size, options: 10pt, 11pt, 12pt
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    27
%oneside, % Two side (alternating margins) for binding by default, uncomment to switch to one side
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    28
english, % ngerman for German
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    29
singlespacing, % Single line spacing, alternatives: onehalfspacing or doublespacing
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    30
%draft, % Uncomment to enable draft mode (no pictures, no links, overfull hboxes indicated)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    31
%nolistspacing, % If the document is onehalfspacing or doublespacing, uncomment this to set spacing in lists to single
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    32
%liststotoc, % Uncomment to add the list of figures/tables/etc to the table of contents
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    33
%toctotoc, % Uncomment to add the main table of contents to the table of contents
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    34
%parskip, % Uncomment to add space between paragraphs
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    35
%nohyperref, % Uncomment to not load the hyperref package
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    36
headsepline, % Uncomment to get a line under the header
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    37
%chapterinoneline, % Uncomment to place the chapter title next to the number on one line
471
Chengsong
parents: 468
diff changeset
    38
consistentlayout, % Uncomment to change the layout of the declaration, abstract and acknowledgements pages to match the default layout
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    39
]{MastersDoctoralThesis} % The class file specifying the document structure
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    40
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    41
\usepackage[utf8]{inputenc} % Required for inputting international characters
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    42
\usepackage[T1]{fontenc} % Output font encoding for international characters
505
5ce3bd8e5696 thesis chapter2 section 2.4
Chengsong
parents: 503
diff changeset
    43
%\usepackage{fdsymbol} % Loads unicode-math
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    44
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    45
\usepackage{mathpazo} % Use the Palatino font by default
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    46
\usepackage{hyperref}
542
a7344c9afbaf chapter3 finished
Chengsong
parents: 538
diff changeset
    47
\usepackage{lipsum}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    48
\usepackage[backend=bibtex,style=authoryear,natbib=true]{biblatex} % Use the bibtex backend with the authoryear citation style (which resembles APA)
500
Chengsong
parents: 472
diff changeset
    49
\usepackage{stmaryrd}
537
Chengsong
parents: 535
diff changeset
    50
\usepackage{caption}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    51
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    52
\addbibresource{example.bib} % The filename of the bibliography
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    53
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    54
\usepackage[autostyle=true]{csquotes} % Required to generate language-dependent quotes in the bibliography
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    55
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    56
%My Newly added Libraries in addition to template
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    57
\usepackage{graphic}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    58
\usepackage{data}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    59
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    60
%\usepackage{algorithm}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    61
\usepackage{amsmath}
506
69ad05398894 thesis chapter 2 section 2.4 2.5
Chengsong
parents: 505
diff changeset
    62
\usepackage{amsthm}
69ad05398894 thesis chapter 2 section 2.4 2.5
Chengsong
parents: 505
diff changeset
    63
\usepackage{amssymb}
519
Chengsong
parents: 518
diff changeset
    64
\usepackage{cleveref}
505
5ce3bd8e5696 thesis chapter2 section 2.4
Chengsong
parents: 503
diff changeset
    65
%\usepackage{mathtools}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    66
\usepackage[noend]{algpseudocode}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    67
\usepackage{enumitem}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    68
\usepackage{nccmath}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    69
\usepackage{tikz-cd}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    70
\usepackage{tikz}
472
Chengsong
parents: 471
diff changeset
    71
\usetikzlibrary{automata, positioning, calc}
542
a7344c9afbaf chapter3 finished
Chengsong
parents: 538
diff changeset
    72
\usetikzlibrary{fit,
a7344c9afbaf chapter3 finished
Chengsong
parents: 538
diff changeset
    73
                shapes.geometric}
538
8016a2480704 intro and chap2
Chengsong
parents: 537
diff changeset
    74
\usepackage{mathpartir}
537
Chengsong
parents: 535
diff changeset
    75
Chengsong
parents: 535
diff changeset
    76
Chengsong
parents: 535
diff changeset
    77
\DeclareCaptionType{mytype}[Illustration][]
Chengsong
parents: 535
diff changeset
    78
\newenvironment{envForCaption}{\captionsetup{type=mytype} }{}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    79
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    80
%	MARGIN SETTINGS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    81
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    82
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    83
\geometry{
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    84
	paper=a4paper, % Change to letterpaper for US letter
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    85
	inner=2.5cm, % Inner margin
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    86
	outer=3.8cm, % Outer margin
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    87
	bindingoffset=.5cm, % Binding offset
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    88
	top=1.5cm, % Top margin
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    89
	bottom=1.5cm, % Bottom margin
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    90
	%showframe, % Uncomment to show how the type block is set on the page
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    91
}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    92
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    93
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    94
%	THESIS INFORMATION
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    95
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    96
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    97
\thesistitle{POSIX Regular Expression Matching and Lexing} % Your thesis title, this is used in the title and abstract, print it elsewhere with \ttitle
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    98
\supervisor{Dr. Christian \textsc{Urban}} % Your supervisor's name, this is used in the title page, print it elsewhere with \supname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
    99
\examiner{} % Your examiner's name, this is not currently used anywhere in the template, print it elsewhere with \examname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   100
\degree{Doctor of Philosophy} % Your degree name, this is used in the title page and abstract, print it elsewhere with \degreename
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   101
\author{Chengsong \textsc{Tan}} % Your name, this is used in the title page and abstract, print it elsewhere with \authorname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   102
\addresses{} % Your address, this is not currently used anywhere in the template, print it elsewhere with \addressname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   103
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   104
\subject{Computer Science} % Your subject area, this is not currently used anywhere in the template, print it elsewhere with \subjectname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   105
\keywords{} % Keywords for your thesis, this is not currently used anywhere in the template, print it elsewhere with \keywordnames
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   106
\university{\href{https://www.kcl.ac.uk}{King's College London}} % Your university's name and URL, this is used in the title page and abstract, print it elsewhere with \univname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   107
\department{\href{https://www.kcl.ac.uk/informatics}{Department or Informatics}} % Your department's name and URL, this is used in the title page and abstract, print it elsewhere with \deptname
471
Chengsong
parents: 468
diff changeset
   108
\group{\href{https://www.kcl.ac.uk/research/ssy}{Software Systems Group}} % Your research group's name and URL, this is used in the title page, print it elsewhere with \groupname
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   109
\faculty{\href{http://faculty.university.com}{Chengsong Tan}} % Your faculty's name and URL, this is used in the title page and abstract, print it elsewhere with \facname
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   110
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   111
\AtBeginDocument{
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   112
\hypersetup{pdftitle=\ttitle} % Set the PDF's title to your title
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   113
\hypersetup{pdfauthor=\authorname} % Set the PDF's author to your name
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   114
\hypersetup{pdfkeywords=\keywordnames} % Set the PDF's keywords to your keywords
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   115
}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   116
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   117
\begin{document}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   118
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   119
\frontmatter % Use roman page numbering style (i, ii, iii, iv...) for the pre-content pages
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   120
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   121
\pagestyle{plain} % Default to the plain heading style until the thesis style is called for the body content
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   122
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   123
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   124
%	TITLE PAGE
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   125
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   126
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   127
\begin{titlepage}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   128
\begin{center}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   129
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   130
\vspace*{.06\textheight}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   131
{\scshape\LARGE \univname\par}\vspace{1.5cm} % University name
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   132
\textsc{\Large Doctoral Thesis}\\[0.5cm] % Thesis type
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   133
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   134
\HRule \\[0.4cm] % Horizontal line
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   135
{\huge \bfseries \ttitle\par}\vspace{0.4cm} % Thesis title
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   136
\HRule \\[1.5cm] % Horizontal line
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   137
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   138
\begin{minipage}[t]{0.4\textwidth}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   139
\begin{flushleft} \large
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   140
\emph{Author:}\\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   141
\href{https://kclpure.kcl.ac.uk/portal/en/persons/chengsong-tan(a63b381b-04bc-4cd7-beea-beb3e96cb153).html}{\authorname} % Author name - remove the \href bracket to remove the link
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   142
\end{flushleft}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   143
\end{minipage}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   144
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   145
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   146
\begin{minipage}[t]{0.4\textwidth}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   147
\begin{flushright} \large
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   148
\emph{Supervisor:} \\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   149
\href{https://www.kcl.ac.uk/people/christian-urban}{\supname} % Supervisor name - remove the \href bracket to remove the link  
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   150
\end{flushright}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   151
\end{minipage}\\[3cm]
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   152
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   153
\vfill
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   154
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   155
\large \textit{A thesis submitted in fulfillment of the requirements\\ for the degree of \degreename}\\[0.3cm] % University requirement text
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   156
\textit{in the}\\[0.4cm]
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   157
\groupname\\\deptname\\[2cm] % Research group name and department name
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   158
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   159
\vfill
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   160
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   161
{\large \today}\\[4cm] % Date
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   162
%\includegraphics{Logo} % University/department logo - uncomment to place it
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   163
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   164
\vfill
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   165
\end{center}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   166
\end{titlepage}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   167
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   168
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   169
%	DECLARATION PAGE
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   170
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   171
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   172
\begin{declaration}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   173
\addchaptertocentry{\authorshipname} % Add the declaration to the table of contents
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   174
\noindent I, \authorname, declare that this thesis titled, \enquote{\ttitle} and the work presented in it are my own. I confirm that:
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   175
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   176
\begin{itemize} 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   177
\item This work was done wholly or mainly while in candidature for a research degree at this University.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   178
\item Where any part of this thesis has previously been submitted for a degree or any other qualification at this University or any other institution, this has been clearly stated.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   179
\item Where I have consulted the published work of others, this is always clearly attributed.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   180
\item Where I have quoted from the work of others, the source is always given. With the exception of such quotations, this thesis is entirely my own work.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   181
\item I have acknowledged all main sources of help.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   182
\item Where the thesis is based on work done by myself jointly with others, I have made clear exactly what was done by others and what I have contributed myself.\\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   183
\end{itemize}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   184
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   185
\noindent Signed:\\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   186
\rule[0.5em]{25em}{0.5pt} % This prints a line for the signature
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   187
 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   188
\noindent Date:\\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   189
\rule[0.5em]{25em}{0.5pt} % This prints a line to write the date
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   190
\end{declaration}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   191
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   192
\cleardoublepage
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   193
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   194
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   195
%	QUOTATION PAGE
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   196
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   197
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   198
\vspace*{0.2\textheight}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   199
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   200
\noindent\enquote{\itshape Thanks to my solid academic training, today I can write hundreds of words on virtually any topic without possessing a shred of information, which is how I got a good job in journalism.}\bigbreak
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   201
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   202
\hfill Dave Barry
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   203
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   204
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   205
%	ABSTRACT PAGE
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   206
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   207
519
Chengsong
parents: 518
diff changeset
   208
%\begin{abstract}
Chengsong
parents: 518
diff changeset
   209
Chengsong
parents: 518
diff changeset
   210
 
Chengsong
parents: 518
diff changeset
   211
%\end{abstract}
Chengsong
parents: 518
diff changeset
   212
Chengsong
parents: 518
diff changeset
   213
527
2c907b118f78 all chapters put in
Chengsong
parents: 526
diff changeset
   214
\begin{abstract}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   215
\addchaptertocentry{\abstractname} % Add the abstract to the table of contents
527
2c907b118f78 all chapters put in
Chengsong
parents: 526
diff changeset
   216
%\addchap{Abstract} 
471
Chengsong
parents: 468
diff changeset
   217
This work is about regular expressions and derivatives. It combines functional algorithms and their formal verification in the Isabelle/HOL theorem prover.
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   218
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   219
Theoretical results say that regular expression matching
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   220
should be linear with respect to the input.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   221
Under a certain class of regular expressions and inputs though,
526
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   222
practical implementations often suffer from non-linear or even 
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   223
exponential running time,
526
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   224
allowing ReDoS (regular expression denial-of-service ) attacks.
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   225
The reason behind this is that regex libraries in popular programming
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   226
languages often want to support richer constructs
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   227
than the usual basic regular expressions. Unfortunately, this means that even simple cases
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   228
are "infected" with atrocious running time.
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   229
 
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   230
526
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   231
This work aims to address the above vulnerability by a combination
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   232
of Brzozowski's derivatives and interactive theorem proving. We give an 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   233
improved version of  Sulzmann and Lu's bit-coded algorithm using 
526
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   234
derivatives, and give a formal guarantee in terms of correctness and 
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   235
size of derivatives, which we formalised in Isabelle/HOL.
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   236
Then we improve the algorithm with a stronger version of 
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   237
simplification, and prove a time bound linear to input and
526
cb702fb4227f updated
Chengsong
parents: 519
diff changeset
   238
cubic to regular expression size using a technique introduced by
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   239
Antimirov.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   240
The result is an algorithm with provable guarantees on 
535
ce91c29d2885 fixed plotting error 6.1
Chengsong
parents: 532
diff changeset
   241
correctness and finiteness. We believe this is the first 
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   242
work with these two guarantees together.
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   243
527
2c907b118f78 all chapters put in
Chengsong
parents: 526
diff changeset
   244
\end{abstract}
519
Chengsong
parents: 518
diff changeset
   245
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   246
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   247
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   248
%	ACKNOWLEDGEMENTS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   249
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   250
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   251
\begin{acknowledgements}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   252
\addchaptertocentry{\acknowledgementname} % Add the acknowledgements to the table of contents
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   253
The acknowledgments and the people to thank go here, don't forget to include your project advisor\ldots
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   254
\end{acknowledgements}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   255
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   256
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   257
%	LIST OF CONTENTS/FIGURES/TABLES PAGES
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   258
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   259
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   260
\tableofcontents % Prints the main table of contents
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   261
518
ff7945a988a3 more to thesis
Chengsong
parents: 506
diff changeset
   262
%\listoffigures % Prints the list of figures
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   263
518
ff7945a988a3 more to thesis
Chengsong
parents: 506
diff changeset
   264
%\listoftables % Prints the list of tables
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   265
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   266
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   267
%	ABBREVIATIONS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   268
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   269
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   270
\begin{abbreviations}{ll} % Include a list of abbreviations (a table of two columns)
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   271
500
Chengsong
parents: 472
diff changeset
   272
Chengsong
parents: 472
diff changeset
   273
\newtheorem{theorem}{Theorem}
Chengsong
parents: 472
diff changeset
   274
\newtheorem{lemma}{Lemma}
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   275
\newtheorem{definition}{Definition}
542
a7344c9afbaf chapter3 finished
Chengsong
parents: 538
diff changeset
   276
\newtheorem{conjecture}{Conjecture}
505
5ce3bd8e5696 thesis chapter2 section 2.4
Chengsong
parents: 503
diff changeset
   277
%proof
5ce3bd8e5696 thesis chapter2 section 2.4
Chengsong
parents: 503
diff changeset
   278
500
Chengsong
parents: 472
diff changeset
   279
503
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   280
\newcommand\sflat[1][]{\textit{sflat} \, #1}
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   281
\newcommand{\ASEQ}[3]{\textit{ASEQ}_{#1} \, #2 \, #3}
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   282
\newcommand{\bderssimp}[2]{#1 \backslash_{bsimp} #2}
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   283
\newcommand{\rderssimp}[2]{#1 \backslash_{rsimp} #2}
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   284
\newcommand{\sflataux}[1]{\lbracket #1 \rbracket}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   285
\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}%
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   286
\newcommand{\ZERO}{\mbox{\bf 0}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   287
\newcommand{\ONE}{\mbox{\bf 1}}
503
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   288
\newcommand{\AALTS}[2]{\XOR {\scriptstyle #1}\, #2}
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   289
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   290
\def\lexer{\mathit{lexer}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   291
\def\mkeps{\mathit{mkeps}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   292
500
Chengsong
parents: 472
diff changeset
   293
\def\AZERO{\textit{AZERO}}
Chengsong
parents: 472
diff changeset
   294
\def\AONE{\textit{AONE}}
Chengsong
parents: 472
diff changeset
   295
\def\ACHAR{\textit{ACHAR}}
503
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   296
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   297
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   298
\def\ALTS{\textit{ALTS}}
500
Chengsong
parents: 472
diff changeset
   299
\def\ASTAR{\textit{ASTAR}}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   300
\def\DFA{\textit{DFA}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   301
\def\bmkeps{\textit{bmkeps}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   302
\def\retrieve{\textit{retrieve}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   303
\def\blexer{\textit{blexer}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   304
\def\flex{\textit{flex}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   305
\def\inj{\mathit{inj}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   306
\def\Empty{\mathit{Empty}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   307
\def\Left{\mathit{Left}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   308
\def\Right{\mathit{Right}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   309
\def\Stars{\mathit{Stars}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   310
\def\Char{\mathit{Char}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   311
\def\Seq{\mathit{Seq}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   312
\def\Der{\mathit{Der}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   313
\def\nullable{\mathit{nullable}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   314
\def\Z{\mathit{Z}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   315
\def\S{\mathit{S}}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   316
\def\rup{r^\uparrow}
500
Chengsong
parents: 472
diff changeset
   317
%\def\bderssimp{\mathit{bders}\_\mathit{simp}}
Chengsong
parents: 472
diff changeset
   318
\def\distinctWith{\textit{distinctWith}}
Chengsong
parents: 472
diff changeset
   319
503
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   320
\def\rexp{\mathbf{rexp}}
500
Chengsong
parents: 472
diff changeset
   321
\def\simp{\mathit{simp}}
Chengsong
parents: 472
diff changeset
   322
\def\simpALTs{\mathit{simp}\_\mathit{ALTs}}
Chengsong
parents: 472
diff changeset
   323
\def\map{\mathit{map}}
Chengsong
parents: 472
diff changeset
   324
\def\distinct{\mathit{distinct}}
Chengsong
parents: 472
diff changeset
   325
\def\blexersimp{\mathit{blexer}\_\mathit{simp}}
Chengsong
parents: 472
diff changeset
   326
\def\map{\textit{map}}
Chengsong
parents: 472
diff changeset
   327
\def\vsuf{\textit{vsuf}}
Chengsong
parents: 472
diff changeset
   328
\def\sflataux{\textit{sflat}\_\textit{aux}}
Chengsong
parents: 472
diff changeset
   329
\def\rrexp{\textit{rrexp}}
Chengsong
parents: 472
diff changeset
   330
\def\rsize{\textit{rsize}}
Chengsong
parents: 472
diff changeset
   331
\def\asize{\textit{asize}}
Chengsong
parents: 472
diff changeset
   332
\def\rerase{\textit{rerase}}
Chengsong
parents: 472
diff changeset
   333
\def\erase{\textit{erase}}
Chengsong
parents: 472
diff changeset
   334
\def\STAR{\textit{STAR}}
Chengsong
parents: 472
diff changeset
   335
\def\flts{\textit{flts}}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   336
503
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   337
35b80e37dfe7 new writing
Chengsong
parents: 500
diff changeset
   338
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   339
\end{abbreviations}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   340
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   341
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   342
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   343
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   344
%	SYMBOLS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   345
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   346
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   347
%\begin{symbols}{lll} % Include a list of Symbols (a three column table)
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   348
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   349
%$a$ & distance & \si{\meter} \\
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   350
%$P$ & power & \si{\watt} (\si{\joule\per\second}) \\
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   351
%Symbol & Name & Unit \\
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   352
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   353
%\addlinespace % Gap to separate the Roman symbols from the Greek
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   354
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   355
%$\omega$ & angular frequency & \si{\radian} \\
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   356
528
28751de4b4ba revised according to comments
Chengsong
parents: 527
diff changeset
   357
%\end{symbols}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   358
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   359
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   360
%	DEDICATION
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   361
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   362
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   363
\dedicatory{For/Dedicated to/To my\ldots} 
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   364
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   365
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   366
%	THESIS CONTENT - CHAPTERS
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   367
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   368
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   369
\mainmatter % Begin numeric (1,2,3...) page numbering
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   370
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   371
\pagestyle{thesis} % Return the page headers back to the "thesis" style
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   372
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   373
% Include the chapters of the thesis as separate files from the Chapters folder
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   374
% Uncomment the lines as you write the chapters
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   375
532
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   376
\include{Chapters/Introduction}
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   377
\include{Chapters/Inj} 
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   378
\include{Chapters/Bitcoded1}
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   379
\include{Chapters/Bitcoded2}
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   380
\include{Chapters/Finite} 
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   381
\include{Chapters/Cubic}
cc54ce075db5 restructured
Chengsong
parents: 528
diff changeset
   382
\include{Chapters/Further}
468
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   383
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   384
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   385
%	THESIS CONTENT - APPENDICES
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   386
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   387
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   388
\appendix % Cue to tell LaTeX that the following "chapters" are Appendices
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   389
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   390
% Include the appendices of the thesis as separate files from the Appendices folder
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   391
% Uncomment the lines as you write the Appendices
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   392
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   393
\include{Appendices/AppendixA}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   394
%\include{Appendices/AppendixB}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   395
%\include{Appendices/AppendixC}
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   396
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   397
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   398
%	BIBLIOGRAPHY
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   399
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   400
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   401
\printbibliography[heading=bibintoc]
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   402
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   403
%----------------------------------------------------------------------------------------
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   404
a0f27e21b42c all texrelated
Chengsong
parents:
diff changeset
   405
\end{document}