equal
deleted
inserted
replaced
156 apply (erule approx_val_widen) |
156 apply (erule approx_val_widen) |
157 apply simp |
157 apply simp |
158 apply assumption |
158 apply assumption |
159 done |
159 done |
160 |
160 |
|
161 lemma loc_widen_Err [dest]: |
|
162 "\<And>XT. G \<turnstile> replicate n Err <=l XT \<Longrightarrow> XT = replicate n Err" |
|
163 by (induct n) auto |
|
164 |
|
165 lemma approx_loc_Err [iff]: |
|
166 "approx_loc G hp (replicate n v) (replicate n Err)" |
|
167 by (induct n) auto |
|
168 |
161 lemma approx_loc_subst: |
169 lemma approx_loc_subst: |
162 "\<lbrakk> approx_loc G hp loc LT; approx_val G hp x X \<rbrakk> |
170 "\<lbrakk> approx_loc G hp loc LT; approx_val G hp x X \<rbrakk> |
163 \<Longrightarrow> approx_loc G hp (loc[idx:=x]) (LT[idx:=X])" |
171 \<Longrightarrow> approx_loc G hp (loc[idx:=x]) (LT[idx:=X])" |
164 apply (unfold approx_loc_def list_all2_def) |
172 apply (unfold approx_loc_def list_all2_def) |
165 apply (auto dest: subsetD [OF set_update_subset_insert] simp add: zip_update) |
173 apply (auto dest: subsetD [OF set_update_subset_insert] simp add: zip_update) |
278 apply (erule allE, erule allE, erule impE, assumption) |
286 apply (erule allE, erule allE, erule impE, assumption) |
279 apply (unfold oconf_def lconf_def) |
287 apply (unfold oconf_def lconf_def) |
280 apply (simp del: split_paired_All) |
288 apply (simp del: split_paired_All) |
281 done |
289 done |
282 |
290 |
283 lemma preallocated_newref: |
291 |
284 "\<lbrakk> hp oref = None; preallocated hp \<rbrakk> \<Longrightarrow> preallocated (hp(oref\<mapsto>obj))" |
292 lemma |
285 by (unfold preallocated_def) auto |
293 assumes none: "hp oref = None" and alloc: "preallocated hp" |
286 |
294 shows preallocated_newref: "preallocated (hp(oref\<mapsto>obj))" |
|
295 proof (cases oref) |
|
296 case (XcptRef x) |
|
297 with none alloc have "False" by (auto elim: preallocatedE [of _ x]) |
|
298 thus ?thesis .. |
|
299 next |
|
300 case (Loc l) |
|
301 with alloc show ?thesis by (simp add: preallocated_def) |
|
302 qed |
|
303 |
287 section {* correct-frames *} |
304 section {* correct-frames *} |
288 |
305 |
289 lemmas [simp del] = fun_upd_apply |
306 lemmas [simp del] = fun_upd_apply |
290 |
307 |
291 lemma correct_frames_field_update [rule_format]: |
308 lemma correct_frames_field_update [rule_format]: |