
diff -r 76397aa190dc -r e0903f6fb4f7 thys/BitCoded.thy
--- a/thys/BitCoded.thy	Mon Jul 29 14:27:17 2019 +0100
+++ b/thys/BitCoded.thy	Mon Jul 29 16:54:56 2019 +0100
@@ -2630,6 +2630,16 @@
   by (metis bsimp_fuse flts_fuse k0 list.simps(9))
   
 
+lemma flts_nonalt:
+  assumes "flts (map bsimp xs) = ys"
+  shows "\<forall>y \<in> set ys. nonalt y"
+  using assms
+  apply(induct xs arbitrary: ys)
+   apply(auto)
+  apply(case_tac xs)
+   apply(auto)
+  using flts2 good1 apply fastforce
+  by (smt ex_map_conv list.simps(9) nn1b nn1c)
 
 lemma big0:
   assumes as1p: "\<exists>as1'. map (fuse bs1) as1 = as1'" 
@@ -2664,7 +2674,26 @@
     apply(subgoal_tac "flts (map bsimp as2') = map (fuse bs2) [a]")
      prefer 2
   using YY apply blast
-     apply(simp)
+    apply(simp)
+    apply(subgoal_tac "nonalt a")
+     prefer 2
+     apply (simp add: flts_nonalt)
+    apply(subgoal_tac "nonalt (fuse bs2 a)")
+     prefer 2
+  using nn11a apply blast
+    apply (metis bsimp.simps(2) bsimp_AALTs.simps(2) bsimp_AALTs1 bsimp_idem)
+   apply(simp only:)
+   apply(subgoal_tac "bsimp_AALTs bs2 (a # aa # lista) = AALTs bs2 (a # aa # lista)")
+    prefer 2
+  using bsimp_AALTs.simps(3) apply blast
+   apply(simp only:)
+  apply(subgoal_tac "flts (map bsimp as2') = map (fuse bs2)(a # aa # lista) ")
+  prefer 2
+  using YY apply blast
+   apply(simp only:)
+    apply(subst (1) bsimp_idem[symmetric])
+   apply(simp)
+  apply (metis arexp.distinct(7) bbbbs bsimp.simps(2) bsimp_AALTs.simps(3) bsimp_idem good1 list.simps(9) map_map)
   (* HERE TODAY *)
   
   




