equal
deleted
inserted
replaced
158 apply simp_all |
158 apply simp_all |
159 apply (case_tac "T") |
159 apply (case_tac "T") |
160 defer |
160 defer |
161 apply (case_tac "a' = Null") |
161 apply (case_tac "a' = Null") |
162 apply simp_all |
162 apply simp_all |
|
163 apply rules |
163 done |
164 done |
164 |
165 |
165 constdefs |
166 constdefs |
166 catch ::"prog \<Rightarrow> state \<Rightarrow> qtname \<Rightarrow> bool" ("_,_\<turnstile>catch _"[61,61,61]60) |
167 catch ::"prog \<Rightarrow> state \<Rightarrow> qtname \<Rightarrow> bool" ("_,_\<turnstile>catch _"[61,61,61]60) |
167 "G,s\<turnstile>catch C\<equiv>\<exists>xc. abrupt s=Some (Xcpt xc) \<and> |
168 "G,s\<turnstile>catch C\<equiv>\<exists>xc. abrupt s=Some (Xcpt xc) \<and> |
1201 by (auto elim: eval.Body) |
1202 by (auto elim: eval.Body) |
1202 |
1203 |
1203 lemma unique_eval [rule_format (no_asm)]: |
1204 lemma unique_eval [rule_format (no_asm)]: |
1204 "G\<turnstile>s \<midarrow>t\<succ>\<rightarrow> ws \<Longrightarrow> (\<forall>ws'. G\<turnstile>s \<midarrow>t\<succ>\<rightarrow> ws' \<longrightarrow> ws' = ws)" |
1205 "G\<turnstile>s \<midarrow>t\<succ>\<rightarrow> ws \<Longrightarrow> (\<forall>ws'. G\<turnstile>s \<midarrow>t\<succ>\<rightarrow> ws' \<longrightarrow> ws' = ws)" |
1205 apply (case_tac "ws") |
1206 apply (case_tac "ws") |
1206 apply (simp only:) |
1207 apply hypsubst |
1207 apply (erule thin_rl) |
|
1208 apply (erule eval_induct) |
1208 apply (erule eval_induct) |
1209 apply (tactic {* ALLGOALS (EVERY' |
1209 apply (tactic {* ALLGOALS (EVERY' |
1210 [strip_tac, rotate_tac ~1, eresolve_tac (thms "eval_elim_cases")]) *}) |
1210 [strip_tac, rotate_tac ~1, eresolve_tac (thms "eval_elim_cases")]) *}) |
1211 (* 31 subgoals *) |
1211 (* 31 subgoals *) |
1212 prefer 28 (* Try *) |
1212 prefer 28 (* Try *) |