diff -r 50bb2c83eeb1 -r c40348a77318 thys/BitCoded2.thy --- a/thys/BitCoded2.thy Sat Aug 10 14:18:15 2019 +0100 +++ b/thys/BitCoded2.thy Sun Aug 11 00:28:14 2019 +0100 @@ -833,6 +833,16 @@ by (metis assms contains6 erase_bder) +lemma contains7a: + assumes "\ v : der c (erase r)" + shows "r >> retrieve r (injval (erase r) c v)" + using assms + apply - + apply(drule Prf_injval) + apply(drule contains6) + apply(simp) + done + fun bders_simp :: "arexp \ string \ arexp" where @@ -2021,7 +2031,9 @@ apply (metis bnullable_correctness erase_fuse)+ done -lemma qq4: + + +lemma qq4a: assumes "\x\set list. bnullable x" shows "\x\set (flts list). bnullable x" using assms @@ -2079,7 +2091,7 @@ apply(case_tac "list") apply(simp) apply(simp) - apply (simp add: qq4) + apply (simp add: qq4a) apply(simp) apply(auto) apply(case_tac list) @@ -2092,7 +2104,7 @@ apply(simp) apply (simp add: r0) apply(simp) - using qq4 r1 r2 by auto + using qq4a r1 r2 by auto @@ -2145,7 +2157,7 @@ thm q3 apply(subst q3[symmetric]) apply simp - using b3 qq4 apply auto[1] + using b3 qq4a apply auto[1] apply(subst qs3) apply simp using k1 by blast @@ -2190,59 +2202,6 @@ apply(simp add: blexer_correctness) done - - - - -fun flts2 :: "char \ arexp list \ arexp list" - where - "flts2 _ [] = []" -| "flts2 c (AZERO # rs) = flts2 c rs" -| "flts2 c (AONE _ # rs) = flts2 c rs" -| "flts2 c (ACHAR bs d # rs) = (if c = d then (ACHAR bs d # flts2 c rs) else flts2 c rs)" -| "flts2 c ((AALTs bs rs1) # rs) = (map (fuse bs) rs1) @ flts2 c rs" -| "flts2 c (ASEQ bs r1 r2 # rs) = (if (bnullable(r1) \ r2 = AZERO) then - flts2 c rs - else ASEQ bs r1 r2 # flts2 c rs)" -| "flts2 c (r1 # rs) = r1 # flts2 c rs" - -lemma flts2_k0: - shows "flts2 c (r # rs1) = flts2 c [r] @ flts2 c rs1" - apply(induct r arbitrary: c rs1) - apply(auto) - done - -lemma flts2_k00: - shows "flts2 c (rs1 @ rs2) = flts2 c rs1 @ flts2 c rs2" - apply(induct rs1 arbitrary: rs2 c) - apply(auto) - by (metis append.assoc flts2_k0) - - -lemma - shows "flts (map (bder c) rs) = (map (bder c) (flts2 c rs))" - apply(induct c rs rule: flts2.induct) - apply(simp) - apply(simp) - apply(simp) - apply(simp) - apply(simp) - apply(auto simp add: bder_fuse)[1] - defer - apply(simp) - apply(simp del: flts2.simps) - apply(rule conjI) - prefer 2 - apply(auto)[1] - apply(rule impI) - apply(subst flts2_k0) - apply(subst map_append) - apply(subst flts2.simps) - apply(simp only: flts2.simps) - apply(auto) - - - lemma XXX2_helper: assumes "\y. asize y < Suc (sum_list (map asize rs)) \ good y \ bsimp y = y" "\r'\set rs. good r' \ nonalt r'" @@ -2481,97 +2440,6 @@ using assms using LB LC lexer_correct_Some by auto -lemma LXXX: - assumes "s \ (erase r) \ v" "s \ (erase (bsimp r)) \ v'" - shows "retrieve r v = retrieve (bsimp r) v'" - using assms - apply - - thm LC - apply(subst LC) - apply(assumption) - apply(subst L0[symmetric]) - using bnullable_correctness lexer_correctness(2) lexer_flex apply fastforce - apply(subst (2) LC) - apply(assumption) - apply(subst (2) L0[symmetric]) - using bnullable_correctness lexer_correctness(2) lexer_flex apply fastforce - - oops - - -lemma L07a: - assumes "s \ L (erase r)" - shows "retrieve (bsimp r) (flex (erase (bsimp r)) id s (mkeps (ders s (erase (bsimp r))))) - = retrieve r (flex (erase r) id s (mkeps (ders s (erase r))))" - using assms - apply(induct s arbitrary: r) - apply(simp) - using L0a apply force - apply(drule_tac x="(bder a r)" in meta_spec) - apply(drule meta_mp) - apply (metis L_bsimp_erase erase_bder lexer.simps(2) lexer_correct_None option.case(1)) - apply(drule sym) - apply(simp) - apply(subst (asm) bder_retrieve) - apply (metis Posix_Prf Posix_flex Posix_mkeps ders.simps(2) lexer_correct_None lexer_flex) - apply(simp only: flex_fun_apply) - apply(simp) - using L0[no_vars] bder_retrieve[no_vars] LA[no_vars] LC[no_vars] L07[no_vars] - oops - -lemma L08: - assumes "s \ L (erase r)" - shows "retrieve (bders (bsimp r) s) (mkeps (erase (bders (bsimp r) s))) - = retrieve (bders r s) (mkeps (erase (bders r s)))" - using assms - apply(induct s arbitrary: r) - apply(simp) - using L0 bnullable_correctness nullable_correctness apply blast - apply(simp add: bders_append) - apply(drule_tac x="(bder a (bsimp r))" in meta_spec) - apply(drule meta_mp) - apply (metis L_bsimp_erase erase_bder lexer.simps(2) lexer_correct_None option.case(1)) - apply(drule sym) - apply(simp) - apply(subst LA) - apply (metis L0aa L_bsimp_erase Posix1(1) ders.simps(2) ders_correctness erase_bder erase_bders mkeps_nullable nullable_correctness) - apply(subst LA) - using lexer_correct_None lexer_flex mkeps_nullable apply force - - using L0[no_vars] bder_retrieve[no_vars] LA[no_vars] LC[no_vars] L07[no_vars] - -thm L0[no_vars] bder_retrieve[no_vars] LA[no_vars] LC[no_vars] L07[no_vars] - oops - -lemma test: - assumes "s = [c]" - shows "retrieve (bders r s) v = XXX" and "YYY = retrieve r (flex (erase r) id s v)" - using assms - apply(simp only: bders.simps) - defer - using assms - apply(simp only: flex.simps id_simps) - using L0[no_vars] bder_retrieve[no_vars] LA[no_vars] LC[no_vars] - find_theorems "retrieve (bders _ _) _" - find_theorems "retrieve _ (mkeps _)" - oops - -lemma L06X: - assumes "bnullable (bder c a)" - shows "bmkeps (bder c (bsimp a)) = bmkeps (bder c a)" - using assms - apply(induct a arbitrary: c) - apply(simp) - apply(simp) - apply(simp) - prefer 3 - apply(simp) - prefer 2 - apply(simp) - - defer - oops - lemma L06_2: assumes "bnullable (bders a [c,d])" shows "bmkeps (bders (bsimp a) [c,d]) = bmkeps (bsimp (bders (bsimp a) [c,d]))" @@ -2607,51 +2475,6 @@ shows "decode (bmkeps (bders (intern r) s)) r = Some(flex r id s (mkeps (ders s r)))" by (metis assms blexer_correctness blexer_def lexer_correct_None lexer_flex) - -lemma L02_bders2: - assumes "bnullable (bders a s)" "s = [c]" - shows "retrieve (bders (bsimp a) s) (mkeps (erase (bders (bsimp a) s))) = - retrieve (bders a s) (mkeps (erase (bders a s)))" - using assms - apply(simp) - - apply(induct s arbitrary: a) - apply(simp) - using L0 apply auto[1] - oops - -thm bmkeps_retrieve bmkeps_simp Posix_mkeps - -lemma WQ1: - assumes "s \ L (der c r)" - shows "s \ der c r \ mkeps (ders s (der c r))" - using assms - oops - -lemma L02_bsimp: - assumes "bnullable (bders a s)" - shows "retrieve (bsimp a) (flex (erase (bsimp a)) id s (mkeps (erase (bders (bsimp a) s)))) = - retrieve a (flex (erase a) id s (mkeps (erase (bders a s))))" - using assms - apply(induct s arbitrary: a) - apply(simp) - apply (simp add: L0) - apply(simp) - apply(drule_tac x="bder a aa" in meta_spec) - apply(simp) - apply(subst (asm) bder_retrieve) - using Posix_Prf Posix_flex Posix_mkeps bnullable_correctness apply fastforce - apply(simp add: flex_fun_apply) - apply(drule sym) - apply(simp) - apply(subst flex_injval) - apply(subst bder_retrieve[symmetric]) - apply (metis L_bsimp_erase Posix_Prf Posix_flex Posix_mkeps bders.simps(2) bnullable_correctness ders.simps(2) erase_bders lexer_correct_None lexer_flex option.distinct(1)) - apply(simp only: erase_bder[symmetric] erase_bders[symmetric]) - apply(subst LB_sym[symmetric]) - apply(simp) - oops - lemma L1: assumes "s \ r \ v" shows "decode (bmkeps (bders (intern r) s)) r = Some v" @@ -2760,19 +2583,6 @@ apply(simp) using test2 by fastforce -lemma XXX2a_long_without_good: - assumes "a = AALTs bs0 [AALTs bs1 [AALTs bs2 [ASTAR [] (AONE bs7), AONE bs6, ASEQ bs3 (ACHAR bs4 d) (AONE bs5)]]]" - shows "bsimp (bder c (bsimp a)) = bsimp (bder c a)" - "bsimp (bder c (bsimp a)) = XXX" - "bsimp (bder c a) = YYY" - using assms - apply(simp) - using assms - apply(simp) - prefer 2 - using assms - apply(simp) - oops lemma bder_bsimp_AALTs: shows "bder c (bsimp_AALTs bs rs) = bsimp_AALTs bs (map (bder c) rs)" @@ -2810,38 +2620,6 @@ by (metis flts_fuse flts_nothing) -lemma PP: - assumes "bnullable (bders r s)" - shows "bmkeps (bders (bsimp r) s) = bmkeps (bders r s)" - using assms - apply(induct s arbitrary: r) - apply(simp) - using bmkeps_simp apply auto[1] - apply(simp add: bders_append bders_simp_append) - oops - -lemma PP: - assumes "bnullable (bders r s)" - shows "bmkeps (bders_simp (bsimp r) s) = bmkeps (bders r s)" - using assms - apply(induct s arbitrary: r rule: rev_induct) - apply(simp) - using bmkeps_simp apply auto[1] - apply(simp add: bders_append bders_simp_append) - apply(drule_tac x="bder a (bsimp r)" in meta_spec) - apply(drule_tac meta_mp) - defer - oops - - -lemma - assumes "asize (bsimp a) = asize a" "a = AALTs bs [AALTs bs2 [], AZERO, AONE bs3]" - shows "bsimp a = a" - using assms - apply(simp) - oops - - lemma iii: assumes "bsimp_AALTs bs rs \ AZERO" shows "rs \ []" @@ -2883,14 +2661,6 @@ (* CT *) -lemma CTU: - shows "bsimp_AALTs bs as = li bs as" - apply(induct bs as rule: li.induct) - apply(auto) - done - -find_theorems "bder _ (bsimp_AALTs _ _)" - lemma CTa: assumes "\r \ set as. nonalt r \ r \ AZERO" shows "flts as = as" @@ -2947,446 +2717,44 @@ apply(induct as arbitrary: a) apply(auto) using le_add2 le_less_trans not_less_eq by blast - -lemma XXX2a_long_without_good: - shows "bsimp (bder c (bsimp a)) = bsimp (bder c a)" - apply(induct a arbitrary: c taking: "\a. asize a" rule: measure_induct) - apply(case_tac x) - apply(simp) - apply(simp) - apply(simp) - prefer 3 - apply(simp) - (* AALT case *) - prefer 2 - apply(simp del: bsimp.simps) - apply(subst (2) CT1) - apply(subst CT_exp) - apply(auto)[1] - using asize_set apply blast - apply(subst CT1[symmetric]) - apply(simp) - oops - -lemma YY: - assumes "flts (map bsimp as1) = xs" - shows "flts (map bsimp (map (fuse bs1) as1)) = map (fuse bs1) xs" - using assms - apply(induct as1 arbitrary: bs1 xs) - apply(simp) - apply(auto) - by (metis bsimp_fuse flts_fuse k0 list.simps(9)) - - -lemma flts_nonalt: - assumes "flts (map bsimp xs) = ys" - shows "\y \ 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 WWW3: - shows "flts [bsimp_AALTs bs1 (flts (map bsimp as1))] = - flts (map bsimp (map (fuse bs1) as1))" - by (metis CT0 YY flts_nonalt flts_nothing qqq1) - - - -lemma WWW5: - shows "map (bsimp \ bder c) as1 = map bsimp (map (bder c) as1)" - apply(induct as1) - apply(auto) - done - -lemma big0: - shows "bsimp (AALT x51 (AALTs bs1 as1) (AALTs bs2 as2)) = - bsimp (AALTs x51 ((map (fuse bs1) as1) @ (map (fuse bs2) as2)))" - by (smt WWW3 bsimp.simps(2) k0 k00 list.simps(8) list.simps(9) map_append) - -lemma bignA: - shows "bsimp (AALTs x51 (AALTs bs1 as1 # as2)) = - bsimp (AALTs x51 ((map (fuse bs1) as1) @ as2))" - apply(simp) - apply(subst k0) - apply(subst WWW3) - apply(simp add: flts_append) - done - -lemma XXX2a_long_without_good: - shows "bsimp (bder c (bsimp a)) = bsimp (bder c a)" - apply(induct a arbitrary: c taking: "\a. asize a" rule: measure_induct) - apply(case_tac x) - apply(simp) - apply(simp) - apply(simp) - prefer 3 - apply(simp) - (* SEQ case *) - apply(simp only:) - apply(subst CT1_SEQ) - apply(simp only: bsimp.simps) - - (* AALT case *) - prefer 2 - apply(simp only:) - apply(case_tac "\a1 a2. x52 = [a1, a2]") - apply(clarify) - apply(simp del: bsimp.simps) - apply(subst (2) CT1) - apply(simp del: bsimp.simps) - apply(rule_tac t="bsimp (bder c a1)" and s="bsimp (bder c (bsimp a1))" in subst) - apply(simp del: bsimp.simps) - apply(rule_tac t="bsimp (bder c a2)" and s="bsimp (bder c (bsimp a2))" in subst) - apply(simp del: bsimp.simps) - apply(subst CT1a[symmetric]) - (* \ *) - apply(rule_tac t="AALT x51 (bder c (bsimp a1)) (bder c (bsimp a2))" - and s="bder c (AALT x51 (bsimp a1) (bsimp a2))" in subst) - apply(simp) - apply(subst bsimp.simps) - apply(simp del: bsimp.simps bder.simps) - - apply(subst bder_bsimp_AALTs) - apply(subst bsimp.simps) - apply(subst WWW2[symmetric]) - apply(subst bsimp_AALTs_qq) - defer - apply(subst bsimp.simps) - - (* <- *) - apply(subst bsimp.simps) - apply(simp del: bsimp.simps) - apply(case_tac "\bs1 as1. bsimp a1 = AALTs bs1 as1") - apply(case_tac "\bs2 as2. bsimp a2 = AALTs bs2 as2") - apply(clarify) - apply(simp only:) - apply(simp del: bsimp.simps bder.simps) - apply(subst bsimp_AALTs_qq) - prefer 2 - apply(simp del: bsimp.simps) - apply(subst big0) - apply(simp add: WWW4) - apply (m etis One_nat_def Suc_eq_plus1 Suc_lessI arexp.distinct(7) bsimp.simps(2) bsimp_AALTs.simps(1) bsimp_idem flts.simps(1) length_append length_greater_0_conv length_map not_add_less2 not_less_eq) - oops - -lemma XXX2a_long_without_good: - shows "bsimp (bder c (bsimp a)) = bsimp (bder c a)" - apply(induct a arbitrary: c taking: "\a. asize a" rule: measure_induct) - apply(case_tac x) - apply(simp) - apply(simp) - apply(simp) - prefer 3 - apply(simp) - (* AALT case *) - prefer 2 - apply(subgoal_tac "nonnested (bsimp x)") - prefer 2 - using nn1b apply blast - apply(simp only:) - apply(drule_tac x="AALTs x51 (flts x52)" in spec) - apply(drule mp) - defer - apply(drule_tac x="c" in spec) - apply(simp) - apply(rotate_tac 2) - - apply(drule sym) - apply(simp) - - apply(simp only: bder.simps) - apply(simp only: bsimp.simps) - apply(subst bder_bsimp_AALTs) - apply(case_tac x52) - apply(simp) +lemma PPP: + assumes "\ v : ders s r" + shows "bders (intern r) s >> code v" + using assms + apply(induct s arbitrary: r v rule: rev_induct) apply(simp) - apply(case_tac list) - apply(simp) - apply(case_tac a) - apply(simp) - apply(simp) - apply(simp) - defer - apply(simp) - - - (* case AALTs list is not empty *) - apply(simp) - apply(subst k0) - apply(subst (2) k0) - apply(simp) - apply(case_tac "bsimp a = AZERO") - apply(subgoal_tac "bsimp (bder c a) = AZERO") - prefer 2 - using less_iff_Suc_add apply auto[1] - apply(simp) - apply(drule_tac x="AALTs x51 list" in spec) - apply(drule mp) - apply(simp add: asize0) - apply(drule_tac x="c" in spec) - apply(simp add: bder_bsimp_AALTs) - apply(case_tac "nonalt (bsimp a)") - prefer 2 - apply(drule_tac x="bsimp (AALTs x51 (a#list))" in spec) - apply(drule mp) - apply(rule order_class.order.strict_trans2) - apply(rule bsimp_AALTs_size3) - apply(auto)[1] - apply(simp) - apply(subst (asm) bsimp_idem) - apply(drule_tac x="c" in spec) - apply(simp) - find_theorems "_ < _ \ _ \ _ \_ < _" - apply(rule le_trans) - apply(subgoal_tac "flts [bsimp a] = [bsimp a]") - prefer 2 - using k0b apply blast - apply(simp) - find_theorems "asize _ < asize _" - - using bder_bsimp_AALTs - apply(case_tac list) - apply(simp) - sledgeha mmer [timeout=6000] - - apply(case_tac "\r \ set (map bsimp x52). \nonalt r") - apply(drule_tac x="bsimp (AALTs x51 x52)" in spec) - apply(drule mp) - using bsimp_AALTs_size3 apply blast - apply(drule_tac x="c" in spec) - apply(subst (asm) (2) test) + apply (simp add: Posix_Prf contains2) + apply(simp add: bders_append ders_append flex_append) + apply(frule Prf_injval) + apply(drule meta_spec) + apply(drule meta_spec) + apply(drule meta_mp) + apply(assumption) + apply(subst retrieve_code) + apply(assumption) + apply(subst (asm) retrieve_code) + apply(assumption) + using contains7 contains7a contains6 retrieve_code + apply(rule contains7) - apply(case_tac x52) - apply(simp) - apply(simp) - apply(case_tac "bsimp a = AZERO") - apply(simp) - apply(subgoal_tac "bsimp (bder c a) = AZERO") - prefer 2 - apply auto[1] - apply (metis L.simps(1) L_bsimp_erase der.simps(1) der_correctness erase.simps(1) erase_bder xxx_bder2) - apply(simp) - apply(drule_tac x="AALTs x51 list" in spec) - apply(drule mp) - apply(simp add: asize0) - apply(simp) - apply(case_tac list) - prefer 2 - apply(simp) - apply(case_tac "bsimp aa = AZERO") - apply(simp) - apply(subgoal_tac "bsimp (bder c aa) = AZERO") - prefer 2 - apply auto[1] - apply (metis add.left_commute bder.simps(1) bsimp.simps(3) less_add_Suc1) - apply(simp) - apply(drule_tac x="AALTs x51 (a#lista)" in spec) - apply(drule mp) - apply(simp add: asize0) - apply(simp) - apply (metis flts.simps(2) k0) - apply(subst k0) - apply(subst (2) k0) - - - using less_add_Suc1 apply fastforce - apply(subst k0) - - - apply(simp) - apply(case_tac "bsimp a = AZERO") - apply(simp) - apply(subgoal_tac "bsimp (bder c a) = AZERO") - prefer 2 - apply auto[1] - apply(simp) - apply(case_tac "nonalt (bsimp a)") - apply(subst bsimp_AALTs1) - apply(simp) - using less_add_Suc1 apply fastforce - - apply(subst bsimp_AALTs1) - - using nn11a apply b last - - (* SEQ case *) - apply(clarify) - apply(subst bsimp.simps) - apply(simp del: bsimp.simps) - apply(auto simp del: bsimp.simps)[1] - apply(subgoal_tac "bsimp x42 \ AZERO") - prefer 2 - using b3 apply force - apply(case_tac "bsimp x43 = AZERO") - apply(simp) - apply (simp add: bsimp_ASEQ0) - apply (metis bder.simps(1) bsimp.simps(3) bsimp_AALTs.simps(1) bsimp_fuse flts.simps(1) flts.simps(2) fuse.simps(1) less_add_Suc2) - apply(case_tac "\bs. bsimp x42 = AONE bs") - apply(clarify) - apply(simp) - apply(subst bsimp_ASEQ2) - apply(subgoal_tac "bsimp (bder c x42) = AZERO") - prefer 2 - using less_add_Suc1 apply fastforce - apply(simp) - apply(frule_tac x="x43" in spec) - apply(drule mp) - apply(simp) - apply(drule_tac x="c" in spec) - apply(subst bder_fuse) - apply(subst bsimp_fuse[symmetric]) - apply(simp) - apply(subgoal_tac "bmkeps x42 = bs") - prefer 2 - apply (simp add: bmkeps_simp) - apply(simp) - apply(subst bsimp_fuse[symmetric]) - apply(case_tac "nonalt (bsimp (bder c x43))") - apply(subst bsimp_AALTs1) - using nn11a apply blast - using fuse_append apply blast - apply(subgoal_tac "\bs rs. bsimp (bder c x43) = AALTs bs rs") - prefer 2 - using bbbbs1 apply blast - apply(clarify) - apply(simp) - apply(case_tac rs) - apply(simp) - apply (metis arexp.distinct(7) good.simps(4) good1) - apply(simp) - apply(case_tac list) - apply(simp) - apply (metis arexp.distinct(7) good.simps(5) good1) - apply(simp del: bsimp_AALTs.simps) - apply(simp only: bsimp_AALTs.simps) - apply(simp) + find_theorems "bder _ _ >> _" + find_theorems "code _ = _" + find_theorems "\ _ : der _ _" - -(* HERE *) -apply(case_tac "x42 = AZERO") - apply(simp) - apply(case_tac "bsimp x43 = AZERO") - apply(simp) - apply (simp add: bsimp_ASEQ0) - apply(subgoal_tac "bsimp (fuse (bmkeps x42) (bder c x43)) = AZERO") - apply(simp) - apply (met is bder.simps(1) bsimp.simps(3) bsimp_fuse fuse.simps(1) less_add_Suc2) - apply(case_tac "\bs. bsimp x42 = AONE bs") - apply(clarify) - apply(simp) - apply(subst bsimp_ASEQ2) - apply(subgoal_tac "bsimp (bder c x42) = AZERO") - apply(simp) - prefer 2 - using less_add_Suc1 apply fastforce - apply(subgoal_tac "bmkeps x42 = bs") - prefer 2 - apply (simp add: bmkeps_simp) - apply(simp) - apply(case_tac "nonalt (bsimp (bder c x43))") - apply (metis bder_fuse bsimp_AALTs.simps(1) bsimp_AALTs.simps(2) bsimp_fuse flts.simps(1) flts.simps(2) fuse.simps(1) fuse_append k0b less_add_Suc2 nn11a) - apply(subgoal_tac "nonnested (bsimp (bder c x43))") - prefer 2 - using nn1b apply blast - apply(case_tac x43) - apply(simp) - apply(simp) - apply(simp) - prefer 3 - apply(simp) - apply (metis arexp.distinct(25) arexp.distinct(7) arexp.distinct(9) bsimp_ASEQ.simps(1) bsimp_ASEQ.simps(11) bsimp_ASEQ1 nn11a nonalt.elims(3) nonalt.simps(6)) - apply(simp) - apply(auto)[1] - apply(case_tac "(bsimp (bder c x42a)) = AZERO") - apply(simp) - - apply(simp) - - - - apply(subgoal_tac "(\bs1 rs1. 1 < length rs1 \ bsimp (bder c x43) = AALTs bs1 rs1 ) \ - (\bs1 r. bsimp (bder c x43) = fuse bs1 r)") - prefer 2 - apply (metis fuse_empty) - apply(erule disjE) - prefer 2 - apply(clarify) - apply(simp only:) - apply(simp) - apply(simp add: fuse_append) - apply(subst bder_fuse) - apply(subst bsimp_fuse[symmetric]) - apply(subst bder_fuse) - apply(subst bsimp_fuse[symmetric]) - apply(subgoal_tac "bsimp (bder c (bsimp x43)) = bsimp (bder c x43)") - prefer 2 - using less_add_Suc2 apply bl ast - apply(simp only: ) - apply(subst bsimp_fuse[symmetric]) - apply(simp only: ) - - apply(simp only: fuse.simps) + find_theorems "_ >> (code _)" + apply(induct s arbitrary: a bs rule: rev_induct) + apply(simp) + apply(simp add: bders_simp_append bders_append) + apply(rule contains55) + find_theorems "bder _ _ >> _" + apply(drule_tac x="bder a aa" in meta_spec) + apply(drule_tac x="bs" in meta_spec) apply(simp) - apply(case_tac rs1) - apply(simp) - apply (me tis arexp.distinct(7) fuse.simps(1) good.simps(4) good1 good_fuse) - apply(simp) - apply(case_tac list) - apply(simp) - apply (me tis arexp.distinct(7) fuse.simps(1) good.simps(5) good1 good_fuse) - apply(simp only: bsimp_AALTs.simps map_cons.simps) - apply(auto)[1] - - - - apply(subst bsimp_fuse[symmetric]) - apply(subgoal_tac "bmkeps x42 = bs") - prefer 2 - apply (simp add: bmkeps_simp) - - - apply(simp) - - using b3 apply force - using bsimp_ASEQ0 test2 apply fo rce - thm good_SEQ test2 - apply (simp add: good_SEQ test2) - apply (simp add: good_SEQ test2) - apply(case_tac "x42 = AZERO") - apply(simp) - apply(case_tac "x43 = AZERO") - apply(simp) - apply (simp add: bsimp_ASEQ0) - apply(case_tac "\bs. x42 = AONE bs") - apply(clarify) - apply(simp) - apply(subst bsimp_ASEQ1) - apply(simp) - using bsimp_ASEQ0 test2 apply fo rce - apply (simp add: good_SEQ test2) - apply (simp add: good_SEQ test2) - apply (simp add: good_SEQ test2) - (* AALTs case *) - apply(simp) - using test2 by fa st force - - -lemma XXX4ab: - shows "good (bders_simp (bsimp r) s) \ bders_simp (bsimp r) s = AZERO" - apply(induct s arbitrary: r rule: rev_induct) - apply(simp) - apply (simp add: good1) - apply(simp add: bders_simp_append) - apply (simp add: good1) - done + apply(rule contains55) + find_theorems "bsimp _ >> _" lemma XXX4: assumes "good a"