intros n; elim n; clear n.
intros l a nth.
apply Nth_Split_Intro with (nil (A:=B)) (tail l).
inversion_clear nth.
simpl in |- *; trivial.
intros n ih l a.
case l; clear l.
intros nth; elimtype False; inversion_clear nth.
intros a0 l nth.
elim (ih l a); clear ih.
intros l1 l2 H.
apply Nth_Split_Intro with (a0 :: l1) l2.
rewrite H; simpl in |- *; trivial.
inversion_clear nth; assumption.
Qed.

(* Specifications: *)
Lemma in_nth :
forall (a : B) (l : list B), In a l -> exists n : nat, my_nth n l a.