(* map a n-ary string to a binary string *)
Definition bin (x: list nat) : list bool :=
flat_map (fun (a : nat) => true :: (repeat false a) ++ [true])  x.
Definition bin_map A := map (fun '(x, y) => (bin x, bin y)) A.

(* many-one reduction from the modified Post correspondence problem to the binary modified Post correspondence problem *)
Theorem reduction : MPCP ⪯ MPCPb.