src/HOL/Imperative_HOL/Ref.thy
changeset 37805 0f797d586ce5
parent 37804 0145e59c1f6c
child 37806 a7679be14442
equal deleted inserted replaced
37804:0145e59c1f6c 37805:0f797d586ce5
   217 
   217 
   218 
   218 
   219 text {* Non-interaction between imperative array and imperative references *}
   219 text {* Non-interaction between imperative array and imperative references *}
   220 
   220 
   221 lemma get_array_set [simp]:
   221 lemma get_array_set [simp]:
   222   "get_array a (set r v h) = get_array a h"
   222   "get_array (set r v h) = get_array h"
   223   by (simp add: get_array_def set_def)
   223   by (simp add: get_array_def set_def expand_fun_eq)
   224 
       
   225 lemma nth_set [simp]:
       
   226   "get_array a (set r v h) ! i = get_array a h ! i"
       
   227   by simp
       
   228 
   224 
   229 lemma get_update [simp]:
   225 lemma get_update [simp]:
   230   "get (Array.update a i v h) r  = get h r"
   226   "get (Array.update a i v h) r = get h r"
   231   by (simp add: get_def Array.update_def Array.set_def)
   227   by (simp add: get_def Array.update_def Array.set_def)
   232 
   228 
   233 lemma alloc_update:
   229 lemma alloc_update:
   234   "fst (alloc v (Array.update a i v' h)) = fst (alloc v h)"
   230   "fst (alloc v (Array.update a i v' h)) = fst (alloc v h)"
   235   by (simp add: Array.update_def get_array_def Array.set_def alloc_def Let_def)
   231   by (simp add: Array.update_def get_array_def Array.set_def alloc_def Let_def)
   241 lemma length_alloc [simp]: 
   237 lemma length_alloc [simp]: 
   242   "Array.length (snd (alloc v h)) a = Array.length h a"
   238   "Array.length (snd (alloc v h)) a = Array.length h a"
   243   by (simp add: Array.length_def get_array_def alloc_def set_def Let_def)
   239   by (simp add: Array.length_def get_array_def alloc_def set_def Let_def)
   244 
   240 
   245 lemma get_array_alloc [simp]: 
   241 lemma get_array_alloc [simp]: 
   246   "get_array a (snd (alloc v h)) = get_array a h"
   242   "get_array (snd (alloc v h)) = get_array h"
   247   by (simp add: get_array_def alloc_def set_def Let_def)
   243   by (simp add: get_array_def alloc_def set_def Let_def expand_fun_eq)
   248 
   244 
   249 lemma present_update [simp]: 
   245 lemma present_update [simp]: 
   250   "present (Array.update a i v h) = present h"
   246   "present (Array.update a i v h) = present h"
   251   by (simp add: Array.update_def Array.set_def expand_fun_eq present_def)
   247   by (simp add: Array.update_def Array.set_def expand_fun_eq present_def)
   252 
   248