induction n1; intuition; simpl in *.
rewrite shiftOut_0 in H.
inversion H; clear H; subst.
simpl in *.
trivial.
destruct s; simpl in *.
discriminate.
case_eq (shiftOut s n1); intuition.
rewrite H1 in H.
destruct p.
inversion H; clear H; subst.
erewrite IHn1; eauto.
rewrite Vector_cons_app_assoc.
trivial.
rewrite H1 in H.
discriminate.
Qed.

(* Specifications: *)
Theorem shiftOut_plus_None_if :
forall n1 n2 s,
(shiftOut s n1 = None \/
(exists b s', shiftOut s n1 = Some (b, s') /\
shiftOut s' n2 = None)) ->
shiftOut s (n1 + n2) = None.
Theorem shiftOut_plus_None_if :
forall n1 n2 s,
(shiftOut s n1 = None \/
(exists b s', shiftOut s n1 = Some (b, s') /\
shiftOut s' n2 = None)) ->
shiftOut s (n1 + n2) = None.