changeset 59498 | 50b60f501b05 |
parent 58963 | 26bf09b95dda |
child 59763 | 56d2c357e6b5 |
59497:0c5cd369a643 | 59498:50b60f501b05 |
---|---|
216 apply (fast intro: hoare_derivs.cut) |
216 apply (fast intro: hoare_derivs.cut) |
217 apply (fast intro: hoare_derivs.weaken) |
217 apply (fast intro: hoare_derivs.weaken) |
218 apply (rule hoare_derivs.conseq, intro strip, tactic "smp_tac @{context} 2 1", clarify, tactic "smp_tac @{context} 1 1",rule exI, rule exI, erule (1) conjI) |
218 apply (rule hoare_derivs.conseq, intro strip, tactic "smp_tac @{context} 2 1", clarify, tactic "smp_tac @{context} 1 1",rule exI, rule exI, erule (1) conjI) |
219 prefer 7 |
219 prefer 7 |
220 apply (rule_tac hoare_derivs.Body, drule_tac spec, erule_tac mp, fast) |
220 apply (rule_tac hoare_derivs.Body, drule_tac spec, erule_tac mp, fast) |
221 apply (tactic {* ALLGOALS (resolve_tac ((funpow 5 tl) @{thms hoare_derivs.intros}) THEN_ALL_NEW (fast_tac @{context})) *}) |
221 apply (tactic {* ALLGOALS (resolve_tac @{context} ((funpow 5 tl) @{thms hoare_derivs.intros}) THEN_ALL_NEW (fast_tac @{context})) *}) |
222 done |
222 done |
223 |
223 |
224 lemma weak_Body: "G|-{P}. the (body pn) .{Q} ==> G|-{P}. BODY pn .{Q}" |
224 lemma weak_Body: "G|-{P}. the (body pn) .{Q} ==> G|-{P}. BODY pn .{Q}" |
225 apply (rule BodyN) |
225 apply (rule BodyN) |
226 apply (erule thin) |
226 apply (erule thin) |
276 apply (fast intro!: Body_triple_valid_Suc [THEN iffD1]) |
276 apply (fast intro!: Body_triple_valid_Suc [THEN iffD1]) |
277 done |
277 done |
278 |
278 |
279 lemma hoare_sound: "G||-ts ==> G||=ts" |
279 lemma hoare_sound: "G||-ts ==> G||=ts" |
280 apply (erule hoare_derivs.induct) |
280 apply (erule hoare_derivs.induct) |
281 apply (tactic {* TRYALL (eresolve_tac [@{thm Loop_sound_lemma}, @{thm Body_sound_lemma}] THEN_ALL_NEW atac) *}) |
281 apply (tactic {* TRYALL (eresolve_tac @{context} [@{thm Loop_sound_lemma}, @{thm Body_sound_lemma}] THEN_ALL_NEW atac) *}) |
282 apply (unfold hoare_valids_def) |
282 apply (unfold hoare_valids_def) |
283 apply blast |
283 apply blast |
284 apply blast |
284 apply blast |
285 apply (blast) (* asm *) |
285 apply (blast) (* asm *) |
286 apply (blast) (* cut *) |
286 apply (blast) (* cut *) |