ChengsongTanPhdThesis/Chapters/RelatedWork.tex
author Chengsong
Mon, 05 Dec 2022 17:39:10 +0000
changeset 630 d50a309a0645
parent 628 7af4e2420a8c
child 631 bdb3ffdd39f8
permissions -rw-r--r--
with Christian
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     1
% Chapter Template
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     2
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     3
\chapter{Related Work} % Main chapter title
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     4
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     5
\label{RelatedWork} 
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
     6
630
d50a309a0645 with Christian
Chengsong
parents: 628
diff changeset
     7
%In this chapter, we introduce
d50a309a0645 with Christian
Chengsong
parents: 628
diff changeset
     8
%work relevant to this thesis.
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
     9
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    10
\section{Regular Expressions, Derivatives and POSIX Lexing}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    11
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    12
%\subsection{Formalisations of Automata, Regular Expressions, and Matching Algorithms}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    13
Regular expressions were introduced by Kleene in the 1950s \cite{Kleene1956}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    14
Since then they have become a fundamental concept in 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    15
formal languages and automata theory \cite{Sakarovitch2009}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    16
Brzozowski defined derivatives on regular expressions in his PhD thesis
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    17
in 1964 \cite{Brzozowski1964}, in which he proved the finiteness of the numbers
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    18
of regular expression derivatives modulo the ACI-axioms.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    19
It is worth pointing out that this result does not directly
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    20
translate to our
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    21
finiteness proof, 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    22
and our proof does not depend on it to be valid.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    23
The key observation is that our version of the Sulzmann and Lu's algorithm
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    24
\cite{Sulzmann2014} represents 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    25
derivative terms in a way that allows efficient de-duplication,
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    26
and we do not make use of an equivalence checker that exploits the ACI-equivalent
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    27
terms.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    28
628
7af4e2420a8c ready to submit~~
Chengsong
parents: 627
diff changeset
    29
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    30
Central to this thesis is the work by Sulzmann and Lu \cite{Sulzmann2014}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    31
They first introduced the elegant and simple idea of injection-based lexing
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    32
and bit-coded lexing.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    33
In a follow-up work \cite{Sulzmann2014b}, Sulzmann and Steenhoven
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    34
incorporated these ideas
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    35
into a tool called \emph{dreml}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    36
The pencil-and-paper proofs in \cite{Sulzmann2014} based on the ideas
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    37
by Frisch and Cardelli \cite{Frisch2004} were later
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    38
found to have unfillable gaps by Ausaf \cite{Ausaf},
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    39
who came up with an alternative proof inspired by 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    40
Vansummeren \cite{Vansummeren2006}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    41
Sulzmann and Thiemann extended the Brzozowski derivatives to 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    42
shuffling regular expressions \cite{Sulzmann2015},
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    43
which are a very succinct way of describing basic regular expressions.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    44
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    45
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    46
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    47
Regular expressions and lexers have been a popular topic among
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    48
the theorem proving and functional programming community.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    49
In the next section we give a list of lexers
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    50
and matchers that come with a machine-checked correctness proof.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    51
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    52
\subsection{Matchers and Lexers with Mechanised Proofs}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    53
We are aware
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    54
of a mechanised correctness proof of Brzozowski's derivative-based matcher in HOL4 by
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    55
Owens and Slind~\parencite{Owens2008}. Another one in Isabelle/HOL is part
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    56
of the work by Krauss and Nipkow \parencite{Krauss2011}.  Another one
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    57
in Coq is given by Coquand and Siles \parencite{Coquand2012}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    58
Also Ribeiro and Du Bois gave one in Agda \parencite{RibeiroAgda2017}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    59
The most recent works to our best knowledge are the Verbatim \cite{Verbatim}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    60
and Verbatim++ \cite{Verbatim} lexers.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    61
The Verbatim++ lexer adds many correctness-preserving 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    62
optimisations to the Verbatim lexer,
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    63
and is therefore quite fast on many inputs.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    64
The problem is that they chose to use DFA to speed up things,
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    65
for which dealing with bounded repetitions is a bottleneck.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    66
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    67
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    68
This thesis builds on the formal specifications of POSIX
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    69
rules and formal proofs by Ausaf et al. \cite{AusafDyckhoffUrban2016}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    70
The bounded repetitions is a continuation of the work by Ausaf \cite{Ausaf}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    71
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    72
Automata formalisations are in general harder and more cumbersome to deal
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    73
with for theorem provers \cite{Nipkow1998}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    74
To represent them, one way is to use graphs, but graphs are not inductive datatypes.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    75
Having to set the inductive principle on the number of nodes
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    76
in a graph makes formal reasoning non-intuitive and convoluted,
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    77
resulting in large formalisations \cite{Lammich2012}. 
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    78
When combining two graphs, one also needs to make sure that the nodes in
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    79
both graphs are distinct. 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    80
If they are not distinct, then renaming of the nodes is needed.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    81
Using Coq which provides dependent types can potentially make things slightly easier
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    82
\cite{Doczkal2013}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    83
Another representation for automata are matrices. 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    84
But the induction for them is not as straightforward either.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    85
Both approaches have been used in the past and resulted in huge formalisations.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    86
There are some more clever representations, for example one by Paulson 
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    87
using hereditarily finite sets \cite{Paulson2015}. 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    88
There the problem with combining graphs can be solved better. 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    89
%but we believe that such clever tricks are not very obvious for 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
    90
