equal
deleted
inserted
replaced
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 |