Definition memory_block (sh: share) (n: Z) (v: val) : mpred :=
match v with
| Vptr b ofs => (!!(Ptrofs.unsigned ofs + n < Ptrofs.modulus)) && memory_block' sh (nat_of_Z n) b (Ptrofs.unsigned ofs)
| _ => FF
end.

Lemma mapsto_overlap: forall sh {cs: compspecs} t1 t2 p1 p2 v1 v2,
nonunit sh ->
pointer_range_overlap p1 (sizeof t1) p2 (sizeof t2) ->
mapsto sh t1 p1 v1 * mapsto sh t2 p2 v2 |-- FF.