proposition: Lemma InRange_Proper : forall keys v v', X.eq v v' -> Range_InRange keys v = Range_InRange keys v'.
proof: Proof. intros. unfold Range_InRange, Range_Min_le_Value, Range_Value_le_Max. destruct keys as [ min max ]; destruct min as [ min | ]; destruct max as [ max | ]; auto; simpl; repeat rewrite X_le_change_left with (x := v) (x' := v') by assumption; repeat rewrite X_le_change_right with (y := v) (y' := v') by assumption; reflexivity. Qed.
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