proposition: Lemma Equal_filter_filter : forall f g (MValues : ValuesMapT), MValues.Equal (filter f (filter g MValues)) (filter (fun k x => f k x && g k x) MValues).
proof: Proof. intros; eapply Equal_mapsto_iff. intros; rewrite !MValuesProperties.filter_iff by eauto with typeclass_instances. intuition; destruct (f k e); destruct (g k e); 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