Definition concat {A : Type} (l : list (list A)) : list A :=
flat_map id l.
induction l; simpl; intros. constructor.
econstructor. 2: reflexivity.
apply Forall_inv in F; trivial.
apply IHl. apply Forall_tl in F; trivial.
Qed.
(* Replacing splitVector *)
Definition splitList {A : Type} (n : nat) (l : list A) : (list A * list A) :=
(firstn n l, skipn n l).
(* Replacing BVxor *)
Definition BLxor (xs : Blist) (ys : Blist) :=
map (fun p => xorb (fst p) (snd p)) (combine xs ys).

Theorem xor_eq : forall (n : nat) (v1 v2 : Bvector.Bvector n),
BLxor (Vector.to_list v1) (Vector.to_list v2) =
Vector.to_list (Bvector.BVxor n v1 v2).