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 inner_general_mapByte : forall (ip : Blist) (IP_list : list byte) (k : Blist) (K : list byte),
bytes_bits_lists ip IP_list ->
bytes_bits_lists k K ->
bytes_bits_lists (BLxor k ip)
(map (fun p0 : byte * byte => Byte.xor (fst p0) (snd p0))
(combine K IP_list)).