equal
deleted
inserted
replaced
191 G\<turnstile>Norm s0 \<midarrow>Init C\<midarrow>n\<rightarrow> s3" |
191 G\<turnstile>Norm s0 \<midarrow>Init C\<midarrow>n\<rightarrow> s3" |
192 monos |
192 monos |
193 if_bool_eq_conj |
193 if_bool_eq_conj |
194 |
194 |
195 |
195 |
196 declare split_if [split del] split_if_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 delloop "split_all_tac")\<close> |
201 |
201 |
232 "G\<turnstile>Norm s \<midarrow>In2 ({accC,statDeclC,stat}e..fn) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
232 "G\<turnstile>Norm s \<midarrow>In2 ({accC,statDeclC,stat}e..fn) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
233 "G\<turnstile>Norm s \<midarrow>In2 (e1.[e2]) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
233 "G\<turnstile>Norm s \<midarrow>In2 (e1.[e2]) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
234 "G\<turnstile>Norm s \<midarrow>In1l ({accC,statT,mode}e\<cdot>mn({pT}p)) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
234 "G\<turnstile>Norm s \<midarrow>In1l ({accC,statT,mode}e\<cdot>mn({pT}p)) \<succ>\<midarrow>n\<rightarrow> (v, s')" |
235 "G\<turnstile>Norm s \<midarrow>In1r (Init C) \<succ>\<midarrow>n\<rightarrow> (x, s')" |
235 "G\<turnstile>Norm s \<midarrow>In1r (Init C) \<succ>\<midarrow>n\<rightarrow> (x, s')" |
236 |
236 |
237 declare split_if [split] split_if_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 addloop ("split_all_tac", split_all_tac)))\<close> |
242 |
242 |
451 apply (tactic \<open>ALLGOALS (EVERY' [strip_tac @{context}, |
451 apply (tactic \<open>ALLGOALS (EVERY' [strip_tac @{context}, |
452 TRY o eresolve_tac @{context} @{thms Suc_le_D_lemma}, |
452 TRY o eresolve_tac @{context} @{thms Suc_le_D_lemma}, |
453 REPEAT o smp_tac @{context} 1, |
453 REPEAT o smp_tac @{context} 1, |
454 resolve_tac @{context} @{thms evaln.intros} THEN_ALL_NEW TRY o assume_tac @{context}])\<close>) |
454 resolve_tac @{context} @{thms evaln.intros} THEN_ALL_NEW TRY o assume_tac @{context}])\<close>) |
455 (* 3 subgoals *) |
455 (* 3 subgoals *) |
456 apply (auto split del: split_if) |
456 apply (auto split del: if_split) |
457 done |
457 done |
458 |
458 |
459 lemmas evaln_nonstrict_Suc = evaln_nonstrict [OF _ le_refl [THEN le_SucI]] |
459 lemmas evaln_nonstrict_Suc = evaln_nonstrict [OF _ le_refl [THEN le_SucI]] |
460 |
460 |
461 lemma evaln_max2: "\<lbrakk>G\<turnstile>s1 \<midarrow>t1\<succ>\<midarrow>n1\<rightarrow> (w1, s1'); G\<turnstile>s2 \<midarrow>t2\<succ>\<midarrow>n2\<rightarrow> (w2, s2')\<rbrakk> \<Longrightarrow> |
461 lemma evaln_max2: "\<lbrakk>G\<turnstile>s1 \<midarrow>t1\<succ>\<midarrow>n1\<rightarrow> (w1, s1'); G\<turnstile>s2 \<midarrow>t2\<succ>\<midarrow>n2\<rightarrow> (w2, s2')\<rbrakk> \<Longrightarrow> |