proposition: Lemma filter_by_equiv_meta : forall {A B : Type} (f g : A -> B -> bool), (forall (a: A), ExtensionalEq (f a) (g a)) -> (forall (a: A) (seq : list B), filter (f a) seq = filter (g a) seq).
proof: Proof. intros * equiv *; rewrite (filter_by_equiv _ _ (equiv _)); reflexivity. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Fiat.Common Fiat.Common.List.Operations Fiat.Common.Equality Fiat.Common.List.FlattenList Fiat.Common.LogicFacts