equal
deleted
inserted
replaced
239 |
239 |
240 lemma oconf_heap_update: |
240 lemma oconf_heap_update: |
241 "\<lbrakk> hp a = Some obj'; obj_ty obj' = obj_ty obj''; G,hp\<turnstile>obj\<surd> \<rbrakk> |
241 "\<lbrakk> hp a = Some obj'; obj_ty obj' = obj_ty obj''; G,hp\<turnstile>obj\<surd> \<rbrakk> |
242 \<Longrightarrow> G,hp(a\<mapsto>obj'')\<turnstile>obj\<surd>" |
242 \<Longrightarrow> G,hp(a\<mapsto>obj'')\<turnstile>obj\<surd>" |
243 apply (unfold oconf_def lconf_def) |
243 apply (unfold oconf_def lconf_def) |
244 apply (fastsimp intro: approx_val_heap_update) |
244 apply (fastforce intro: approx_val_heap_update) |
245 done |
245 done |
246 |
246 |
247 section {* hconf *} |
247 section {* hconf *} |
248 |
248 |
249 lemma hconf_newref: |
249 lemma hconf_newref: |
255 lemma hconf_field_update: |
255 lemma hconf_field_update: |
256 "\<lbrakk> map_of (fields (G, oT)) X = Some T; hp a = Some(oT,fs); |
256 "\<lbrakk> map_of (fields (G, oT)) X = Some T; hp a = Some(oT,fs); |
257 G,hp\<turnstile>v::\<preceq>T; G\<turnstile>h hp\<surd> \<rbrakk> |
257 G,hp\<turnstile>v::\<preceq>T; G\<turnstile>h hp\<surd> \<rbrakk> |
258 \<Longrightarrow> G\<turnstile>h hp(a \<mapsto> (oT, fs(X\<mapsto>v)))\<surd>" |
258 \<Longrightarrow> G\<turnstile>h hp(a \<mapsto> (oT, fs(X\<mapsto>v)))\<surd>" |
259 apply (simp add: hconf_def) |
259 apply (simp add: hconf_def) |
260 apply (fastsimp intro: oconf_heap_update oconf_field_update |
260 apply (fastforce intro: oconf_heap_update oconf_field_update |
261 simp add: obj_ty_def) |
261 simp add: obj_ty_def) |
262 done |
262 done |
263 |
263 |
264 section {* preallocated *} |
264 section {* preallocated *} |
265 |
265 |