updated
authorChristian Urban <christian dot urban at kcl dot ac dot uk>
Sun, 06 Mar 2016 16:51:32 +0000
changeset 117 2c4ffcc95399
parent 116 022503caa187
child 118 79efc0bcfc96
updated
thys/Paper/Paper.thy
thys/paper.pdf
--- a/thys/Paper/Paper.thy	Sun Mar 06 12:48:31 2016 +0000
+++ b/thys/Paper/Paper.thy	Sun Mar 06 16:51:32 2016 +0000
@@ -464,7 +464,7 @@
 
   \begin{center}
   \begin{tabular}{lcl}
-  @{thm (lhs) injval.simps(1)} & $\dn$ & @{thm (rhs) injval.simps(1)}\\
+  @{thm (lhs) injval.simps(1)[of "d" "DUMMY"]} & $\dn$ & @{thm (rhs) injval.simps(1)}\\
   @{thm (lhs) injval.simps(2)[of "r\<^sub>1" "r\<^sub>2" "c" "v\<^sub>1"]} & $\dn$ & 
       @{thm (rhs) injval.simps(2)[of "r\<^sub>1" "r\<^sub>2" "c" "v\<^sub>1"]}\\
   @{thm (lhs) injval.simps(3)[of "r\<^sub>1" "r\<^sub>2" "c" "v\<^sub>2"]} & $\dn$ & 
@@ -482,13 +482,30 @@
 
   \noindent To better understand what is going on in this definition it
   might be instructive to look first at the three sequence cases (clauses
-  4--6). Recall the corresponding clause of the derivative
+  4--6). In each case we need to construct an ``injected value'' for @{term
+  "SEQ r\<^sub>1 r\<^sub>2"}. Recall the clause of the @{const der}-function
+  for sequence regular expressions:
 
   \begin{center}
   @{thm (lhs) der.simps(5)[of c "r\<^sub>1" "r\<^sub>2"]} $\dn$ @{thm (rhs) der.simps(5)[of c "r\<^sub>1" "r\<^sub>2"]}
   \end{center}
 
-  \noindent
+  \noindent Consider first the 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 fourth
+  clause of @{term inj}. In the 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 @{text
+  Right}-value. In case of the @{text Left}-value we know further it must be 
+  a value for a sequence regular expression. Therefore the pattern we
+  match in the fifth clause is @{term "Left (Seq v\<^sub>1 v\<^sub>2)"}, while
+  in the sixth it is just @{term "Right v\<^sub>2"}. One more interesting point
+  is in the right-hand side of the sixth clause: since in this case the regular
+  expression @{text "r\<^sub>1"} does not ``contribute'' in matching the string,
+  that is only matches the empty string, we need to call @{const mkeps} in order 
+  to construct a value how @{term "r\<^sub>1"} can match this empty string.
+
+
   NOT DONE YET 
 
   Therefore there are, for example, three
Binary file thys/paper.pdf has changed