src/HOL/IMPP/Hoare.thy
changeset 59498 50b60f501b05
parent 58963 26bf09b95dda
child 59763 56d2c357e6b5
equal deleted inserted replaced
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 *)