(* Generate the p element of the base in dimension n *)
Fixpoint gen (n: nat) (p: nat) {struct n} : kn n :=
  match n return kn n with O => tt | S n1 =>
    match p with
      0 => (1%f, genk n1 0%f)
    | S p1 =>  (0%f, gen n1 p1) 
    end
  end.Notation " 'e_ p" := (gen _ p) (at level 70): kn_scope.

(* Specifications: *)
Lemma gen_inj n p1 p2 : p1 < n -> p2 < n -> 'e_p1 = ('e_p2 : kn n) -> p1 = p2.