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