(** Memory accesses *)

Lemma indexed_store_access_correct:
forall chunk (mk_instr: ireg -> offset -> instruction) r1 m,
(forall base ofs rs,
exec_instr ge fn (mk_instr base ofs) rs m = exec_store ge chunk rs m r1 base ofs) ->
forall (base: ireg) ofs k (rs: regset) m',
Mem.storev chunk m (Val.offset_ptr rs#base ofs) (rs#r1) = Some m' ->
base <> X31 -> r1 <> X31 -> r1 <> PC ->
exists rs',
exec_straight ge fn (indexed_memory_access mk_instr base ofs k) rs m k rs' m'
/\ forall r, r <> PC -> r <> X31 -> rs'#r = rs#r.