Hint Rewrite
(@Znth_map Z _) (@Znth_map nat _) (@Znth_map positive _)
using (auto; rewrite ?Zlength_map in *; omega) : sublist.
(* Add these in a later file where things are in scope ... Hint Rewrite (Znth_map Int.zero) (Znth_map Vundef) using (auto; rewrite ?Zlength_map in *; omega) : sublist. *)

(* Specifications: *)
Lemma Znth_succ: forall {A}{a: Inhabitant A} i lo (v: list A), Z.succ lo <= i -> Znth (i - lo) v = Znth (i - (Z.succ lo)) (skipn 1 v).
Lemma Znth_0_cons {A}{a: Inhabitant A} l (v:A): Znth 0 (v::l) = v.
Lemma Znth_In : forall {A}{a: Inhabitant A} i l, 0 <= i < Zlength l -> In (Znth i l) l.
Lemma split3_full_length_list: forall {A}{a: Inhabitant A} lo mid hi (ct: list A),
lo <= mid < hi ->
Zlength ct = hi - lo ->
ct = firstn (Z.to_nat (mid - lo)) ct ++
(Znth (mid - lo) ct :: nil) ++
skipn (Z.to_nat (mid - lo + 1)) ct.
Lemma Forall_Znth:
forall {A}{a: Inhabitant A} (F: A -> Prop) (al: list A) i,
0 <= i < Zlength al ->
Forall F al ->
F (Znth i al).