468
|
1 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
2 |
% Masters/Doctoral Thesis
|
|
3 |
% LaTeX Template
|
|
4 |
% Version 2.5 (27/8/17)
|
|
5 |
%
|
|
6 |
% This template was downloaded from:
|
|
7 |
% http://www.LaTeXTemplates.com
|
|
8 |
%
|
|
9 |
% Version 2.x major modifications by:
|
|
10 |
% Vel (vel@latextemplates.com)
|
|
11 |
%
|
|
12 |
% This template is based on a template by:
|
|
13 |
% Steve Gunn (http://users.ecs.soton.ac.uk/srg/softwaretools/document/templates/)
|
|
14 |
% Sunil Patel (http://www.sunilpatel.co.uk/thesis-template/)
|
|
15 |
%
|
|
16 |
% Template license:
|
|
17 |
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/)
|
|
18 |
%
|
|
19 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
20 |
|
|
21 |
%----------------------------------------------------------------------------------------
|
|
22 |
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
|
23 |
%----------------------------------------------------------------------------------------
|
|
24 |
|
|
25 |
\documentclass[
|
|
26 |
11pt, % The default document font size, options: 10pt, 11pt, 12pt
|
|
27 |
%oneside, % Two side (alternating margins) for binding by default, uncomment to switch to one side
|
|
28 |
english, % ngerman for German
|
|
29 |
singlespacing, % Single line spacing, alternatives: onehalfspacing or doublespacing
|
|
30 |
%draft, % Uncomment to enable draft mode (no pictures, no links, overfull hboxes indicated)
|
|
31 |
%nolistspacing, % If the document is onehalfspacing or doublespacing, uncomment this to set spacing in lists to single
|
|
32 |
%liststotoc, % Uncomment to add the list of figures/tables/etc to the table of contents
|
|
33 |
%toctotoc, % Uncomment to add the main table of contents to the table of contents
|
|
34 |
%parskip, % Uncomment to add space between paragraphs
|
|
35 |
%nohyperref, % Uncomment to not load the hyperref package
|
|
36 |
headsepline, % Uncomment to get a line under the header
|
|
37 |
%chapterinoneline, % Uncomment to place the chapter title next to the number on one line
|
471
|
38 |
consistentlayout, % Uncomment to change the layout of the declaration, abstract and acknowledgements pages to match the default layout
|
468
|
39 |
]{MastersDoctoralThesis} % The class file specifying the document structure
|
|
40 |
|
|
41 |
\usepackage[utf8]{inputenc} % Required for inputting international characters
|
|
42 |
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
505
|
43 |
%\usepackage{fdsymbol} % Loads unicode-math
|
585
|
44 |
\usepackage{cancel}
|
646
|
45 |
\usepackage{fontawesome5}
|
|
46 |
\usepackage{bbding,pifont,dingbat}
|
585
|
47 |
|
590
|
48 |
\usepackage{listings}
|
|
49 |
\usepackage{xcolor}
|
|
50 |
\usepackage{beramono}
|
|
51 |
|
555
|
52 |
\usepackage{verbatim}
|
580
|
53 |
\usepackage{float}
|
468
|
54 |
\usepackage{mathpazo} % Use the Palatino font by default
|
|
55 |
\usepackage{hyperref}
|
542
|
56 |
\usepackage{lipsum}
|
564
|
57 |
\usepackage[backend=bibtex]{biblatex} % Use the bibtex backend with the authoryear citation style (which resembles APA)
|
577
|
58 |
|
|
59 |
\usepackage[usestackEOL]{stackengine}
|
|
60 |
\usepackage{scalerel}
|
|
61 |
\usepackage{graphicx}
|
|
62 |
|
564
|
63 |
%style=authoryear, natbib=true
|
500
|
64 |
\usepackage{stmaryrd}
|
537
|
65 |
\usepackage{caption}
|
601
|
66 |
\usepackage{afterpage}
|
468
|
67 |
|
|
68 |
\addbibresource{example.bib} % The filename of the bibliography
|
|
69 |
|
|
70 |
\usepackage[autostyle=true]{csquotes} % Required to generate language-dependent quotes in the bibliography
|
|
71 |
|
|
72 |
%My Newly added Libraries in addition to template
|
|
73 |
\usepackage{graphic}
|
|
74 |
\usepackage{data}
|
|
75 |
|
|
76 |
%\usepackage{algorithm}
|
|
77 |
\usepackage{amsmath}
|
577
|
78 |
\makeatletter
|
|
79 |
\newcommand{\xleftrightarrow}[2][]{\ext@arrow 3359\leftrightarrowfill@{#1}{#2}}
|
|
80 |
\newcommand{\xdashrightarrow}[2][]{\ext@arrow 0359\rightarrowfill@@{#1}{#2}}
|
|
81 |
\newcommand{\xdashleftarrow}[2][]{\ext@arrow 3095\leftarrowfill@@{#1}{#2}}
|
|
82 |
\newcommand{\xdashleftrightarrow}[2][]{\ext@arrow 3359\leftrightarrowfill@@{#1}{#2}}
|
|
83 |
\def\rightarrowfill@@{\arrowfill@@\relax\relbar\rightarrow}
|
|
84 |
\def\leftarrowfill@@{\arrowfill@@\leftarrow\relbar\relax}
|
|
85 |
\def\leftrightarrowfill@@{\arrowfill@@\leftarrow\relbar\rightarrow}
|
|
86 |
\def\arrowfill@@#1#2#3#4{%
|
|
87 |
$\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip
|
|
88 |
\relax#4#1
|
|
89 |
\xleaders\hbox{$#4#2$}\hfill
|
|
90 |
#3$%
|
|
91 |
}
|
|
92 |
\makeatother
|
579
|
93 |
\def\checkmark{\tikz\fill[scale=0.4](0,.35) -- (.25,0) -- (1,.7) -- (.25,.15) -- cycle;}
|
577
|
94 |
|
506
|
95 |
\usepackage{amsthm}
|
|
96 |
\usepackage{amssymb}
|
519
|
97 |
\usepackage{cleveref}
|
505
|
98 |
%\usepackage{mathtools}
|
468
|
99 |
\usepackage[noend]{algpseudocode}
|
|
100 |
\usepackage{enumitem}
|
|
101 |
\usepackage{nccmath}
|
|
102 |
\usepackage{tikz-cd}
|
|
103 |
\usepackage{tikz}
|
472
|
104 |
\usetikzlibrary{automata, positioning, calc}
|
579
|
105 |
\usetikzlibrary{arrows}
|
580
|
106 |
\usetikzlibrary{shapes.misc}
|
542
|
107 |
\usetikzlibrary{fit,
|
564
|
108 |
shapes.geometric,
|
|
109 |
patterns,
|
|
110 |
backgrounds,
|
|
111 |
graphs}
|
|
112 |
\usetikzlibrary{babel}
|
538
|
113 |
\usepackage{mathpartir}
|
555
|
114 |
\usepackage{stackrel}
|
537
|
115 |
|
|
116 |
\DeclareCaptionType{mytype}[Illustration][]
|
|
117 |
\newenvironment{envForCaption}{\captionsetup{type=mytype} }{}
|
577
|
118 |
|
590
|
119 |
\pgfplotsset{
|
|
120 |
myplotstyle/.style={
|
|
121 |
legend style={draw=none, font=\small},
|
|
122 |
legend cell align=left,
|
|
123 |
legend pos=north east,
|
|
124 |
ylabel style={align=center, font=\bfseries\boldmath},
|
|
125 |
xlabel style={align=center, font=\bfseries\boldmath},
|
|
126 |
x tick label style={font=\bfseries\boldmath},
|
|
127 |
y tick label style={font=\bfseries\boldmath},
|
|
128 |
scaled ticks=true,
|
|
129 |
every axis plot/.append style={thick},
|
|
130 |
},
|
|
131 |
}
|
|
132 |
|
|
133 |
\definecolor{dkgreen}{rgb}{0,0.6,0}
|
|
134 |
\definecolor{gray}{rgb}{0.5,0.5,0.5}
|
|
135 |
\definecolor{mauve}{rgb}{0.58,0,0.82}
|
|
136 |
\lstdefinestyle{myScalastyle}{
|
|
137 |
frame=tb,
|
|
138 |
language=scala,
|
|
139 |
aboveskip=3mm,
|
|
140 |
belowskip=3mm,
|
|
141 |
showstringspaces=false,
|
|
142 |
columns=flexible,
|
|
143 |
basicstyle={\small\ttfamily},
|
|
144 |
numbers=none,
|
|
145 |
numberstyle=\tiny\color{gray},
|
|
146 |
keywordstyle=\color{blue},
|
|
147 |
commentstyle=\color{dkgreen},
|
|
148 |
stringstyle=\color{mauve},
|
|
149 |
frame=single,
|
|
150 |
breaklines=true,
|
|
151 |
breakatwhitespace=true,
|
|
152 |
tabsize=3,
|
|
153 |
}
|
|
154 |
|
|
155 |
|
468
|
156 |
%----------------------------------------------------------------------------------------
|
|
157 |
% MARGIN SETTINGS
|
|
158 |
%----------------------------------------------------------------------------------------
|
|
159 |
|
|
160 |
\geometry{
|
|
161 |
paper=a4paper, % Change to letterpaper for US letter
|
|
162 |
inner=2.5cm, % Inner margin
|
|
163 |
outer=3.8cm, % Outer margin
|
|
164 |
bindingoffset=.5cm, % Binding offset
|
|
165 |
top=1.5cm, % Top margin
|
|
166 |
bottom=1.5cm, % Bottom margin
|
|
167 |
%showframe, % Uncomment to show how the type block is set on the page
|
|
168 |
}
|
|
169 |
|
|
170 |
%----------------------------------------------------------------------------------------
|
|
171 |
% THESIS INFORMATION
|
|
172 |
%----------------------------------------------------------------------------------------
|
|
173 |
|
|
174 |
\thesistitle{POSIX Regular Expression Matching and Lexing} % Your thesis title, this is used in the title and abstract, print it elsewhere with \ttitle
|
|
175 |
\supervisor{Dr. Christian \textsc{Urban}} % Your supervisor's name, this is used in the title page, print it elsewhere with \supname
|
|
176 |
\examiner{} % Your examiner's name, this is not currently used anywhere in the template, print it elsewhere with \examname
|
|
177 |
\degree{Doctor of Philosophy} % Your degree name, this is used in the title page and abstract, print it elsewhere with \degreename
|
|
178 |
\author{Chengsong \textsc{Tan}} % Your name, this is used in the title page and abstract, print it elsewhere with \authorname
|
|
179 |
\addresses{} % Your address, this is not currently used anywhere in the template, print it elsewhere with \addressname
|
|
180 |
|
|
181 |
\subject{Computer Science} % Your subject area, this is not currently used anywhere in the template, print it elsewhere with \subjectname
|
|
182 |
\keywords{} % Keywords for your thesis, this is not currently used anywhere in the template, print it elsewhere with \keywordnames
|
|
183 |
\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
|
|
184 |
\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
|
185 |
\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
|
186 |
\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
|
|
187 |
|
|
188 |
\AtBeginDocument{
|
|
189 |
\hypersetup{pdftitle=\ttitle} % Set the PDF's title to your title
|
|
190 |
\hypersetup{pdfauthor=\authorname} % Set the PDF's author to your name
|
|
191 |
\hypersetup{pdfkeywords=\keywordnames} % Set the PDF's keywords to your keywords
|
|
192 |
}
|
|
193 |
|
|
194 |
\begin{document}
|
|
195 |
|
|
196 |
\frontmatter % Use roman page numbering style (i, ii, iii, iv...) for the pre-content pages
|
|
197 |
|
|
198 |
\pagestyle{plain} % Default to the plain heading style until the thesis style is called for the body content
|
|
199 |
|
|
200 |
%----------------------------------------------------------------------------------------
|
|
201 |
% TITLE PAGE
|
|
202 |
%----------------------------------------------------------------------------------------
|
|
203 |
|
|
204 |
\begin{titlepage}
|
|
205 |
\begin{center}
|
|
206 |
|
|
207 |
\vspace*{.06\textheight}
|
|
208 |
{\scshape\LARGE \univname\par}\vspace{1.5cm} % University name
|
|
209 |
\textsc{\Large Doctoral Thesis}\\[0.5cm] % Thesis type
|
|
210 |
|
|
211 |
\HRule \\[0.4cm] % Horizontal line
|
|
212 |
{\huge \bfseries \ttitle\par}\vspace{0.4cm} % Thesis title
|
|
213 |
\HRule \\[1.5cm] % Horizontal line
|
|
214 |
|
|
215 |
\begin{minipage}[t]{0.4\textwidth}
|
|
216 |
\begin{flushleft} \large
|
|
217 |
\emph{Author:}\\
|
|
218 |
\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
|
|
219 |
\end{flushleft}
|
|
220 |
\end{minipage}
|
|
221 |
|
|
222 |
|
|
223 |
\begin{minipage}[t]{0.4\textwidth}
|
|
224 |
\begin{flushright} \large
|
|
225 |
\emph{Supervisor:} \\
|
|
226 |
\href{https://www.kcl.ac.uk/people/christian-urban}{\supname} % Supervisor name - remove the \href bracket to remove the link
|
|
227 |
\end{flushright}
|
|
228 |
\end{minipage}\\[3cm]
|
|
229 |
|
|
230 |
\vfill
|
|
231 |
|
|
232 |
\large \textit{A thesis submitted in fulfillment of the requirements\\ for the degree of \degreename}\\[0.3cm] % University requirement text
|
|
233 |
\textit{in the}\\[0.4cm]
|
|
234 |
\groupname\\\deptname\\[2cm] % Research group name and department name
|
|
235 |
|
|
236 |
\vfill
|
|
237 |
|
|
238 |
{\large \today}\\[4cm] % Date
|
|
239 |
%\includegraphics{Logo} % University/department logo - uncomment to place it
|
|
240 |
|
|
241 |
\vfill
|
|
242 |
\end{center}
|
|
243 |
\end{titlepage}
|
|
244 |
|
|
245 |
%----------------------------------------------------------------------------------------
|
|
246 |
% DECLARATION PAGE
|
|
247 |
%----------------------------------------------------------------------------------------
|
|
248 |
|
|
249 |
\begin{declaration}
|
|
250 |
\addchaptertocentry{\authorshipname} % Add the declaration to the table of contents
|
|
251 |
\noindent I, \authorname, declare that this thesis titled, \enquote{\ttitle} and the work presented in it are my own. I confirm that:
|
|
252 |
|
|
253 |
\begin{itemize}
|
629
|
254 |
\item This work was done wholly while in candidature for a research degree at this University.
|
468
|
255 |
\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.
|
|
256 |
\item Where I have consulted the published work of others, this is always clearly attributed.
|
|
257 |
\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.
|
|
258 |
\item I have acknowledged all main sources of help.
|
|
259 |
\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.\\
|
|
260 |
\end{itemize}
|
|
261 |
|
|
262 |
\noindent Signed:\\
|
|
263 |
\rule[0.5em]{25em}{0.5pt} % This prints a line for the signature
|
|
264 |
|
|
265 |
\noindent Date:\\
|
|
266 |
\rule[0.5em]{25em}{0.5pt} % This prints a line to write the date
|
|
267 |
\end{declaration}
|
|
268 |
|
|
269 |
\cleardoublepage
|
|
270 |
|
|
271 |
%----------------------------------------------------------------------------------------
|
|
272 |
% QUOTATION PAGE
|
|
273 |
%----------------------------------------------------------------------------------------
|
|
274 |
|
601
|
275 |
%\vspace*{0.2\textheight}
|
|
276 |
%
|
|
277 |
%\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
|
|
278 |
%
|
|
279 |
%\hfill Dave Barry
|
468
|
280 |
|
|
281 |
%----------------------------------------------------------------------------------------
|
|
282 |
% ABSTRACT PAGE
|
|
283 |
%----------------------------------------------------------------------------------------
|
|
284 |
|
519
|
285 |
%\begin{abstract}
|
|
286 |
|
|
287 |
|
|
288 |
%\end{abstract}
|
|
289 |
|
|
290 |
|
527
|
291 |
\begin{abstract}
|
468
|
292 |
\addchaptertocentry{\abstractname} % Add the abstract to the table of contents
|
527
|
293 |
%\addchap{Abstract}
|
646
|
294 |
\textbf{Problem: not like an abstract, more like a summary}
|
|
295 |
\textbf{Goal for new abstract: more high-level and abstract, tell the problem and solution in a concise way.}
|
|
296 |
|
|
297 |
New abstract:\\
|
|
298 |
%Modern computer systems rely on lexing for essential applications such as
|
|
299 |
%compilers, IDEs, file systems, and network intrusion detection systems.
|
|
300 |
%These applications require correctness with respect to
|
|
301 |
%the POSIX standard and high performance.
|
|
302 |
%%While existing implementations of lexers often achieve high performance,
|
|
303 |
%Existing implementations had drawbacks such as bugs and catastrophic backtracking,
|
|
304 |
%preventing them from solving the problem once
|
|
305 |
%and for all.
|
|
306 |
%To address these drawbacks,
|
|
307 |
%this thesis offers an algorithm with formally proven correctness and internal data structures' size bound.
|
|
308 |
%These mechanised proofs ensure that our algorithm is fast and correct in \textbf{all} cases.
|
|
309 |
%Our proofs use term-rewriting relations to establish invariants during derivatives and simplifications,
|
|
310 |
%which is extensible and friendly to theorem provers.
|
|
311 |
|
|
312 |
POSIX is the most widely used disambiguation strategy for regular expression matching. There are some difficulties associated with the POSIX strategy and according to tests conducted by Kulkewitz, many regular expression matchers implementing this strategy produce incorrect results. This thesis is concerned with an POSIX regular expression matching algorithm introduced by Sulzmann and Lu. This algorithm uses bitcoded regular expressions and is based on the idea of Brzozowski derivatives. The algorithm generates POSIX values which encode the information of how a regular expression matches a string - that is, which part of the string is matched by which part of the regular expression. This information is needed in the context of lexing in order to extract and to classify tokens.
|
|
313 |
|
|
314 |
While a formalised correctness proof for Sulzmann and Lu's algorithm already exists, this proof does not include any of the crucial simplification rules. These simplification rules are however necessary in order to have an acceptable runtime for this algorithm. Our version of the simplification rules includes a number of fixes and improvements: one problem we fix has to do with their use of the nub function that does not remove non-trivial duplicates. We improve the simplification rules by formulating them as simple recursive function and also by simplifying more instances of regular expressions. As a result we can establish a bound on the size of derivatives. Our proofs are formalised in Isabelle/HOL.
|
|
315 |
|
|
316 |
|
|
317 |
|
|
318 |
Old abstract:
|
568
|
319 |
This thesis is about regular expressions and derivatives. It combines functional algorithms and their formal verification in the Isabelle/HOL theorem prover.
|
629
|
320 |
Classic results say that regular expression matching should be
|
|
321 |
linear with respect to the input. The size of the regular expressions
|
|
322 |
are often treated as a constant factor.
|
600
|
323 |
However with some regular expressions and inputs, existing implementations
|
|
324 |
often suffer from non-linear or even exponential running time,
|
638
|
325 |
giving rise to ReDoS (regular expression denial-of-service ) attacks.
|
|
326 |
To avoid these attacks, regular expression matchers and lexers with
|
|
327 |
formalised correctness and running time related
|
629
|
328 |
properties are of interest because the guarantees apply to all inputs, not just a finite
|
612
|
329 |
number of empirical test cases.
|
568
|
330 |
|
638
|
331 |
Sulzmann and Lu describe a lexing algorithm that calculates Brzozowski derivatives using bitcodes annotated to regular expressions. Their algorithm generates POSIX values which encode the information of how a regular expression matches a string—that is, which part of the string is matched by which part of the regular expression. This information is needed in the context of lexing in order to extract and to classify tokens. The purpose of the bitcodes is to generate POSIX values incrementally while derivatives are calculated. They also help with designing an “aggressive” simplification function that keeps the size of derivatives finitely bounded.
|
|
332 |
Our simplification function is more aggressive than the one by Sulzmann and Lu.
|
|
333 |
We also fix a problem in Sulzmann and Lu's simplification to do with their use of
|
|
334 |
the $\textit{nub}$ function which does not remove non-trivial duplicates.
|
|
335 |
Without simplification the size of some derivatives can grow arbitrarily big resulting in an extremely slow lexing algorithm.
|
629
|
336 |
In this thesis we describe a variant of Sulzmann and Lu’s algorithm: Our variant is a recursive functional program, whereas Sulzmann and Lu’s version involves a fixpoint construction. We (i) prove in Isabelle/HOL that our algorithm is correct and generates unique POSIX values; we also (ii) establish a finite bound for the size of the derivatives for every input string; we also
|
|
337 |
(iii) give a program and a conjecture that the finite
|
|
338 |
bound can be improved to be cubic if stronger simplification rules are applied.
|
568
|
339 |
|
468
|
340 |
|
568
|
341 |
|
|
342 |
|
468
|
343 |
|
527
|
344 |
\end{abstract}
|
519
|
345 |
|
468
|
346 |
|
|
347 |
%----------------------------------------------------------------------------------------
|
|
348 |
% ACKNOWLEDGEMENTS
|
|
349 |
%----------------------------------------------------------------------------------------
|
|
350 |
|
|
351 |
\begin{acknowledgements}
|
|
352 |
\addchaptertocentry{\acknowledgementname} % Add the acknowledgements to the table of contents
|
628
|
353 |
I would like to express my deepest thanks to my supervisor Doctor Christian Urban,
|
|
354 |
who have been always extremely supportive thoughout my PhD, in all sorts of ways.
|
|
355 |
Supervisionwise, Christian always
|
|
356 |
thinks in terms of the best interests for the student, to which I am eternally grateful for.
|
|
357 |
I would also like to thank Doctor Ning Zhang, who have always been very gentle and caring to me,
|
|
358 |
quick to lend a
|
|
359 |
helping hand at difficult times.
|
|
360 |
I want to thank Doctor Kathrin Stark, my SIGPLAN mentor, for offering brilliant advice
|
|
361 |
at the late stage of my PhD. My transition from a PhD student to a postdoc researcher
|
|
362 |
could not have been so smooth without Kathrin's mentoring.
|
638
|
363 |
%I want to thank Jeanna Wheeler, my UMO mentor, for helping me regulate my mental health
|
|
364 |
%and productivity, by being always encouraging
|
|
365 |
%and compassionate in her sessions.
|
|
366 |
I want to thank Jeanna Wheeler for helping me with keeping sane during my time during the PhD and COVID times when an encouraging and compassionate person was very appreciated.
|
628
|
367 |
|
|
368 |
I want to thank my father Haiyan Tan and my mother Yunan Cheng,
|
|
369 |
for their unconditional love, and who I have not seen
|
|
370 |
face to face for three years.
|
|
371 |
I really miss you.
|
|
372 |
I want to thank my friends Yuying Chen, Kai Zeng, Rui Luo, Jingyi Liu, Qingtian Ye, and many others,
|
|
373 |
who have always been very patient and compassionate, giving clever advice when I turned to
|
|
374 |
them for help.
|
468
|
375 |
\end{acknowledgements}
|
|
376 |
|
|
377 |
%----------------------------------------------------------------------------------------
|
|
378 |
% LIST OF CONTENTS/FIGURES/TABLES PAGES
|
|
379 |
%----------------------------------------------------------------------------------------
|
|
380 |
|
|
381 |
\tableofcontents % Prints the main table of contents
|
|
382 |
|
518
|
383 |
%\listoffigures % Prints the list of figures
|
468
|
384 |
|
518
|
385 |
%\listoftables % Prints the list of tables
|
468
|
386 |
|
|
387 |
%----------------------------------------------------------------------------------------
|
|
388 |
% ABBREVIATIONS
|
|
389 |
%----------------------------------------------------------------------------------------
|
|
390 |
|
|
391 |
|
500
|
392 |
|
|
393 |
\newtheorem{theorem}{Theorem}
|
|
394 |
\newtheorem{lemma}{Lemma}
|
528
|
395 |
\newtheorem{definition}{Definition}
|
542
|
396 |
\newtheorem{conjecture}{Conjecture}
|
554
|
397 |
\newtheorem{corollary}{Corollary}
|
|
398 |
\newtheorem{property}{Property}
|
|
399 |
\newtheorem{proposition}{Proposition}
|
505
|
400 |
%proof
|
|
401 |
|
500
|
402 |
|
601
|
403 |
%\newcommand\sflat[1][]{\textit{sflat} \, #1}
|
|
404 |
%\newcommand{\ASEQ}[3]{\textit{ASEQ}_{#1} \, #2 \, #3}
|
|
405 |
%\newcommand{\bderssimp}[2]{#1 \backslash_{bsimp} #2}
|
|
406 |
%\newcommand{\rderssimp}[2]{#1 \backslash_{rsimp} #2}
|
|
407 |
%\newcommand{\sflataux}[1]{\lbracket #1 \rbracket}
|
|
408 |
%\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}%
|
|
409 |
%\newcommand{\ZERO}{\mbox{\bf 0}}
|
|
410 |
%\newcommand{\ONE}{\mbox{\bf 1}}
|
|
411 |
%\newcommand{\AALTS}[2]{\XOR {\scriptstyle #1}\, #2}
|
|
412 |
%
|
|
413 |
%\def\lexer{\mathit{lexer}}
|
|
414 |
%\def\mkeps{\mathit{mkeps}}
|
|
415 |
%
|
|
416 |
%\def\AZERO{\textit{AZERO}}
|
|
417 |
%\def\AONE{\textit{AONE}}
|
|
418 |
%\def\ACHAR{\textit{ACHAR}}
|
|
419 |
%
|
|
420 |
%
|
|
421 |
%\def\ALTS{\textit{ALTS}}
|
|
422 |
%\def\ASTAR{\textit{ASTAR}}
|
|
423 |
%\def\DFA{\textit{DFA}}
|
|
424 |
%\def\bmkeps{\textit{bmkeps}}
|
|
425 |
%\def\retrieve{\textit{retrieve}}
|
|
426 |
%\def\blexer{\textit{blexer}}
|
|
427 |
%\def\flex{\textit{flex}}
|
|
428 |
%\def\inj{\mathit{inj}}
|
|
429 |
%\def\Empty{\mathit{Empty}}
|
|
430 |
%\def\Left{\mathit{Left}}
|
|
431 |
%\def\Right{\mathit{Right}}
|
|
432 |
%\def\Stars{\mathit{Stars}}
|
|
433 |
%\def\Char{\mathit{Char}}
|
|
434 |
%\def\Seq{\mathit{Seq}}
|
|
435 |
%\def\Der{\mathit{Der}}
|
|
436 |
%\def\nullable{\mathit{nullable}}
|
|
437 |
%\def\Z{\mathit{Z}}
|
|
438 |
%\def\S{\mathit{S}}
|
|
439 |
%\def\rup{r^\uparrow}
|
|
440 |
%%\def\bderssimp{\mathit{bders}\_\mathit{simp}}
|
|
441 |
%\def\distinctWith{\textit{distinctWith}}
|
|
442 |
%
|
|
443 |
%\def\rexp{\mathbf{rexp}}
|
|
444 |
%\def\simp{\mathit{simp}}
|
|
445 |
%\def\simpALTs{\mathit{simp}\_\mathit{ALTs}}
|
|
446 |
%\def\map{\mathit{map}}
|
|
447 |
%\def\distinct{\mathit{distinct}}
|
|
448 |
%\def\blexersimp{\mathit{blexer}\_\mathit{simp}}
|
|
449 |
%\def\map{\textit{map}}
|
|
450 |
%\def\vsuf{\textit{vsuf}}
|
|
451 |
%\def\sflataux{\textit{sflat}\_\textit{aux}}
|
|
452 |
%\def\rrexp{\textit{rrexp}}
|
|
453 |
%\def\rsize{\textit{rsize}}
|
|
454 |
%\def\asize{\textit{asize}}
|
|
455 |
%\def\rerase{\textit{rerase}}
|
|
456 |
%\def\erase{\textit{erase}}
|
|
457 |
%\def\STAR{\textit{STAR}}
|
|
458 |
%\def\flts{\textit{flts}}
|
|
459 |
%
|
503
|
460 |
|
|
461 |
|
468
|
462 |
|
|
463 |
|
|
464 |
|
|
465 |
%----------------------------------------------------------------------------------------
|
|
466 |
% SYMBOLS
|
|
467 |
%----------------------------------------------------------------------------------------
|
|
468 |
|
528
|
469 |
%\begin{symbols}{lll} % Include a list of Symbols (a three column table)
|
468
|
470 |
|
528
|
471 |
%$a$ & distance & \si{\meter} \\
|
|
472 |
%$P$ & power & \si{\watt} (\si{\joule\per\second}) \\
|
468
|
473 |
%Symbol & Name & Unit \\
|
|
474 |
|
528
|
475 |
%\addlinespace % Gap to separate the Roman symbols from the Greek
|
468
|
476 |
|
528
|
477 |
%$\omega$ & angular frequency & \si{\radian} \\
|
468
|
478 |
|
528
|
479 |
%\end{symbols}
|
468
|
480 |
|
|
481 |
%----------------------------------------------------------------------------------------
|
|
482 |
% DEDICATION
|
|
483 |
%----------------------------------------------------------------------------------------
|
|
484 |
|
|
485 |
\dedicatory{For/Dedicated to/To my\ldots}
|
|
486 |
|
|
487 |
%----------------------------------------------------------------------------------------
|
|
488 |
% THESIS CONTENT - CHAPTERS
|
|
489 |
%----------------------------------------------------------------------------------------
|
|
490 |
|
|
491 |
\mainmatter % Begin numeric (1,2,3...) page numbering
|
|
492 |
|
|
493 |
\pagestyle{thesis} % Return the page headers back to the "thesis" style
|
|
494 |
|
|
495 |
% Include the chapters of the thesis as separate files from the Chapters folder
|
|
496 |
% Uncomment the lines as you write the chapters
|
|
497 |
|
532
|
498 |
\include{Chapters/Introduction}
|
|
499 |
\include{Chapters/Inj}
|
|
500 |
\include{Chapters/Bitcoded1}
|
|
501 |
\include{Chapters/Bitcoded2}
|
|
502 |
\include{Chapters/Finite}
|
|
503 |
\include{Chapters/Cubic}
|
608
|
504 |
\include{Chapters/RelatedWork}
|
626
|
505 |
\include{Chapters/Future}
|
468
|
506 |
|
|
507 |
%----------------------------------------------------------------------------------------
|
|
508 |
% THESIS CONTENT - APPENDICES
|
|
509 |
%----------------------------------------------------------------------------------------
|
|
510 |
|
628
|
511 |
%\appendix % Cue to tell LaTeX that the following "chapters" are Appendices
|
468
|
512 |
|
|
513 |
% Include the appendices of the thesis as separate files from the Appendices folder
|
|
514 |
% Uncomment the lines as you write the Appendices
|
|
515 |
|
628
|
516 |
%\include{Appendices/AppendixA}
|
468
|
517 |
%\include{Appendices/AppendixB}
|
|
518 |
%\include{Appendices/AppendixC}
|
|
519 |
|
|
520 |
%----------------------------------------------------------------------------------------
|
|
521 |
% BIBLIOGRAPHY
|
|
522 |
%----------------------------------------------------------------------------------------
|
|
523 |
|
|
524 |
\printbibliography[heading=bibintoc]
|
|
525 |
|
|
526 |
%----------------------------------------------------------------------------------------
|
|
527 |
|
|
528 |
\end{document}
|