(* Replacing BVxor *)
Definition BLxor (xs : Blist) (ys : Blist) :=
map (fun p => xorb (fst p) (snd p)) (combine xs ys).

(* Specifications: *)
Lemma BLxor_length: forall n l1 l2
(len1: length l1 = n) (len2: length l2 = n), length (BLxor l1 l2) = n.
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).
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)).