Section L_list_def.
Context {X : Type}.
Variable (L : nat -> list X).
Fixpoint L_list (n : nat) : list (list X) :=
match n
with
| 0 => [ [] ]
| S n => L_list n ++ [ x :: L | (x,L) ∈ (cumul L n × L_list n) ]
end.
End L_list_def.

Lemma L_list_cumulative {X} L : cumulative (@L_list X L).