--- a/ChengsongTanPhdThesis/Chapters/Bitcoded1.tex Mon Jun 06 15:57:17 2022 +0100
+++ b/ChengsongTanPhdThesis/Chapters/Bitcoded1.tex Mon Jun 06 16:45:42 2022 +0100
@@ -393,7 +393,7 @@
\noindent
This algorithm keeps the regular expression size small, for example,
with this simplification our previous $(a + aa)^*$ example's 8000 nodes
-will be reduced to just 6 and stays constant, no matter how long the
+will be reduced to just 17 and stays constant, no matter how long the
input string is.
@@ -427,10 +427,12 @@
Ausaf and Urban cleverly defined an auxiliary function called $\flex$,
defined as
-\[
-\flex \; r \; f \; [] \; v \; = \; f\; v
-\flex \; r \; f \; c :: s \; v = \flex r \; \lambda v. \, f (\inj \; r\; c\; v)\; s \; v
-\]
+\begin{center}
+\begin{tabular}{lcr}
+$\flex \; r \; f \; [] \; v$ & $=$ & $f\; v$\\
+$\flex \; r \; f \; c :: s \; v$ & $=$ & $\flex \; r \; \lambda v. \, f (\inj \; r\; c\; v)\; s \; v$
+\end{tabular}
+\end{center}
which accumulates the characters that needs to be injected back,
and does the injection in a stack-like manner (last taken derivative first injected).
$\flex$ is connected to the $\lexer$: