proposition: Lemma Values_fold_eq : forall {TValues} (m: t TValues), (Values m) = (rev (fold (fun key val acc => cons val acc) m [])).
proof: Proof. intros. rewrite fold_1. rewrite fold_left_map. unfold Values. rewrite map_rev. rewrite rev_involutive; reflexivity. Qed.
imports: Coq.FSets.FMapInterface Coq.FSets.FMapFacts Coq.Program.Program Coq.Structures.OrderedTypeEx Fiat.Common Fiat.Common.SetEq Fiat.Common.SetEqProperties Fiat.Common.List.ListFacts Fiat.Common.List.ListMorphisms Fiat.Common.LogicFacts Fiat.Common.SetoidClassInstances