Proof using.
induction l1; intros; simpl in *; break_if; simpl in *; invc_NoDup.
- destruct l1'; simpl in *.
+ solve_by_inversion.
+ find_inversion. exfalso. eauto using In_filter_In with *.
- exfalso. eauto using In_filter_In with *.
- destruct l1'; simpl in *; break_and; find_inversion.
+ exfalso. eauto with *.
+ find_apply_hyp_hyp. intuition auto using f_equal2.
- eauto.
Qed.

(* Specifications: *)
Lemma map_inverses :
forall (la : list A) (lb : list B)  (f : A -> B) g,
(forall a, g (f a) = a) ->
(forall b, f (g b) = b) ->
lb = map f la ->
la = map g lb.