Section VectorSizes.
Let nilVectorHelp (A : Set) (n : nat) (p : n = 0) : Vector A n.
intros.
induction n as [| n Hrecn].
apply Vnil.
discriminate p.
Defined.
Let consVectorHelp (A : Set) (n m : nat) (p : n = S m)
(a : A) (v : Vector A m) : Vector A n.
intros.
destruct n.
discriminate p.
rewrite p.
apply Vcons.
apply a.
apply v.
Defined.

Lemma consVector :
forall (A : Set) (n : nat) (x : Vector A (S n)),
{pair : A * Vector A n | Vcons A (fst pair) n (snd pair) = x}.