(* Equality to zero: Equality to zero on leaves *)
Notation "x ?= 0" := (eq0 _ x) (at level 70): g_scope.

(* Multiplication of a constant *)
Lemma scalk n k1 k2 : k1 .* [k2] = [k1 * k2] :> vect n.
Fixpoint hom (n k : nat) {struct n} : vect n -> bool :=
match n return (vect n -> bool) with
| 0%nat => fun a => match k with O => true | S _ => a ?= 0 end
| S n1 =>
fun l1 =>
let (l2, l3) := l1 in
(match k with O => l2 ?= 0 | S k1 => hom n1 k1 l2 end) && hom n1 k l3
end.