src/HOL/Bali/Evaln.thy
changeset 82695 d93ead9ac6df
parent 81458 1263d1143bab
equal deleted inserted replaced
82692:8f0b2daa7eaa 82695:d93ead9ac6df
   195 
   195 
   196 declare if_split     [split del] if_split_asm     [split del]
   196 declare if_split     [split del] if_split_asm     [split del]
   197         option.split [split del] option.split_asm [split del]
   197         option.split [split del] option.split_asm [split del]
   198         not_None_eq [simp del] 
   198         not_None_eq [simp del] 
   199         split_paired_All [simp del] split_paired_Ex [simp del]
   199         split_paired_All [simp del] split_paired_Ex [simp del]
   200 setup \<open>map_theory_simpset (fn ctxt => ctxt delloop "split_all_tac")\<close>
   200 setup \<open>map_theory_simpset (fn ctxt => ctxt |> Simplifier.del_loop "split_all_tac")\<close>
   201 
   201 
   202 inductive_cases evaln_cases: "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (v, s')"
   202 inductive_cases evaln_cases: "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (v, s')"
   203 
   203 
   204 inductive_cases evaln_elim_cases:
   204 inductive_cases evaln_elim_cases:
   205         "G\<turnstile>(Some xc, s) \<midarrow>t                        \<succ>\<midarrow>n\<rightarrow> (v, s')"
   205         "G\<turnstile>(Some xc, s) \<midarrow>t                        \<succ>\<midarrow>n\<rightarrow> (v, s')"
   236 
   236 
   237 declare if_split     [split] if_split_asm     [split] 
   237 declare if_split     [split] if_split_asm     [split] 
   238         option.split [split] option.split_asm [split]
   238         option.split [split] option.split_asm [split]
   239         not_None_eq [simp] 
   239         not_None_eq [simp] 
   240         split_paired_All [simp] split_paired_Ex [simp]
   240         split_paired_All [simp] split_paired_Ex [simp]
   241 declaration \<open>K (Simplifier.map_ss (fn ss => ss addloop ("split_all_tac", split_all_tac)))\<close>
   241 declaration \<open>K (Simplifier.map_ss (fn ss => ss |> Simplifier.add_loop ("split_all_tac", split_all_tac)))\<close>
   242 
   242 
   243 lemma evaln_Inj_elim: "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (w,s') \<Longrightarrow> case t of In1 ec \<Rightarrow>  
   243 lemma evaln_Inj_elim: "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (w,s') \<Longrightarrow> case t of In1 ec \<Rightarrow>  
   244   (case ec of Inl e \<Rightarrow> (\<exists>v. w = In1 v) | Inr c \<Rightarrow> w = \<diamondsuit>)  
   244   (case ec of Inl e \<Rightarrow> (\<exists>v. w = In1 v) | Inr c \<Rightarrow> w = \<diamondsuit>)  
   245   | In2 e \<Rightarrow> (\<exists>v. w = In2 v) | In3 e \<Rightarrow> (\<exists>v. w = In3 v)"
   245   | In2 e \<Rightarrow> (\<exists>v. w = In2 v) | In3 e \<Rightarrow> (\<exists>v. w = In3 v)"
   246 apply (erule evaln_cases , auto)
   246 apply (erule evaln_cases , auto)