intros; rewrite multK1r; auto.
destruct x; rewrite !gprod0r; Vrm0.
rewrite !IH, rev_conj, conj_invo, scalE1; Vrm0.
Qed.
(* Scalar product, version deduced from prod_scal observing that prod_scal *)
(* computes the sum of the coordinate products and *)
(* that the A*(reverse A) equals to the squared norm *)
Fixpoint prod_scal (n : nat) : kn n -> vect n -> vect n -> K :=
match n return (kn n -> vect n -> vect n -> K) with
| 0%nat => fun _ x y => (x * y)%f
| S n1 =>
fun l x y =>
let (k, l1) := l in
let (x1, x2) := x in
let (y1, y2) := y in
(prod_scal n1 l1 x2 y2 + k * prod_scal n1 l1 x1 (y1 ^_'f))%f
end.
Notation "a '[.'  l ]  b " := (prod_scal _ l a b)
(at level 40).

Lemma prod_scal_addr n l (x y z : vect n) :
x [.l] (y + z) =  (x [.l] y + x [.l] z)%f.