(* Get the constant part of a vector *)
Fixpoint const (n: nat): (vect n) -> K :=
  match n return vect n -> K with 
  | O => fun a => a
  | S n1 => fun l => let (l1,l2) := l in const n1 l2
  end.Notation "'C[ x ]" := (const _ x).Notation "x ?= 0" := (eq0 _ x) (at level 70): g_scope.

Lemma homE n k1 k2 (x: vect n) : hom n k1 x -> hom n k2 x -> k1 = k2 \/ x = 0.