proposition: Lemma inA_map' : forall (A B : Type) eqA eqB (f : A -> B) (l : list A) (x : B), Reflexive eqA -> Proper (eqA ==> eqB) f -> InA eqB x (map f l) -> exists x', InA eqA x' l /\ eqB x (f x').
proof: Proof. induction l; simpl; intros; inversion H1; subst. - eexists; split; eauto. - destruct (IHl _ H H0 H3); intuition. eexists; eauto. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsInterface Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsProperties Coq.Arith.Peano_dec Coq.Structures.OrdersEx Coq.FSets.FMapInterface Coq.FSets.FMapFacts Coq.FSets.FMapAVL Coq.ZArith.ZArith Fiat.Common Fiat.Common.String_as_OT Fiat.Common.List.ListFacts Fiat.Common.List.FlattenList Fiat.Common.SetEqProperties Fiat.Common.FMapExtensions Fiat.Common.List.PermutationFacts Fiat.QueryStructure.Specification.SearchTerms.ListInclusion