proposition: Lemma Permutation_benumerate_fold_left : forall l bags, Permutation (List.map benumerate (fold_left (fun (a : list BagType) (p : key * Trie) => Trie_enumerate (snd p) ++ a) l bags)) ((List.map benumerate bags) ++ (List.map benumerate (fold_left (fun (a : list BagType) (p : key * Trie) => Trie_enumerate (snd p) ++ a) l [ ]))).
proof: Proof. intros; rewrite Permutation_app_fold_left, map_app; eauto. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsInterface Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsProperties Coq.FSets.FMapInterface Coq.FSets.FMapFacts Coq.FSets.FMapAVL Coq.ZArith.ZArith Fiat.Common Fiat.Common.List.ListFacts Fiat.Common.List.FlattenList Fiat.Common.SetEqProperties Fiat.Common.FMapExtensions Fiat.Common.List.PermutationFacts Fiat.QueryStructure.Specification.SearchTerms.ListPrefix