(* TODO: merge size_compatible and align_compatible *)
Definition align_compatible {C: compspecs} t p :=
match p with
| Vptr b i_ofs => align_compatible_rec cenv_cs t (Ptrofs.unsigned i_ofs)
| _ => True
end.
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 mapsto_valid_pointer: forall {cs: compspecs} sh t p v i,
size_compatible t p ->
0 <= i < sizeof t ->
sepalg.nonidentity sh ->
mapsto sh t p v |-- valid_pointer (offset_val i p).