diff -r d5a0e25c4742 -r a9003e6d0463 thys/Abacus_Mopup.thy --- a/thys/Abacus_Mopup.thy Wed Jan 14 09:08:51 2015 +0000 +++ b/thys/Abacus_Mopup.thy Wed Dec 19 16:10:58 2018 +0100 @@ -2,7 +2,7 @@ Author: Jian Xu, Xingyuan Zhang, and Christian Urban *) -header {* Mopup Turing Machine that deletes all "registers", except one *} +chapter {* Mopup Turing Machine that deletes all "registers", except one *} theory Abacus_Mopup imports Uncomputable @@ -156,7 +156,7 @@ "\n < length lm; 0 < s; s \ 2 * n; s mod 2 = 0\ \ (fetch (mopup_a n @ shift mopup_b (2 * n)) s Bk) = (R, s - 1)" apply(subgoal_tac "\ q. s = 2 * q", auto) -apply(case_tac qa, simp, simp) +apply(case_tac q, simp, simp) apply(auto simp: fetch.simps nth_of.simps nth_append) apply(subgoal_tac "mopup_a n ! (4 * nat + 2) = mopup_a (Suc nat) ! ((4 * nat) + 2)", @@ -290,12 +290,12 @@ lemma tape_of_nl_cons: " = (if lm = [] then Oc\(Suc m) else Oc\(Suc m) @ Bk # )" -apply(case_tac lm, simp_all add: tape_of_nl_abv tape_of_nat_abv split: if_splits) -done + by(case_tac lm, simp_all add: tape_of_list_def tape_of_nat_def split: if_splits) lemma drop_tape_of_cons: "\Suc q < length lm; x = lm ! q\ \ = Oc # Oc \ x @ Bk # " -by (metis Suc_lessD append_Cons list.simps(2) nth_drop' replicate_Suc tape_of_nl_cons) + using Suc_lessD append_Cons list.simps(2) Cons_nth_drop_Suc replicate_Suc tape_of_nl_cons + by metis lemma erase2jumpover1: "\q < length list; @@ -307,8 +307,8 @@ apply(rule_tac drop_tape_of_cons, simp_all) apply(subgoal_tac "length list = Suc q", auto) apply(subgoal_tac "drop q list = [list ! q]") -apply(simp add: tape_of_nl_abv tape_of_nat_abv replicate_Suc) -by (metis append_Nil2 append_eq_conv_conj drop_Suc_conv_tl lessI) +apply(simp add: tape_of_nat_def tape_of_list_def replicate_Suc) +by (metis append_Nil2 append_eq_conv_conj Cons_nth_drop_Suc lessI) lemma erase2jumpover2: "\q < length list; \rn. @ Bk # Bk \ n \ @@ -319,8 +319,8 @@ apply(erule_tac notE, simp add: replicate_Suc) apply(rule_tac drop_tape_of_cons, simp_all) apply(subgoal_tac "length list = Suc q", auto) -apply(erule_tac x = "n" in allE, simp add: tape_of_nl_abv) -by (metis append_Nil2 append_eq_conv_conj drop_Suc_conv_tl lessI replicate_Suc tape_of_nl_abv tape_of_nl_cons) +apply(erule_tac x = "n" in allE, simp add: tape_of_list_def) +by (metis append_Nil2 append_eq_conv_conj Cons_nth_drop_Suc lessI replicate_Suc tape_of_list_def tape_of_nl_cons) lemma mod_ex1: "(a mod 2 = Suc 0) = (\ q. a = Suc (2 * q))" by arith @@ -449,12 +449,10 @@ apply(rule mopup_jump_over1_2_aft_erase_a, simp) apply(auto simp: mopup_jump_over1.simps) apply(rule_tac x = ln in exI, rule_tac x = "Suc (lm ! n)" in exI, - rule_tac x = 0 in exI, simp add: tape_of_nl_abv ) + rule_tac x = 0 in exI, simp add: tape_of_list_def ) done -lemma [simp]: "<[]> = []" -apply(simp add: tape_of_nl_abv) -done +lemma [simp]: "<[]> = []" by(simp add: tape_of_list_def) lemma [simp]: "\n < length lm; @@ -467,7 +465,7 @@ apply(case_tac a, simp_all) apply(rule_tac x = rn in exI, rule_tac x = "[]" in exI, simp) apply(rule_tac x = rn in exI, rule_tac x = "[nat]" in exI, simp) -apply(case_tac a, simp, simp add: tape_of_nl_abv tape_of_nat_abv) +apply(case_tac a, simp, simp add: tape_of_list_def tape_of_nat_def) apply(case_tac a, simp_all) apply(rule_tac x = rn in exI, rule_tac x = "list" in exI, simp) apply(rule_tac x = rn in exI, simp) @@ -519,7 +517,7 @@ apply(case_tac a, simp_all) apply(rule_tac x = rn in exI, rule_tac x = "[]" in exI, simp) apply(rule_tac x = rn in exI, rule_tac x = "[nat]" in exI, simp) -apply(simp add: tape_of_nl_abv tape_of_nat_abv) +apply(simp add: tape_of_list_def tape_of_nat_def) done lemma [intro]: "\rna ml. Oc \ a @ Bk # @ Bk \ rn = @@ -655,7 +653,7 @@ "\n < length lm; mopup_jump_over2 (2 * n + 6, l, Bk # xs) lm n ires\ \ mopup_stop (0, Bk # l, xs) lm n ires" apply(auto simp: mopup_jump_over2.simps mopup_stop.simps) -apply(simp_all add: tape_of_nat_abv exp_ind[THEN sym]) +apply(simp_all add: tape_of_nat_def exp_ind[THEN sym]) done lemma [simp]: "mopup_jump_over2 (2 * n + 6, l, []) lm n ires = False" @@ -791,8 +789,7 @@ have "((step (a, b, c) (mopup_a n @ shift mopup_b (2 * n), 0), n), (a, b, c), n) \ abc_mopup_measure" apply(case_tac c, case_tac [2] aa) apply(auto split:if_splits simp add:step.simps mopup_inv.simps) - apply(simp_all add: mopupfetchs abc_mopup_measure_def) - done + by (auto split:if_splits simp: mopupfetchs abc_mopup_measure_def) thus "((step (steps (Suc 0, l, r) (mopup_a n @ shift mopup_b (2 * n), 0) na) (mopup_a n @ shift mopup_b (2 * n), 0), n), steps (Suc 0, l, r) (mopup_a n @ shift mopup_b (2 * n), 0) na, n) @@ -840,7 +837,7 @@ (mopup_a n @ shift mopup_b (2 * n), 0) stp") apply(simp add: mopup_inv.simps mopup_stop.simps rs) using rs - apply(simp add: tape_of_nat_abv) + apply(simp add: tape_of_nat_def) done qed