destruct q as [[[? ?] ?] ?]. destruct q0 as [[[? ?] ?] ?].
destruct q1 as [[[? ?] ?] ?]. destruct q2 as [[[? ?] ?] ?]. simpl.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity.
destruct i. eexists; reflexivity. omega.
Qed.

(* Specifications: *)
Lemma SixteenWR_Znth_int i s: (0 <= i < 16) ->
exists ii : int, Znth i (SixteenWordRep s) = Vint ii.
Lemma QuadWR_Z_int: forall (q : QuadWord) (i : Z),
0 <= i < 4 -> exists ii : int, Znth i (QuadWordRep q) = Vint ii.
Lemma SixteenWordRep_MapVint ss: exists l, SixteenWordRep ss = map Vint l.
Definition QuadWordRepI (q : QuadWord) :=
match q with (q0, q1, q2, q3) => [q0; q1; q2; q3] end.
Lemma QuadWordRepI_QuadWordRep q: QuadWordRep q = map Vint  (QuadWordRepI q).
Lemma QuadWordRepI_length s: length (QuadWordRepI s) = 4%nat.
Lemma QuadByte2ValList_bytes q: exists bytes, length bytes = 4%nat /\
QuadByte2ValList q = map Vint (map Int.repr (map Byte.unsigned bytes)).
Lemma SixteenByte2ValList_bytes N: exists bytes, length bytes = 16%nat /\
SixteenByte2ValList N =  map Vint (map Int.repr (map Byte.unsigned bytes)).
Lemma QuadByte2ValList_ints q: exists ints, length ints = 4%nat /\
QuadByte2ValList q = map Vint ints.
Lemma SixteenByte2ValList_ints N: exists ints, length ints = 16%nat /\
SixteenByte2ValList N = map Vint ints.
Lemma QuadChunks2ValList_bytes: forall l,
exists bytes, length bytes = (4*length l)%nat /\
QuadChunks2ValList l = map Vint (map Int.repr (map Byte.unsigned bytes)).