%the John-average-Isabelle-user.
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    91
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    92
\subsection{Different Definitions of POSIX Rules}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    93
There are different ways to formalise values and POSIX matching.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    94
Cardelli and Frisch \cite{Frisch2004} have developed a notion of
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    95
\emph{non-problematic values} which is a slight variation
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    96
of the values defined in the inhabitation relation in \ref{fig:inhab}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    97
They then defined an ordering between values, and showed that
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    98
the maximal element of those values correspond to the output
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
    99
of their GREEDY lexing algorithm.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   100
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   101
Okui and Suzuki \cite{Okui10} allow iterations of values to 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   102
flatten to the empty
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   103
string for the star inhabitation rule in
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   104
\ref{fig:inhab}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   105
They refer to the more restrictive version as used 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   106
in this thesis (which was defined by Ausaf et al.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   107
\cite{AusafDyckhoffUrban2016}) as \emph{canonical values}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   108
The very interesting link between the work by Ausaf et al.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   109
and Okui and Suzuki is that they have distinct formalisations
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   110
of POSIX values, and yet they are provably equivalent! See
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   111
\cite{AusafDyckhoffUrban2016} for details of the
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   112
alternative definitions given by Okui and Suzuki and the formalisation.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   113
%TODO: EXPLICITLY STATE the OKUI SUZUKI POSIX DEF.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   114
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   115
Sulzmann and Lu themselves have come up with POSIX definitions \cite{Sulzmann2014}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   116
In their paper they defined an ordering between values with respect
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   117
to regular expressions, and tried to establish that their
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   118
algorithm outputs the minimal element by a pencil-and-paper proof.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   119
But having the ordering relation taking regular expression as parameters
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   120
causes the transitivity of their ordering to not go through.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   121
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   122
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   123
\subsection{Static Analysis of Evil Regex Patterns} 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   124
When a regular expression does not behave as intended,
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   125
people usually try to rewrite the regex to some equivalent form
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   126
or they try to avoid the possibly problematic patterns completely,
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   127
for which many false positives exist\parencite{Davis18}.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   128
Animated tools to "debug" regular expressions such as
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   129
 \parencite{regexploit2021} \parencite{regex101} are also popular.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   130
