# HG changeset patch # User Christian Urban # Date 1489416733 0 # Node ID 05fa26637da462e2a2848791260451bfc306a317 # Parent f476c98cad28eefc26f4d0cc2f8430353efd2623 updated diff -r f476c98cad28 -r 05fa26637da4 thys/LexerExt.thy --- a/thys/LexerExt.thy Sat Mar 11 19:33:38 2017 +0000 +++ b/thys/LexerExt.thy Mon Mar 13 14:52:13 2017 +0000 @@ -777,11 +777,11 @@ \(\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ (s1 @ s\<^sub>3) \ L r \ s\<^sub>4 \ L (UPNTIMES r n))\ \ (s1 @ s2) \ UPNTIMES r (Suc n) \ Stars (v # vs)" | Posix_UPNTIMES2: "[] \ UPNTIMES r n \ Stars []" -| Posix_NTIMES1: "\s1 \ r \ v; s2 \ NTIMES r n \ Stars vs; +| Posix_NTIMES1: "\s1 \ r \ v; s2 \ NTIMES r n \ Stars vs; flat v = [] \ flat (Stars vs) = []; \(\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ (s1 @ s\<^sub>3) \ L r \ s\<^sub>4 \ L (NTIMES r n))\ \ (s1 @ s2) \ NTIMES r (Suc n) \ Stars (v # vs)" | Posix_NTIMES2: "[] \ NTIMES r 0 \ Stars []" -| Posix_FROMNTIMES1: "\s1 \ r \ v; s2 \ FROMNTIMES r n \ Stars vs; +| Posix_FROMNTIMES1: "\s1 \ r \ v; s2 \ FROMNTIMES r n \ Stars vs; flat v = [] \ flat (Stars vs) = []; \(\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ (s1 @ s\<^sub>3) \ L r \ s\<^sub>4 \ L (FROMNTIMES r n))\ \ (s1 @ s2) \ FROMNTIMES r (Suc n) \ Stars (v # vs)" | Posix_FROMNTIMES2: "s \ STAR r \ Stars vs \ s \ FROMNTIMES r 0 \ Stars vs" @@ -1115,14 +1115,13 @@ then show "Stars [] = v2" by cases (auto simp add: Posix1) next case (Posix_NTIMES1 s1 r v s2 n vs v2) - have "(s1 @ s2) \ NTIMES r (Suc n) \ v2" + have "(s1 @ s2) \ NTIMES r (Suc n) \ v2" "flat v = [] \ flat (Stars vs) = []" "s1 \ r \ v" "s2 \ (NTIMES r n) \ Stars vs" "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L r \ s\<^sub>4 \ L (NTIMES r n))" by fact+ then obtain v' vs' where "v2 = Stars (v' # vs')" "s1 \ r \ v'" "s2 \ (NTIMES r n) \ (Stars vs')" apply(cases) apply (auto simp add: append_eq_append_conv2) using Posix1(1) apply fastforce - apply (metis Posix1(1) Posix_NTIMES1.hyps(5) append_Nil append_Nil2) - done + by (metis Posix1(1) Posix_NTIMES1.hyps(6) append_Nil append_Nil2) moreover have IHs: "\v2. s1 \ r \ v2 \ v = v2" "\v2. s2 \ NTIMES r n \ v2 \ Stars vs = v2" by fact+ @@ -1138,12 +1137,12 @@ next case (Posix_FROMNTIMES1 s1 r v s2 n vs v2) have "(s1 @ s2) \ FROMNTIMES r (Suc n) \ v2" - "s1 \ r \ v" "s2 \ (FROMNTIMES r n) \ Stars vs" + "s1 \ r \ v" "s2 \ (FROMNTIMES r n) \ Stars vs" "flat v = [] \ flat (Stars vs) = []" "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L r \ s\<^sub>4 \ L (FROMNTIMES r n))" by fact+ then obtain v' vs' where "v2 = Stars (v' # vs')" "s1 \ r \ v'" "s2 \ (FROMNTIMES r n) \ (Stars vs')" apply(cases) apply (auto simp add: append_eq_append_conv2) using Posix1(1) apply fastforce - by (metis Posix1(1) Posix_FROMNTIMES1.hyps(5) append_Nil2 self_append_conv2) + by (metis Posix1(1) Posix_FROMNTIMES1.hyps(6) append_Nil append_Nil2) moreover have IHs: "\v2. s1 \ r \ v2 \ v = v2" "\v2. s2 \ FROMNTIMES r n \ v2 \ Stars vs = v2" by fact+ @@ -1431,7 +1430,7 @@ then consider (cons) m v1 vs s1 s2 where "n = Suc m" - "v = Seq v1 (Stars vs)" "s = s1 @ s2" + "v = Seq v1 (Stars vs)" "s = s1 @ s2" "flat v = [] \ flat (Stars vs) = []" "s1 \ der c r \ v1" "s2 \ (NTIMES r m) \ (Stars vs)" "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L (der c r) \ s\<^sub>4 \ L (NTIMES r m))" apply(case_tac n) @@ -1448,6 +1447,8 @@ have "s1 \ der c r \ v1" by fact then have "(c # s1) \ r \ injval r c v1" using IH by simp moreover + have "flat v = [] \ flat (Stars vs) = []" by fact + moreover have "s2 \ NTIMES r m \ Stars vs" by fact moreover have "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L (der c r) \ s\<^sub>4 \ L (NTIMES r m))" by fact @@ -1457,7 +1458,7 @@ have "((c # s1) @ s2) \ NTIMES r (Suc m) \ Stars (injval r c v1 # vs)" apply(rule_tac Posix.intros(10)) apply(simp_all) - done + by (simp add: Posix1(2)) then show "(c # s) \ NTIMES r n \ injval (NTIMES r n) c v" using cons by(simp) qed next @@ -1472,7 +1473,7 @@ "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L (der c r) \ s\<^sub>4 \ L (FROMNTIMES r 0))" | (cons) m v1 vs s1 s2 where "n = Suc m" - "v = Seq v1 (Stars vs)" "s = s1 @ s2" + "v = Seq v1 (Stars vs)" "s = s1 @ s2" "flat v = [] \ flat (Stars vs) = []" "s1 \ der c r \ v1" "s2 \ (FROMNTIMES r m) \ (Stars vs)" "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L (der c r) \ s\<^sub>4 \ L (FROMNTIMES r m))" apply(case_tac n) @@ -1494,6 +1495,8 @@ then have "(c # s1) \ r \ injval r c v1" using IH by simp moreover have "s2 \ FROMNTIMES r m \ Stars vs" by fact + moreover + have "flat v = [] \ flat (Stars vs) = []" by fact moreover have "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ s1 @ s\<^sub>3 \ L (der c r) \ s\<^sub>4 \ L (FROMNTIMES r m))" by fact then have "\ (\s\<^sub>3 s\<^sub>4. s\<^sub>3 \ [] \ s\<^sub>3 @ s\<^sub>4 = s2 \ (c # s1) @ s\<^sub>3 \ L r \ s\<^sub>4 \ L (FROMNTIMES r m))" @@ -1501,8 +1504,8 @@ ultimately have "((c # s1) @ s2) \ FROMNTIMES r (Suc m) \ Stars (injval r c v1 # vs)" apply(rule_tac Posix.intros(12)) - apply(simp_all) - done + apply(simp_all) + by (simp add: Posix1(2)) then show "(c # s) \ FROMNTIMES r n \ injval (FROMNTIMES r n) c v" using cons by(simp) next case null