induction 1; intuition; simpl in *.
inversion H1; clear H1; subst.
inversion H2; clear H2; subst.
econstructor.
inversion H2; clear H2; subst.
inversion H3; clear H3; subst.
assert (b = b0).
eapply H0; eauto.
subst.
eapply perm_skip.
eauto.
inversion H1; clear H1; subst.
inversion H5; clear H5; subst.
inversion H2; clear H2; subst.
inversion H5; clear H5; subst.
assert (b0 = b1); eauto; subst.
assert (b = b2); eauto; subst.
eapply perm_trans.
eapply perm_swap.
eapply perm_skip.
eapply perm_skip.
eauto.
assert (lsb0 = lsb1).
eapply rel_map_func; eauto.
subst.
eapply Permutation_refl.
edestruct rel_map_left_total; eauto.
eapply perm_trans.
eapply IHPermutation1; eauto.
eapply IHPermutation2; eauto.
Qed.

(* Specifications: *)
Lemma rel_map_impl : forall (A B : Type)(rel1 rel2 : A -> B -> Prop) lsa lsb,
rel_map rel1 lsa lsb ->
(forall a b, In a lsa -> rel1 a b -> rel2 a b) ->
rel_map rel2 lsa lsb.