Implicit Types (x y: X) (A B : list X).Fixpoint pos x A : option nat :=
    match A with
    | nil => None
    | y :: A' => if d x y then Some 0
                else match pos x A' with
                     | Some n => Some (S n)
                     | None => None
                     end
    end.

(* Specifications: *)
Lemma el_pos x A : x el A -> { n | pos x A = Some n }.