src/HOL/MicroJava/BV/Correct.thy
changeset 13052 3bf41c474a88
parent 13006 51c5f3f11d16
child 13681 06cce9be31a4
equal deleted inserted replaced
13051:8efb5d92cf55 13052:3bf41c474a88
   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]: