Remark non_empty_dep :
   forall n m : nat,
   m = S n ->
   forall l : list (S n),
   {h : A &  {t : list n | eq_list (S n) l (S n) (cons n h t)}}.

(* Specifications: *)
Lemma non_empty : forall (n : nat) (l : list (S n)), {a : A & {t : list n | l = cons n a t}}.
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).