We are also aware of static analysis work on regular expressions that
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   131
aims to detect potentially expoential regex patterns. Rathnayake and Thielecke 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   132
\parencite{Rathnayake2014StaticAF} proposed an algorithm
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   133
that detects regular expressions triggering exponential
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   134
behavious on backtracking matchers.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   135
Weideman \parencite{Weideman2017Static} came up with 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   136
non-linear polynomial worst-time estimates
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   137
for regexes, attack string that exploit the worst-time 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   138
scenario, and "attack automata" that generates
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   139
attack strings.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   140
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   141
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   142
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   143
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   144
\section{Optimisations}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   145
Perhaps the biggest problem that prevents derivative-based lexing 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   146
from being more widely adopted
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   147
is that they tend to be not blindingly fast in practice, unable to 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   148
reach throughputs like gigabytes per second, which is the
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   149
application we had in mind when we initially started looking at the topic.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   150
Commercial
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   151
regular expression matchers such as Snort \cite{Snort1999} and Bro \cite{Bro}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   152
are capable of inspecting payloads
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   153
at line rates (which can be up to a few gigabits per second) against 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   154
thousands of rules \cite{communityRules}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   155
For our algorithm to be more attractive for practical use, we
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   156
need more correctness-preserving optimisations.
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   157
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   158
FPGA-based implementations such as \cite{Sidhu2001} 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   159
have the advantages of being
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   160
reconfigurable and parallel, but suffer from lower clock frequency
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   161
and scalability.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   162
Traditional automaton approaches that use a DFA instead of NFA
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   163
benefit from the fact that only a single transition is needed 
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   164
for each input character \cite{Becchi08}. Lower memory bandwidth leads
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   165
to faster performance.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   166
However, they suffer from exponential blow-ups on bounded repetitions.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   167
Compression techniques are used, such as those in \cite{Kumar2006} and
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   168
\cite{Becchi2007}.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   169
Variations of pure NFAs or DFAs like counting-set automata \cite{Turonova2020}
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   170
have been
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   171
proposed to better deal with bounded repetitions.
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   172
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   173
%So far our focus has been mainly on the bit-coded algorithm,
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   174
%but the injection-based lexing algorithm 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   175
%could also be sped up in various ways:
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   176
%
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   177
Another direction of optimisation for derivative-based approaches
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   178
is defining string derivatives
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   179
directly, without recursively decomposing them into 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   180
character-by-character derivatives. For example, instead of
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   181
replacing $(r_1 + r_2)\backslash (c::cs)$ by
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   182
$((r_1 + r_2)\backslash c)\backslash cs$ (as in definition \ref{table:der}), we rather
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   183
calculate $(r_1\backslash (c::cs) + r_2\backslash (c::cs))$.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   184
This has the potential to speed up matching because input is 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   185
processed in larger granularity.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   186
One interesting thing is to explore whether this can be done
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   187
to $\inj$ as well, so that we can generate a lexical value 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   188
rather than simply get a matcher.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   189
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   190
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   191
\subsection{Derivatives and Zippers}
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   192
Zipper is a data structure designed to focus on 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   193
and navigate between local parts of a tree.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   194
The idea is that often operations on a large tree only deal with
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   195
local regions each time.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   196
Therefore it would be a waste to 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   197
traverse the entire tree if
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   198
the operation only
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   199
involves a small fraction of it.
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   200
It was first formally described by Huet \cite{Huet1997}.
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   201
Typical applications of zippers involve text editor buffers
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   202
and proof system databases.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   203
In our setting, the idea is to compactify the representation
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   204
of derivatives with zippers, thereby making our algorithm faster.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   205
We introduce several works on parsing, derivatives
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   206
and zippers.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   207
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   208
Edelmann et al. developed a formalised parser for LL(1) grammars using derivatives
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   209
\cite{Zippy2020}.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   210
They adopted zippers to improve the speed, and argued that the runtime
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   211
complexity of their algorithm was linear with respect to the input string.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   212
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   213
The idea of using Brzozowski derivatives on general context-free 
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   214
parsing was first implemented
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   215
by Might et al. \cite{Might2011}. 
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   216
They used memoization and fixpoint construction to eliminate infinite recursion,
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   217
which is a major problem for using derivatives on context-free grammars.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   218
The initial version was quite slow----exponential on the size of the input.
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   219
Adams et al. \cite{Adams2016} improved the speed and argued that their version
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   220
was cubic with respect to the input.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   221
Darragh and Adams \cite{Darragh2020} further improved the performance
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   222
by using zippers in an innovative way--their zippers had multiple focuses
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   223
instead of just one in a traditional zipper to handle ambiguity.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   224
Their algorithm was not formalised, though.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   225
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   226
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   227
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   228
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   229
\subsection{Back-References}
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   230
We introduced regular expressions with back-references
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   231
in chapter \ref{Introduction}.
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   232
We adopt the common practice of calling them rewbrs (Regular Expressions
627
94db2636a296 finished!
Chengsong
parents: 626
diff changeset
   233
With Back References) for brevity.
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   234
It has been shown by Aho \cite{Aho1990}
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   235
that the k-vertex cover problem can be reduced
626
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   236
to the problem of rewbrs matching, and is therefore NP-complete.
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   237
Given the depth of the problem, the progress made at the full generality
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   238
of arbitrary rewbrs matching has been slow, with
1c8525061545 finished!
Chengsong
parents: 625
diff changeset
   239
