Definition of_list_length (A : Set)(m : nat)(ls : list A)(pf : length ls = m) : Vector.t A m :=
  match pf with
    | eq_refl => Vector.of_list ls
  end.Definition of_sig_list (A : Set)(m : nat)(l : {ls : list A | length ls = m}) : Vector.t A m :=
  match l with
    | exist _ ls pf => (of_list_length ls pf)
  end.

Theorem shiftOut_S_None : forall (n : nat)(s s1 : Blist)(v1 : Bvector 1), shiftOut s 1 = Some (v1, s1) -> shiftOut s1 n = None -> shiftOut s (S n) = None.