fact: Definition FiniteSetAndFunctionOfList {A} (f : W -> A -> A) (a : A) (ls : list W) := List.fold_right (fun w xs_acc => let xs := fst xs_acc in let acc := snd xs_acc in ((if (snd (CallMethod (projT1 FiniteSetImpl) sIn xs w) : bool) then xs else fst (CallMethod (projT1 FiniteSetImpl) sAdd xs w)), (if (snd (CallMethod (projT1 FiniteSetImpl) sIn xs w) : bool) then acc else f w acc))) (CallConstructor (projT1 FiniteSetImpl) sEmpty tt, a) ls.
imports: Coq.Strings.String Coq.Sets.Ensembles Coq.Sets.Finite_sets Coq.Lists.List Coq.Sorting.Permutation Coq.Classes.RelationPairs Fiat.ADT Fiat.ADT.ComputationalADT Fiat.ADTRefinement.Core Fiat.ADTNotation Fiat.ADTRefinement.GeneralRefinements Fiat.Computation Fiat.Common Fiat.Common.Ensembles Fiat.Common.Ensembles.Tactics Fiat.ComputationalEnsembles Fiat.FiniteSetADTs.FiniteSetADTMethodLaws Fiat.FiniteSetADTs.FiniteSetADT