theoretical work on them being 
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   240
fairly recent. 
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   241
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   242
Campaneu et al. studied regexes with back-references
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   243
in the context of formal languages theory in 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   244
their 2003 work \cite{campeanu2003formal}.
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   245
They devised a pumping lemma for Perl-like regexes, 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   246
proving that the langugages denoted by them
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   247
is  properly  contained in context-sensitive
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   248
languages.
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   249
More interesting questions such as 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   250
whether the language denoted by Perl-like regexes
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   251
can express palindromes ($\{w \mid w = w^R\}$)
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   252
are discussed in \cite{campeanu2009patterns} 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   253
and \cite{CAMPEANU2009Intersect}.
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   254
Freydenberger \cite{Frey2013} investigated the 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   255
expressive power of back-references. He showed several 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   256
undecidability and decriptional complexity results 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   257
of back-references, concluding that they add
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   258
great power to certain programming tasks but are difficult to harness.
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   259
An interesting question would then be
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   260
whether we can add restrictions to them, 
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   261
so that they become expressive enough for practical use such
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   262
as html files, but not too powerful.
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   263
Freydenberger and Schmid \cite{FREYDENBERGER20191}
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   264
introduced the notion of deterministic
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   265
regular expressions with back-references to achieve
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   266
a better balance between expressiveness and tractability.
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   267
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   268
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   269
Fernau and Schmid \cite{FERNAU2015287} and Schmid \cite{Schmid2012}
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   270
investigated the time complexity of different variants
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   271
of back-references.
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   272
We are not aware of any work that uses derivatives on back-references.
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   273
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   274
See \cite{BERGLUND2022} for a survey
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   275
of these works and comparison between different
624
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   276
flavours  of back-references syntax (e.g. whether references can be circular, 
8ffa28fce271 all comments incorporated!!+related work
Chengsong
parents: 622
diff changeset
   277
can labels be repeated etc.).
608
37b6fd310a16 added related work chap
Chengsong
parents:
diff changeset
   278
609
61139fdddae0 chap1 totally done
Chengsong
parents: 608
diff changeset
   279
61139fdddae0 chap1 totally done
Chengsong
parents: 608
diff changeset
   280
 
622
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   281
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   282
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   283
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   284
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   285
4b1149fb5aec incorporated more comments, bib
Chengsong
parents: 609
diff changeset
   286
 
625
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   287
b797c9a709d9 section reorganising, related work
Chengsong
parents: 624
diff changeset
   288