(** Properties of volatile memory accesses *)

(* Specifications: *)
Lemma transf_volatile_store:
forall v1 v2 v1' v2' m tm chunk sp nm t v m',
volatile_store_sem chunk ge (v1::v2::nil) m t v m' ->
Val.lessdef v1 v1' ->
vagree v2 v2' (store_argument chunk) ->
magree m tm (nlive ge sp nm) ->
v = Vundef /\
exists tm', volatile_store_sem chunk ge (v1'::v2'::nil) tm t Vundef tm'
/\ magree m' tm' (nlive ge sp nm).
Lemma eagree_set_undef:
forall e1 e2 ne r, eagree e1 e2 ne -> eagree (e1#r <- Vundef) e2 ne.