Definition enum {X} p (L: nat -> list X) :=
  cumulative L /\ forall x, p x <-> exists m, x el L m.

(* Specifications: *)
Lemma count_enum' : exists L : nat -> list X, forall x, (exists n, e n = Some x) <-> (exists n, x el L n).
Lemma enum_to_cumulative X (p : X -> Prop) L : (forall x, p x <-> exists m : nat, x el L m) -> exists L, enum p L.