(* Additional lemmas / proof rules about VST stack *)
Require Export sha.general_lemmas.
Definition data_block {cs: compspecs} (sh: share) (contents: list byte) :=
@data_at cs sh (tarray tuchar (Zlength contents)) (map Vubyte contents).
Hint Resolve @data_block_local_facts : saturate_local.
intros. rewrite skipn_app1.
specialize (skipn_exact_length (force_lengthn n l a)).
rewrite force_lengthn_length_n. intros X; rewrite X; trivial.
rewrite force_lengthn_length_n; omega.
Qed.

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.