Definition size_compatible' (n: Z) (p: val) :=
match p with
| Vundef => True
| Vint _ => True
| Vlong _ => True
| Vfloat _ => True
| Vsingle _ => True
| Vptr _ i_ofs => Ptrofs.unsigned i_ofs + n < Ptrofs.modulus
end.

(* Specifications: *)
Lemma memory_block_offset_zero: forall sh n v, memory_block sh n v = memory_block sh n (offset_val 0 v).
Lemma access_mode_by_value: forall t, type_is_by_value t = true -> exists ch, access_mode t = By_value ch.
Lemma memory_block_mapsto_: forall sh t p, type_is_by_value t = true -> type_is_volatile t = false -> size_compatible t p -> align_compatible t p -> memory_block sh (sizeof t) p = mapsto_ sh t p.
Lemma nonreadable_memory_block_mapsto: forall sh p t v, ~ readable_share sh -> type_is_by_value t = true -> type_is_volatile t = false -> size_compatible t p -> align_compatible t p -> tc_val' t v -> memory_block sh (sizeof t) p = mapsto sh t p v.
Lemma mapsto_force_ptr: forall sh t v v', mapsto sh t (force_ptr v) v' = mapsto sh t v v'.