(* Definition of the inverse of the pseudoscalar element *)
(* with the geometric product  *)
Notation "''Pi[' l ]" := (pseudo_inv _ l).
(* product of all elements in a vector *)
Fixpoint prodk n : (kn n -> K) :=
match n return kn n -> K with
0 => fun _ => 1%f
| (S n1) => fun x => let (a, x1) := x in (a * prodk n1 x1)%f
end.
Notation "''P[' x ]" := (prodk _ x).

(* Specifications: *)
Lemma gprod_all_rev n l : E [* l] 'R[E] = ['P[l]] :> vect n.
Lemma pseudo_invE n l : 'Pi[l] = 'P[l] .* 'R[E] :> vect n.
Definition cdual n l x : vect n := 'P[l] .* (x [* l] 'R[E]).