src/HOL/MicroJava/BV/Correct.thy
changeset 44890 22f665a2e91c
parent 35417 47ee18b6ae32
child 52998 3295927cf777
equal deleted inserted replaced
44889:340df9f3491f 44890:22f665a2e91c
   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