apply (eq_dep_eq nat list 0).
apply empty_dep; auto.
Qed.
Hint Resolve empty.
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)}}.
intros n m H l.
generalize H; clear H.
dependent inversion_clear l
with
(fun (n' : nat) (l : list n') =>
m = n' -> {a : A &  {l' : list n | eq_list n' l (S n) (cons n a l')}}).
unfold eq_list in |- *.
intros H; exists a; exists l0; auto.
Defined.

(* Specifications: *)
Lemma non_empty :
forall (n : nat) (l : list (S n)),
{a : A &  {t : list n | l = cons n a t}}.