src/HOL/Bali/Eval.thy
changeset 13601 fd3e3d6b37b2
parent 13462 56610e2ba220
child 13688 a0b16d42d489
equal deleted inserted replaced
13600:9702c8636a7b 13601:fd3e3d6b37b2
   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 *)