equal
deleted
inserted
replaced
20 |
20 |
21 AddSEs evalc1_SEs; |
21 AddSEs evalc1_SEs; |
22 |
22 |
23 AddIs evalc1.intrs; |
23 AddIs evalc1.intrs; |
24 |
24 |
25 Goal "!!s. (SKIP,s) -m-> (SKIP,t) ==> s = t & m = 0"; |
25 Goal "(SKIP,s) -m-> (SKIP,t) ==> s = t & m = 0"; |
26 by (etac rel_pow_E2 1); |
26 by (etac rel_pow_E2 1); |
27 by (Asm_full_simp_tac 1); |
27 by (Asm_full_simp_tac 1); |
28 by (Fast_tac 1); |
28 by (Fast_tac 1); |
29 val hlemma = result(); |
29 val hlemma = result(); |
30 |
30 |
36 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2])1); |
36 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2])1); |
37 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]addSDs [rel_pow_Suc_D2])1); |
37 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]addSDs [rel_pow_Suc_D2])1); |
38 qed_spec_mp "lemma1"; |
38 qed_spec_mp "lemma1"; |
39 |
39 |
40 |
40 |
41 Goal "!!c s s1. <c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)"; |
41 Goal "<c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)"; |
42 by (etac evalc.induct 1); |
42 by (etac evalc.induct 1); |
43 |
43 |
44 (* SKIP *) |
44 (* SKIP *) |
45 by (rtac rtrancl_refl 1); |
45 by (rtac rtrancl_refl 1); |
46 |
46 |
118 |
118 |
119 |
119 |
120 section "A Proof Without -n->"; |
120 section "A Proof Without -n->"; |
121 |
121 |
122 Goal |
122 Goal |
123 "!!c1. (c1,s1) -*-> (SKIP,s2) ==> \ |
123 "(c1,s1) -*-> (SKIP,s2) ==> \ |
124 \ (c2,s2) -*-> cs3 --> (c1;c2,s1) -*-> cs3"; |
124 \ (c2,s2) -*-> cs3 --> (c1;c2,s1) -*-> cs3"; |
125 by (etac converse_rtrancl_induct2 1); |
125 by (etac converse_rtrancl_induct2 1); |
126 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1); |
126 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1); |
127 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1); |
127 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1); |
128 qed_spec_mp "my_lemma1"; |
128 qed_spec_mp "my_lemma1"; |
129 |
129 |
130 |
130 |
131 Goal "!!c s s1. <c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)"; |
131 Goal "<c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)"; |
132 by (etac evalc.induct 1); |
132 by (etac evalc.induct 1); |
133 |
133 |
134 (* SKIP *) |
134 (* SKIP *) |
135 by (rtac rtrancl_refl 1); |
135 by (rtac rtrancl_refl 1); |
136 |
136 |
184 of Lemma 1. |
184 of Lemma 1. |
185 *) |
185 *) |
186 |
186 |
187 (*Delsimps [update_apply];*) |
187 (*Delsimps [update_apply];*) |
188 Goal |
188 Goal |
189 "!!c s. ((c,s) -1-> (c',s')) ==> (!t. <c',s'> -c-> t --> <c,s> -c-> t)"; |
189 "((c,s) -1-> (c',s')) ==> (!t. <c',s'> -c-> t --> <c,s> -c-> t)"; |
190 by (etac evalc1.induct 1); |
190 by (etac evalc1.induct 1); |
191 by Auto_tac; |
191 by Auto_tac; |
192 qed_spec_mp "FB_lemma3"; |
192 qed_spec_mp "FB_lemma3"; |
193 (*Addsimps [update_apply];*) |
193 (*Addsimps [update_apply];*) |
194 |
194 |
197 by (rtac (major RS rtrancl_induct2) 1); |
197 by (rtac (major RS rtrancl_induct2) 1); |
198 by (Fast_tac 1); |
198 by (Fast_tac 1); |
199 by (fast_tac (claset() addIs [FB_lemma3]) 1); |
199 by (fast_tac (claset() addIs [FB_lemma3]) 1); |
200 qed_spec_mp "FB_lemma2"; |
200 qed_spec_mp "FB_lemma2"; |
201 |
201 |
202 Goal "!!c. (c,s) -*-> (SKIP,t) ==> <c,s> -c-> t"; |
202 Goal "(c,s) -*-> (SKIP,t) ==> <c,s> -c-> t"; |
203 by (fast_tac (claset() addEs [FB_lemma2]) 1); |
203 by (fast_tac (claset() addEs [FB_lemma2]) 1); |
204 qed "evalc1_impl_evalc"; |
204 qed "evalc1_impl_evalc"; |