equal
deleted
inserted
replaced
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 |