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

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