Definition C1 := tau1.Definition C2 := tau2.Ltac list_simpl := (repeat (progress (cbn in *; autorewrite with list in *))); cbn in *.Definition encoding A := flat_map enc (rev A).

(* Specifications: *)
Lemma enc_inj A1 A2 : encoding A1 = encoding A2 -> A1 = A2.
Lemma reduction P : PCP P <-> inter_nonempty (f P).
Lemma mapo_app X Y (f : X -> option Y) A B : mapo f (A ++ B) = mapo f A ++ mapo f B.