Definition sim2 (F : term) f := proc F /\ forall x y, F (enc x) (enc y) ≡ (enc (f x y)).
Definition Map_pro := rho (.\ "map_pro", "f", "A", "B";
"A" !Nil (.\"a", "A"; !Append ("map_pro" "f" "A" "B") (!Map (.\"y" ; "f" "a" "y") "B"))).
Goal proc Map_pro.
Hint Unfold sim2 Map_pro : cbv.

(* Specifications: *)
Lemma Map_pro_correct f A B F : sim2 F f ->
Map_pro F (lenc A) (lenc B) ≡ lenc(map_pro f A B).