Section My_Nth.
Variable B : Set.
Inductive my_nth : nat -> list B -> B -> Prop :=
| My_NthO : forall (l : list B) (a : B), my_nth 0 (a :: l) a
| My_NthS :
forall (n : nat) (l : list B) (b : B),
my_nth n l b -> forall a : B, my_nth (S n) (a :: l) b.
intros.
inversion H.
Qed.
intros.
inversion H.
trivial.
Qed.
intros.
inversion H.
assumption.
Qed.

Lemma my_nth_rec :
forall P : nat -> list B -> B -> Set,
(forall (l : list B) (a : B), P 0 (a :: l) a) ->
(forall (n : nat) (l : list B) (b : B),
my_nth n l b -> P n l b -> forall a : B, P (S n) (a :: l) b) ->
forall (n : nat) (l : list B) (y : B), my_nth n l y -> P n l y.