equal
deleted
inserted
replaced
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) |