equal
deleted
inserted
replaced
128 [ |
128 [ |
129 (nat_ind_tac "k" 1), |
129 (nat_ind_tac "k" 1), |
130 (Simp_tac 1), |
130 (Simp_tac 1), |
131 (Simp_tac 1), |
131 (Simp_tac 1), |
132 (strip_tac 1), |
132 (strip_tac 1), |
133 (res_inst_tac [("s","p`(iterate k1 g x)")] trans 1), |
133 (res_inst_tac [("s","p`(iterate k g x)")] trans 1), |
134 (rtac trans 1), |
134 (rtac trans 1), |
135 (rtac (p_def3 RS sym) 2), |
135 (rtac (p_def3 RS sym) 2), |
136 (res_inst_tac [("s","TT"),("t","b1`(iterate k1 g x)")] ssubst 1), |
136 (res_inst_tac [("s","TT"),("t","b1`(iterate k g x)")] ssubst 1), |
137 (rtac mp 1), |
137 (rtac mp 1), |
138 (etac spec 1), |
138 (etac spec 1), |
139 (simp_tac (!simpset addsimps [less_Suc_eq]) 1), |
139 (simp_tac (!simpset addsimps [less_Suc_eq]) 1), |
140 (simp_tac HOLCF_ss 1), |
140 (simp_tac HOLCF_ss 1), |
141 (etac mp 1), |
141 (etac mp 1), |
143 (rtac mp 1), |
143 (rtac mp 1), |
144 (etac spec 1), |
144 (etac spec 1), |
145 (etac less_trans 1), |
145 (etac less_trans 1), |
146 (Simp_tac 1) |
146 (Simp_tac 1) |
147 ]); |
147 ]); |
148 trace_simp := false; |
148 |
149 val hoare_lemma24 = prove_goal Hoare.thy |
149 val hoare_lemma24 = prove_goal Hoare.thy |
150 "(! m. m< Suc k --> b1`(iterate m g x)=TT) --> \ |
150 "(! m. m< Suc k --> b1`(iterate m g x)=TT) --> \ |
151 \ q`(iterate k g x)=q`x" |
151 \ q`(iterate k g x)=q`x" |
152 (fn prems => |
152 (fn prems => |
153 [ |
153 [ |
154 (nat_ind_tac "k" 1), |
154 (nat_ind_tac "k" 1), |
155 (Simp_tac 1), |
155 (Simp_tac 1), |
156 (simp_tac (!simpset addsimps [less_Suc_eq]) 1), |
156 (simp_tac (!simpset addsimps [less_Suc_eq]) 1), |
157 (strip_tac 1), |
157 (strip_tac 1), |
158 (res_inst_tac [("s","q`(iterate k1 g x)")] trans 1), |
158 (res_inst_tac [("s","q`(iterate k g x)")] trans 1), |
159 (rtac trans 1), |
159 (rtac trans 1), |
160 (rtac (q_def3 RS sym) 2), |
160 (rtac (q_def3 RS sym) 2), |
161 (res_inst_tac [("s","TT"),("t","b1`(iterate k1 g x)")] ssubst 1), |
161 (res_inst_tac [("s","TT"),("t","b1`(iterate k g x)")] ssubst 1), |
162 (fast_tac HOL_cs 1), |
162 (fast_tac HOL_cs 1), |
163 (simp_tac HOLCF_ss 1), |
163 (simp_tac HOLCF_ss 1), |
164 (etac mp 1), |
164 (etac mp 1), |
165 (strip_tac 1), |
165 (strip_tac 1), |
166 (fast_tac (HOL_cs addSDs [less_Suc_eq RS iffD1]) 1)]); |
166 (fast_tac (HOL_cs addSDs [less_Suc_eq RS iffD1]) 1)]); |