Specialised set of `Fin`s. Isomorphic to a vector of appropriate size of booleans. This should be a replacement for `SortedSet (Fin n)` working better at least in elaborator scripts. This can be implemented as simple `Integer` setting and clearing bits, but this seems to work worse in elaborator scripts.
data FinSet : Nat -> Typeempty : FinSet nfull : FinSet ncomplement : FinSet n -> FinSet ninsert : Fin n -> FinSet n -> FinSet ninsert' : FinSet n -> Fin n -> FinSet ndelete : Fin n -> FinSet n -> FinSet ndelete' : FinSet n -> Fin n -> FinSet ncontains : Fin n -> FinSet n -> Boolcontains' : FinSet n -> Fin n -> BoolfromFoldable : Foldable f => f (Fin n) -> FinSet nfromList : List (Fin n) -> FinSet ntoList : FinSet n -> List (Fin n)traverse_ : Monad m => (Fin n -> m b) -> FinSet n -> m ()for_ : Monad m => FinSet n -> (Fin n -> m b) -> m ()foldl : (a -> Fin n -> a) -> a -> FinSet n -> afoldMap : Monoid m => (Fin n -> m) -> FinSet n -> m.asList : FinSet n -> List (Fin n)size : FinSet n -> Nat.size : FinSet n -> Nat.asVect : (fs : FinSet n) -> Vect (fs .size) (Fin n)union : FinSet n -> FinSet n -> FinSet ndifference : FinSet n -> FinSet n -> FinSet nsymDifference : FinSet n -> FinSet n -> FinSet nintersection : FinSet n -> FinSet n -> FinSet nleftMost : FinSet n -> Maybe (Fin n)rightMost : FinSet n -> Maybe (Fin n)null : FinSet n -> BoolkeySet : SortedMap (Fin n) v -> FinSet nkeySetSize : (m : SortedMap (Fin n) v) -> (keySet m) .size = length (toList m)keySet : FinMap n v -> FinSet nkeySetSize : (m : FinMap n v) -> (keySet m) .size = length (kvList m)toSortedSet : FinSet n -> SortedSet (Fin n)singleton : Fin n -> FinSet nfit : FinSet n -> FinSet mweakenToSuper : FinSet (finToNat i) -> FinSet n