equal
deleted
inserted
replaced
447 done |
447 done |
448 |
448 |
449 lemma evaln_nonstrict [rule_format (no_asm), elim]: |
449 lemma evaln_nonstrict [rule_format (no_asm), elim]: |
450 "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (w, s') \<Longrightarrow> \<forall>m. n\<le>m \<longrightarrow> G\<turnstile>s \<midarrow>t\<succ>\<midarrow>m\<rightarrow> (w, s')" |
450 "G\<turnstile>s \<midarrow>t\<succ>\<midarrow>n\<rightarrow> (w, s') \<Longrightarrow> \<forall>m. n\<le>m \<longrightarrow> G\<turnstile>s \<midarrow>t\<succ>\<midarrow>m\<rightarrow> (w, s')" |
451 apply (erule evaln.induct) |
451 apply (erule evaln.induct) |
452 apply (tactic {* ALLGOALS (EVERY'[strip_tac, TRY o etac (thm "Suc_le_D_lemma"), |
452 apply (tactic {* ALLGOALS (EVERY'[strip_tac, TRY o etac @{thm Suc_le_D_lemma}, |
453 REPEAT o smp_tac 1, |
453 REPEAT o smp_tac 1, |
454 resolve_tac (thms "evaln.intros") THEN_ALL_NEW TRY o atac]) *}) |
454 resolve_tac @{thms evaln.intros} THEN_ALL_NEW TRY o atac]) *}) |
455 (* 3 subgoals *) |
455 (* 3 subgoals *) |
456 apply (auto split del: split_if) |
456 apply (auto split del: split_if) |
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]] |