(* 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.

(* Specifications: *)
Lemma mapsto_pointer_void: forall sh t a, eqb_type (Tpointer t a) int_or_ptr_type = false -> eqb_type (Tpointer Tvoid a) int_or_ptr_type = false -> mapsto sh (Tpointer t a) = mapsto sh (Tpointer Tvoid a).
Lemma mapsto_unsigned_signed: forall sign1 sign2 sh sz v i, mapsto sh (Tint sz sign1 noattr) v (Vint (Cop.cast_int_int sz sign1 i)) = mapsto sh (Tint sz sign2 noattr) v (Vint (Cop.cast_int_int sz sign2 i)).
Lemma mapsto_tuint_tint: forall sh, mapsto sh tuint = mapsto sh tint.
Lemma mapsto_tuint_tptr_nullval: forall sh p t, mapsto sh (Tpointer t noattr) p nullval = mapsto sh size_t p nullval.
Lemma mapsto_size_t_tptr_nullval: forall sh p t, mapsto sh (Tpointer t noattr) p nullval = mapsto sh size_t p nullval.