úÎ$ò¯S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSafe%&*+,9:;<=DQRT 3Open-family for the ordering operation in the sort =Value-level quick sort that respects the type-level ordering AType-level quick sort for normalising the representation of sets Construct a subsetset s from a superset t *Value-level counterpart to the type-level   Note: the value-level case for equal types is not define here, but should be given per-application, e.g., custom merging behaviour may be required %Remove duplicates from a sorted list ASplitting a union a set, given the sets we want to split it into -List append (essentially set disjoint union) Union of sets S2Useful properties to be able to refer to someties &Predicate to check if in the set form ;At the type level, normalise the list form to the set form <At the value level, noramlise the list form to the set form ;TUVWX SYZ !"#$%&'()*+,-./012   /TUVWX   SYZ !"#$%&'()*+,-./012Safe%&*+,9:;<=DQRT [=Value-level quick sort that respects the type-level ordering 6ZA value-level heterogenously-typed Map (with type-level representation in terms of lists) 94Pair a symbol (representing a variable) with a type ;Membership test <Lookup elements from a map ="Delete elements from a map by key >HOpen type family for combining values in a map (that have the same key) \Apply >6 to values with matching key (removes duplicate keys) ?Union of two finite maps @A key-value pair BUnion of two finite maps ,]^_`34ab[c5de6789:;<=>\?@ABfCDEFGHIJKLMNOPQR3456789:;<=>?@AB@A?5B9:678>34<;="]^_`34ab[c5de6789:;<=>\?@ABfCDEFGHIJKLMNOPQRA4g      !"#$%&'()*+,-./01234567889:;<=> )*+,?@A$%BCDEFGHIJKLMNHIJKMNO*type-level-sets-0.6-BBOmb7cizPuC6AAJ8sYzbl Data.Type.Set Data.Type.MapCmpSortable quicksortDeleteFilterFlagFMinFMaxSortSubsetsubsetNubablenubNubSplitsplit:++ UnionableUnionIsSetAsSetSetEmptyExtProxyasSetunionappend $fConderFalse $fConderTrue$fFilterVFMaxp:$fFilterVFMinp: $fFilterVfp[] $fSortable: $fSortable[] $fSubset:: $fSubset[]: $fSubset[][] $fNubable: $fNubable:0 $fNubable:1 $fNubable[] $fSplits:: $fSplit:t: $fSplit::: $fSplit[][][] $fShow'Set $fShow'Set0 $fShowSet $fShowSet0 CombinablecombineMapVarMemberLookup:\CombineMapping:->$fFilterVFMaxkv:$fFilterVFMinkv:$fFilterVfkv[] $fShow'Map $fShow'Map0 $fShowMap $fShowMap0 $fShowVar SetPropertiesCondercondFilterVfilterVDeleteFromListShow'show'