Section Gen.
Variable f : nat -> X.
Hypothesis Hf : injective f.
Fixpoint LX n :=
match n with
| 0 => [f 0]
| S n => f (S n) :: LX n
end.
End Gen.
(* ** Generating data types are infinite *)
Hypothesis Hg : generating X.
Instance el_dec :
forall (A : list X) x, dec (x el A).
Definition dummy : X.
Definition f n :=
match (f' n) with Some x => x | None => dummy end.
Definition le_f x y :=
exists n, f n = x /\ forall n', f n' = y -> n <= n'.

Lemma gen (A : list X) :
{ x | ~ x el A /\ forall y, ~ y el A -> le_f x y}.