proposition: Lemma ensemble_list_equivalence_set_eq_morphism {A : Type} {ens1 ens2 : A -> Prop} : (forall x, Ensembles.In _ ens1 x <-> Ensembles.In _ ens2 x) -> forall (seq : list A), (EnsembleListEquivalence ens1 seq <-> EnsembleListEquivalence ens2 seq).
proof: Proof. intros * equiv *; unfold EnsembleListEquivalence, In in *; setoid_rewrite equiv; reflexivity. Qed.
imports: Coq.Lists.List Coq.Sets.Ensembles Coq.Sorting.Permutation Fiat.Common Fiat.Common.List.PermutationFacts