fact: Fixpoint RangeTreeBag_btraverse (container : RawRangeTreeBag) (key : (option TKey) * (option TKey)) : list (TKey * BagType) := let (min_key, max_key) := key in match container with | Raw.Leaf => [] | Raw.Node l key' bag r _ => if Range_Min_le_Value min_key key' then if Range_Value_le_Max key' max_key then RangeTreeBag_btraverse_left l min_key ++ (key', bag) :: RangeTreeBag_btraverse_right r max_key else RangeTreeBag_btraverse l key else RangeTreeBag_btraverse r key end.
imports: Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsInterface Fiat.QueryStructure.Implementation.DataStructures.Bags.BagsProperties Coq.Arith.PeanoNat Coq.FSets.FMapInterface Coq.FSets.FMapFacts Coq.FSets.FMapAVL Fiat.Common Fiat.Common.List.ListFacts Fiat.Common.List.FlattenList Fiat.Common.SetEqProperties Fiat.Common.FMapExtensions Fiat.Common.List.PermutationFacts