intros P base step n.
elim n; clear n.
intros l; case l; clear l.
intros y nth; elimtype False.
apply (inv_nth_nil 0 y nth).
intros a l b nth.
rewrite (inv_nthO a l b nth).
apply base.
intros n ih l.
case l; clear l.
intros y nth; elimtype False.
apply (inv_nth_nil (S n) y nth).
intros a l b nth.
apply step.
apply (inv_nthS n a l b nth).
apply ih.
apply (inv_nthS n a l b nth).
Qed.

(* Specifications: *)
Lemma nth_in : forall (n : nat) (l : list B) (a : B), my_nth n l a -> In a l.
intros n l a nth.