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 memory_block'_split:
forall sh b ofs i j,
0 <= i <= j ->
j <= j+ofs < Ptrofs.modulus ->
memory_block' sh (nat_of_Z j) b ofs =
memory_block' sh (nat_of_Z i) b ofs * memory_block' sh (nat_of_Z (j-i)) b (ofs+i).