Set Implicit Arguments.
Unset Strict Implicit.
Require Export List.
Section Listes.
Variable A : Set.
Let List := list A.
Inductive item (x : A) : List -> nat -> Prop :=
| item_hd : forall l : List, item x (x :: l) 0
| item_tl :
forall (l : List) (n : nat) (y : A),
item x l n -> item x (y :: l) (S n).

(* Specifications: *)
Lemma fun_item :
forall (u v : A) (e : List) (n : nat), item u e n -> item v e n -> u = v.
Lemma list_item :
forall e n, {t : _ | item t e n} + {(forall t, ~ item t e n)}.