Definition data_block {cs: compspecs} (sh: share) (contents: list byte) :=
  @data_at cs sh (tarray tuchar (Zlength contents)) (map Vubyte contents).

(* Specifications: *)
Lemma force_lengthn_long {A}: forall n (l:list A) d, (n <= length l)%nat -> force_lengthn n l d = firstn n l.
Lemma skipn_force_lengthn_app {A} n (l m:list A) a: skipn n (force_lengthn n l a ++ m) = m.
Lemma sizeof_Tarray {cs: composite_env} k: Z.max 0 k = k -> sizeof (Tarray tuchar k noattr) = k.
Lemma nth_mapVint: forall i (l:list Z) (Hi: (0 <= i < length l)%nat), exists n, nth i (map Vint (map Int.repr l)) Vundef = Vint n.
Lemma nth_mapVint' {z}: forall i (l:list Z) (Hi: (0 <= i < length l)%nat), nth i (map Vint (map Int.repr l)) Vundef = Vint (Int.repr (nth i l z)).
Lemma nth_mapVintZ: forall i (l:list Z) (Hi: 0 <= i < Zlength l), exists n, nth (Z.to_nat i) (map Vint (map Int.repr l)) Vundef = Vint n.
Lemma isptrD v: isptr v -> exists b ofs, v = Vptr b ofs.