src/HOL/IMPP/Natural.thy
changeset 59498 50b60f501b05
parent 58963 26bf09b95dda
child 59502 cd4d1b631603
equal deleted inserted replaced
59497:0c5cd369a643 59498:50b60f501b05
   110 apply (best elim: evalc_WHILE_case)+
   110 apply (best elim: evalc_WHILE_case)+
   111 done
   111 done
   112 
   112 
   113 lemma evaln_evalc: "<c,s> -n-> t ==> <c,s> -c-> t"
   113 lemma evaln_evalc: "<c,s> -n-> t ==> <c,s> -c-> t"
   114 apply (erule evaln.induct)
   114 apply (erule evaln.induct)
   115 apply (tactic {* ALLGOALS (resolve_tac @{thms evalc.intros} THEN_ALL_NEW atac) *})
   115 apply (tactic {* ALLGOALS (resolve_tac @{context} @{thms evalc.intros} THEN_ALL_NEW atac) *})
   116 done
   116 done
   117 
   117 
   118 lemma Suc_le_D_lemma: "[| Suc n <= m'; (!!m. n <= m ==> P (Suc m)) |] ==> P m'"
   118 lemma Suc_le_D_lemma: "[| Suc n <= m'; (!!m. n <= m ==> P (Suc m)) |] ==> P m'"
   119 apply (frule Suc_le_D)
   119 apply (frule Suc_le_D)
   120 apply blast
   120 apply blast
   138 
   138 
   139 lemma evalc_evaln: "<c,s> -c-> t ==> ? n. <c,s> -n-> t"
   139 lemma evalc_evaln: "<c,s> -c-> t ==> ? n. <c,s> -n-> t"
   140 apply (erule evalc.induct)
   140 apply (erule evalc.induct)
   141 apply (tactic {* ALLGOALS (REPEAT o etac exE) *})
   141 apply (tactic {* ALLGOALS (REPEAT o etac exE) *})
   142 apply (tactic {* TRYALL (EVERY' [dtac @{thm evaln_max2}, assume_tac @{context},
   142 apply (tactic {* TRYALL (EVERY' [dtac @{thm evaln_max2}, assume_tac @{context},
   143   REPEAT o eresolve_tac [exE, conjE]]) *})
   143   REPEAT o eresolve_tac @{context} [exE, conjE]]) *})
   144 apply (tactic {* ALLGOALS (rtac exI THEN' resolve_tac @{thms evaln.intros} THEN_ALL_NEW atac) *})
   144 apply (tactic
       
   145   {* ALLGOALS (rtac exI THEN' resolve_tac @{context} @{thms evaln.intros} THEN_ALL_NEW atac) *})
   145 done
   146 done
   146 
   147 
   147 lemma eval_eq: "<c,s> -c-> t = (? n. <c,s> -n-> t)"
   148 lemma eval_eq: "<c,s> -c-> t = (? n. <c,s> -n-> t)"
   148 apply (fast elim: evalc_evaln evaln_evalc)
   149 apply (fast elim: evalc_evaln evaln_evalc)
   149 done
   150 done