mapsto and memory_block -maybe move the lemmas using them elsewhere?*)
Definition size_compatible {C: compspecs} t p :=
match p with
| Vptr b i_ofs => Ptrofs.unsigned i_ofs + sizeof t < Ptrofs.modulus
| _ => True
end.

Lemma memory_block_valid_pointer: forall {cs: compspecs} sh n p i,
0 <= i < n ->
nonidentity sh ->
memory_block sh n p |-- valid_pointer (offset_val i p).