--- a/thys/Paper/Paper.thy Sun May 08 09:49:21 2016 +0100
+++ b/thys/Paper/Paper.thy Mon May 09 12:09:56 2016 +0100
@@ -62,6 +62,29 @@
definition
"match r s \<equiv> nullable (ders s r)"
+(*
+comments not implemented
+
+p9. "None is returned, indicating an error is raised" : there is no error
+
+p9. The condtion "not exists s3 s4..." appears often enough (in particular in
+the proof of Lemma 3) to warrant a definition.
+
+p9. "The POSIX value v" : at this point the existence of a POSIX value is yet
+to be shown
+
+p10. (proof Lemma 3) : separating the cases with description/itemize would greatly
+improve readability
+
+p11. Theorem 2(2) : Stressing the uniqueness is strange, given that it follows
+trivially from the fact that "lexer" is a function. Maybe state the existence of
+a unique POSIX value as corollary.
+
+p14. Proposition 3 is evidently false and Proposition 4 is a conjecture.
+I find it confusing that Propositions 1 and 2, which are proven facts, are also called propositions.
+
+*)
+
(*>*)
section {* Introduction *}
@@ -414,7 +437,7 @@
can match the empty string. If yes, we call the function @{const mkeps}
that produces a value @{term "v\<^sub>4"} for how @{term "r\<^sub>4"} can
match the empty string (taking into account the POSIX constraints in case
- there are several ways). This functions is defined by the clauses:
+ there are several ways). This function is defined by the clauses:
\begin{figure}[t]
\begin{center}
@@ -519,7 +542,7 @@
\noindent Consider first the @{text "else"}-branch where the derivative is @{term
"SEQ (der c r\<^sub>1) r\<^sub>2"}. The corresponding value must therefore
- be the form @{term "Seq v\<^sub>1 v\<^sub>2"}, which matches the left-hand
+ be of the form @{term "Seq v\<^sub>1 v\<^sub>2"}, which matches the left-hand
side in clause~(4) of @{term inj}. In the @{text "if"}-branch the derivative is an
alternative, namely @{term "ALT (SEQ (der c r\<^sub>1) r\<^sub>2) (der c
r\<^sub>2)"}. This means we either have to consider a @{text Left}- or
@@ -559,7 +582,7 @@
\begin{proof}
Both properties are by routine inductions: the first one can, for example,
- be proved by an induction over the definition of @{term derivatives}; the second by
+ be proved by induction over the definition of @{term derivatives}; the second by
an induction on @{term r}. There are no interesting cases.\qed
\end{proof}
@@ -684,7 +707,7 @@
preserves POSIX values.
\begin{lemma}\label{Posix2}
- @{thm[mode=IfThen] Posix2_roy_version}
+ @{thm[mode=IfThen] Posix_injval}
\end{lemma}
\begin{proof}
@@ -722,7 +745,7 @@
\noindent We can use the induction hypothesis for @{text "r\<^sub>1"} to obtain
@{term "(c # s\<^sub>1) \<in> r\<^sub>1 \<rightarrow> injval r\<^sub>1 c v\<^sub>1"}. Putting this all together allows us to infer
@{term "((c # s\<^sub>1) @ s\<^sub>2) \<in> SEQ r\<^sub>1 r\<^sub>2 \<rightarrow> Seq (injval r\<^sub>1 c v\<^sub>1) v\<^sub>2"}. The case @{text "(c)"}
- is similarly.
+ is similar.
For @{text "(b)"} we know @{term "s \<in> der c r\<^sub>2 \<rightarrow> v\<^sub>1"} and
@{term "s\<^sub>1 @ s\<^sub>2 \<notin> L (SEQ (der c r\<^sub>1) r\<^sub>2)"}. From the former
@@ -760,8 +783,8 @@
\end{proof}
\noindent This concludes our correctness proof. Note that we have not
- changed the algorithm of Sulzmann and Lu,\footnote{Any deviation we
- introduced is harmless.} but introduced our own specification for what a
+ changed the algorithm of Sulzmann and Lu,\footnote{All deviations we
+ introduced are harmless.} but introduced our own specification for what a
correct result---a POSIX value---should be. A strong point in favour of
Sulzmann and Lu's algorithm is that it can be extended in various ways.
@@ -891,23 +914,23 @@
\end{center}
\noindent
- In the second clause we first calculate the derivative @{text "r \\ c"}
+ In the second clause we first calculate the derivative @{term "der c r"}
and then simplify the result. This gives us a simplified derivative
@{text "r\<^sub>s"} and a rectification function @{text "f\<^sub>r"}. The lexer
is then recursively called with the simplified derivative, but before
- we inject the character @{term c} into value, we need to rectify
+ we inject the character @{term c} into the value, we need to rectify
it (that is construct @{term "f\<^sub>r v"}). We can prove that
- \begin{lemma}
+ \begin{theorem}
@{thm slexer_correctness}
- \end{lemma}
+ \end{theorem}
\noindent
holds but for lack of space refer the reader to our mechanisation for details.
*}
-section {* The Correctness Argument by Sulzmmann and Lu\label{argu} *}
+section {* The Correctness Argument by Sulzmann and Lu\label{argu} *}
text {*
% \newcommand{\greedy}{\succcurlyeq_{gr}}