diff -r 454ced557605 -r 692911c0b981 thys3/src/PosixSpec.thy --- a/thys3/src/PosixSpec.thy Thu Jul 21 20:21:52 2022 +0100 +++ b/thys3/src/PosixSpec.thy Thu Jul 21 20:22:35 2022 +0100 @@ -437,9 +437,9 @@ \(\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 (STAR r))\ \ (s1 @ s2) \ STAR r \ Stars (v # vs)" | Posix_STAR2: "[] \ STAR r \ Stars []" -| Posix_NTIMES1: "\s1 \ r \ v; s2 \ NTIMES r (n - 1) \ Stars vs; flat v \ []; 0 < n; - \(\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 - 1)))\ - \ (s1 @ s2) \ NTIMES r n \ Stars (v # vs)" +| Posix_NTIMES1: "\s1 \ r \ v; s2 \ NTIMES r n \ Stars vs; flat v \ []; + \(\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 (n + 1) \ Stars (v # vs)" | Posix_NTIMES2: "\\v \ set vs. [] \ r \ v; length vs = n\ \ [] \ NTIMES r n \ Stars vs" @@ -458,7 +458,6 @@ using assms apply(induct s r v rule: Posix.induct) apply(auto simp add: pow_empty_iff) - apply (metis Suc_pred concI lang_pow.simps(2)) by (meson ex_in_conv set_empty) lemma Posix1a: @@ -566,17 +565,17 @@ by (meson in_set_zipE) next case (Posix_NTIMES1 s1 r v s2 n vs) - have "(s1 @ s2) \ NTIMES r n \ v2" - "s1 \ r \ v" "s2 \ NTIMES r (n - 1) \ Stars vs" "flat v \ []" - "\ (\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 - 1 )))" by fact+ - then obtain v' vs' where "v2 = Stars (v' # vs')" "s1 \ r \ v'" "s2 \ (NTIMES r (n - 1)) \ (Stars vs')" + have "(s1 @ s2) \ NTIMES r (n + 1) \ v2" + "s1 \ r \ v" "s2 \ NTIMES r n \ Stars vs" "flat v \ []" + "\ (\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 One_nat_def Posix1(1) Posix_NTIMES1.hyps(7) append.right_neutral append_self_conv2) + apply (metis L.simps(7) Posix1(1) append.left_neutral append.right_neutral) using Posix1(2) by blast moreover have IHs: "\v2. s1 \ r \ v2 \ v = v2" - "\v2. s2 \ NTIMES r (n - 1) \ v2 \ Stars vs = v2" by fact+ + "\v2. s2 \ NTIMES r n \ v2 \ Stars vs = v2" by fact+ ultimately show "Stars (v # vs) = v2" by auto qed @@ -590,8 +589,8 @@ shows "v \ LV r s" using assms unfolding LV_def apply(induct rule: Posix.induct) - apply(auto simp add: intro!: Prf.intros elim!: Prf_elims Posix1a) - apply (smt (verit, best) One_nat_def Posix1a Posix_NTIMES1 L.simps(7)) + apply(auto simp add: intro!: Prf.intros elim!: Prf_elims Posix1a) + apply (smt (verit, ccfv_SIG) L.simps(7) Posix1a Posix_NTIMES1 Suc_eq_plus1) using Posix1a Posix_NTIMES2 by blast