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).

Lemma BLxor_length: forall n l1 l2
(len1: length l1 = n) (len2: length l2 = n), length (BLxor l1 l2) = n.