proposition: Lemma FiniteSetOfListOfFiniteSetAndListOfList ls : FiniteSetOfList (snd (FiniteSetAndListOfList ls)) = FiniteSetOfList ls.
proof: Proof. induction ls; simpl; trivial. rewrite (pull_if FiniteSetOfList); simpl. rewrite IHls. rewrite !NoListJustFiniteSetOfList. match goal with | [ |- context[if ?E then _ else _] ] => destruct E end; reflexivity. Qed.
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