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.

Lemma f_sur :
forall x, exists n, f n = x.