src/HOL/IMPP/Misc.thy
changeset 27148 5b78e50adc49
parent 19803 aa2581752afb
child 28524 644b62cf678f
equal deleted inserted replaced
27147:62ab1968c1f4 27148:5b78e50adc49
    83 done
    83 done
    84 
    84 
    85 lemma classic_Local: "!v. G|-{%Z s. P Z (s[Loc Y::=v]) & s<Y> = a (s[Loc Y::=v])}.  
    85 lemma classic_Local: "!v. G|-{%Z s. P Z (s[Loc Y::=v]) & s<Y> = a (s[Loc Y::=v])}.  
    86   c .{%Z s. Q Z (s[Loc Y::=v])} ==> G|-{P}. LOCAL Y:=a IN c .{Q}"
    86   c .{%Z s. Q Z (s[Loc Y::=v])} ==> G|-{P}. LOCAL Y:=a IN c .{Q}"
    87 apply (rule export_s)
    87 apply (rule export_s)
    88 (*variant 1*)
       
    89 apply (rule hoare_derivs.Local [THEN conseq1])
    88 apply (rule hoare_derivs.Local [THEN conseq1])
    90 apply (erule spec)
    89 apply (erule spec)
    91 apply force
    90 apply force
    92 (*variant 2
       
    93 by (res_inst_tac [("P'","%Z s. s' = s & P Z (s[Loc Y::=a s][Loc Y::=s'<Y>]) & (s[Loc Y::=a s])<Y> = a (s[Loc Y::=a s][Loc Y::=s'<Y>])")] conseq1 1)
       
    94 by  (Clarsimp_tac 2);
       
    95 by (rtac hoare_derivs.Local 1);
       
    96 by (etac spec 1);
       
    97 *)
       
    98 done
    91 done
    99 
    92 
   100 lemma classic_Local_indep: "[| Y~=Y'; G|-{P}. c .{%Z s. s<Y'> = d} |] ==>  
    93 lemma classic_Local_indep: "[| Y~=Y'; G|-{P}. c .{%Z s. s<Y'> = d} |] ==>  
   101   G|-{%Z s. P Z (s[Loc Y::=a s])}. LOCAL Y:=a IN c .{%Z s. s<Y'> = d}"
    94   G|-{%Z s. P Z (s[Loc Y::=a s])}. LOCAL Y:=a IN c .{%Z s. s<Y'> = d}"
   102 apply (rule classic_Local)
    95 apply (rule classic_Local)