Fixpoint L n :=
match n with
| 0 => [ ]
| S n => L n ++ var n :: map_pro L.app (L n) (L n) ++ map lambda (L n)
end.

(* Specifications: *)
Lemma length_L n : |L n| >= n.
Lemma L_exists n : exists s, nth n (L (S n)) = Some s.
Lemma L_cum m n : m <= n -> exists A, L n = L m ++ A.
Lemma nth_app_l X (x : X) n A B :
nth n A = Some x -> nth n (A ++ B) = Some x.
Lemma L_inv m n k s t :
nth k (L m) = Some s -> nth k (L n) = Some t -> s = t.