induction n1; intuition; simpl in *.
rewrite shiftOut_0.
right.
econstructor.
econstructor.
intuition.
destruct s; simpl in *.
intuition.
case_eq (shiftOut s (n1 + n2)); intuition.
rewrite H0 in H.
destruct p.
discriminate.
edestruct IHn1.
eauto.
rewrite H1.
intuition.
destruct H1.
destruct H1.
intuition.
rewrite H2.
right.
econstructor.
econstructor.
intuition.
Qed.

(* Specifications: *)
Theorem Vector_cons_app_assoc :
forall (A : Type)(a : A)(n1 n2 : nat)(v1 : Vector.t A n1)(v2 : Vector.t A n2),
Vector.cons _ a _ (Vector.append v1 v2) =
Vector.append (Vector.cons _ a _ v1) v2.
Theorem Vector_cons_app_assoc :
forall (A : Type)(a : A)(n1 n2 : nat)(v1 : Vector.t A n1)(v2 : Vector.t A n2),
Vector.cons _ a _ (Vector.append v1 v2) =
Vector.append (Vector.cons _ a _ v1) v2.