(* The base as the list of all the generators *)
Fixpoint base (n : nat) : list (kn n) :=
  match n return list (kn n) with
  | 0 => nil
  | S n1 => ('e_0: kn (S n1)) :: map (lift n1) (base n1)
  end.

(* Specifications: *)
Lemma e_in_base n i : i < n -> In ('e_i) (base n).
Lemma e_in_base_ex n v : In v (base n) -> exists p1, p1 < n /\ v = 'e_p1.
Lemma base_length n : length (base n) = n.
Lemma base_free n : free _ (base n).
Lemma k2l_mprod n (v: kn n) : kn2l n v *X* base n = v.
Lemma cbl_base n v : cbl _ (base n) v.