(** Preservation of stores. *)

(* Specifications: *)
Lemma setN_inj:
forall (access: Z -> Prop) delta f vl1 vl2,
list_forall2 (memval_inject f) vl1 vl2 ->
forall p c1 c2,
(forall q, access q -> memval_inject f (ZMap.get q c1) (ZMap.get (q + delta) c2)) ->
(forall q, access q -> memval_inject f (ZMap.get q (setN vl1 p c1))
(ZMap.get (q + delta) (setN vl2 (p + delta) c2))).
Lemma setN_inj:
forall (access: Z -> Prop) delta f vl1 vl2,
list_forall2 (memval_inject f) vl1 vl2 ->
forall p c1 c2,
(forall q, access q -> memval_inject f (ZMap.get q c1) (ZMap.get (q + delta) c2)) ->
(forall q, access q -> memval_inject f (ZMap.get q (setN vl1 p c1))
(ZMap.get (q + delta) (setN vl2 (p + delta) c2))).