(* Lemma by_value_data_at_: forall sh t p, type_is_by_value t = true -> data_at_ sh t p = !! field_compatible t nil p && mapsto_ sh t p. *)
(************************************************  Transformation between data_at and data_at_rec. This is used in transformation between field_at and data_at.  ************************************************)

(* Specifications: *)
Lemma lower_sepcon_val':
forall (P Q: val->mpred) v,
((P*Q) v) = (P v * Q v).
Lemma memory_block_data_at__aux1: forall i pos t,
0 <= pos /\ pos + sizeof t <= Int.modulus - Int.unsigned i ->
Int.unsigned (Int.add i (Int.repr pos)) + sizeof t <= Int.modulus.
Lemma memory_block_data_at__aux2: forall i pos t,
0 <= pos /\ pos + sizeof t <= Int.modulus - Int.unsigned i ->
(alignof t | Int.unsigned i) ->
(alignof t | pos) ->
(alignof t | Int.unsigned (Int.add i (Int.repr pos))).