(** Properties of volatile memory accesses *)

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).