intros n l.
cut
(sigS
(fun a : A =>
sig (fun t : list n => eq_list (S n) l (S n) (cons n a t)))).
intros H; elim H; clear H.
intros a H; elim H; clear H.
intros t H.
exists a; exists t.
apply eq_dep_eq with (U := nat) (P := list) (p := S n).
unfold eq_list in H; auto.
apply (non_empty_dep n (S n)); auto.
Defined.

(* Specifications: *)
Lemma split_list :
forall (n : nat) (l : list (S n)),
l = cons n (head (S n) l (lt_O_Sn n)) (tl (S n) l).