fact: Fixpoint PickIndex {n} (AttrRank : Vector.t (RelationAttributeCounter.t nat) n) : list ((string * Fin.t n) * nat) := match AttrRank in Vector.t _ n return list ((string * Fin.t n) * nat) with | Vector.cons attr _ AttrRank' => match OccCountSort.sort (RelationAttributeCounter.elements attr) with | nil => (map (fun a => (fst (fst a), Fin.FS (snd (fst a)), (snd a))) (PickIndex AttrRank')) | a :: a' => cons (fst a, Fin.F1, snd a) (map (fun a => (fst (fst a), Fin.FS (snd (fst a)), (snd a))) (PickIndex AttrRank')) end | Vector.nil => nil end.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.Sorting.Mergesort Coq.Structures.Orders Coq.Arith.Arith Coq.Structures.OrderedType Coq.Structures.OrderedTypeEx Coq.Strings.String Coq.FSets.FMapAVL Fiat.Common.String_as_OT Fiat.Common.Tactics.CacheStringConstant Fiat.QueryStructure.Specification.Representation.QueryStructureNotations Fiat.QueryStructure.Implementation.Operations Fiat.QueryStructure.Implementation.DataStructures.BagADT.QueryStructureImplementation Fiat.QueryStructure.Implementation.DataStructures.BagADT.IndexSearchTerms Fiat.QueryStructure.Automation.Common