# Set S¶

A set over a domain S models the usual mathematical notion of a finite set of elements from S. Sets are unordered collections of distinct elements (that is, order and duplication does not matter). The notation set [a, b, c] can be used to create a set and the usual operations such as union and intersection are available to form new sets. If S has OrderdSet, Language{} maintains the entries in sorted order. Specifically, the parts function returns the entries as a list in ascending order and the extract! operation returns the maximum entry. Given two sets s and t where \#s = m and \#t = n, the complexity of s = t is O(min(n, m)) s < t is O(max(n, m)) union(s, t), intersect(s, t), minus(s, t), symmetricDifference(s, t) is O(max(n, m)) member?(x, t) is O(n log n) insert!(x, t) and remove!(x, t) is O(n)

#: % -> NonNegativeInteger

from Aggregate

<=: (%, %) -> Boolean

from PartialOrder

<: (%, %) -> Boolean

from PartialOrder

=: (%, %) -> Boolean

from BasicType

>=: (%, %) -> Boolean

from PartialOrder

>: (%, %) -> Boolean

from PartialOrder

~=: (%, %) -> Boolean

from BasicType

any?: (S -> Boolean, %) -> Boolean

from HomogeneousAggregate S

cardinality: % -> NonNegativeInteger

from FiniteSetAggregate S

coerce: % -> OutputForm
complement: % -> % if S has Finite

from FiniteSetAggregate S

construct: List S -> %

from Collection S

convert: % -> InputForm if S has ConvertibleTo InputForm
copy: % -> %

from Aggregate

count: (S -> Boolean, %) -> NonNegativeInteger

from HomogeneousAggregate S

count: (S, %) -> NonNegativeInteger

from HomogeneousAggregate S

dictionary: () -> %

from DictionaryOperations S

dictionary: List S -> %

from DictionaryOperations S

difference: (%, %) -> %

from SetAggregate S

difference: (%, S) -> %

from SetAggregate S

empty?: % -> Boolean

from Aggregate

empty: () -> %

from Aggregate

enumerate: () -> List % if S has Finite

from Finite

eq?: (%, %) -> Boolean

from Aggregate

eval: (%, Equation S) -> % if S has Evalable S

from Evalable S

eval: (%, List Equation S) -> % if S has Evalable S

from Evalable S

eval: (%, List S, List S) -> % if S has Evalable S

from InnerEvalable(S, S)

eval: (%, S, S) -> % if S has Evalable S

from InnerEvalable(S, S)

every?: (S -> Boolean, %) -> Boolean

from HomogeneousAggregate S

extract!: % -> S

from BagAggregate S

find: (S -> Boolean, %) -> Union(S, failed)

from Collection S

hash: % -> SingleInteger

from SetCategory

hashUpdate!: (HashState, %) -> HashState

from SetCategory

index: PositiveInteger -> % if S has Finite

from Finite

insert!: (S, %) -> %

from BagAggregate S

inspect: % -> S

from BagAggregate S

intersect: (%, %) -> %

from SetAggregate S

latex: % -> String

from SetCategory

less?: (%, NonNegativeInteger) -> Boolean

from Aggregate

lookup: % -> PositiveInteger if S has Finite

from Finite

map!: (S -> S, %) -> %

from HomogeneousAggregate S

map: (S -> S, %) -> %

from HomogeneousAggregate S

max: % -> S if S has OrderedSet

from HomogeneousAggregate S

max: ((S, S) -> Boolean, %) -> S

from HomogeneousAggregate S

member?: (S, %) -> Boolean

from HomogeneousAggregate S

members: % -> List S

from HomogeneousAggregate S

min: % -> S if S has OrderedSet

from HomogeneousAggregate S

more?: (%, NonNegativeInteger) -> Boolean

from Aggregate

parts: % -> List S

from HomogeneousAggregate S

random: () -> % if S has Finite

from Finite

reduce: ((S, S) -> S, %) -> S

from Collection S

reduce: ((S, S) -> S, %, S) -> S

from Collection S

reduce: ((S, S) -> S, %, S, S) -> S

from Collection S

remove!: (S -> Boolean, %) -> %

from DictionaryOperations S

remove!: (S, %) -> %

from DictionaryOperations S

remove: (S -> Boolean, %) -> %

from Collection S

remove: (S, %) -> %

from Collection S

removeDuplicates: % -> %

from Collection S

sample: %

from Aggregate

select!: (S -> Boolean, %) -> %

from DictionaryOperations S

select: (S -> Boolean, %) -> %

from Collection S

set: () -> %

from SetAggregate S

set: List S -> %

from SetAggregate S

size?: (%, NonNegativeInteger) -> Boolean

from Aggregate

size: () -> NonNegativeInteger if S has Finite

from Finite

smaller?: (%, %) -> Boolean if S has Comparable

from Comparable

subset?: (%, %) -> Boolean

from SetAggregate S

symmetricDifference: (%, %) -> %

from SetAggregate S

union: (%, %) -> %

from SetAggregate S

union: (%, S) -> %

from SetAggregate S

union: (S, %) -> %

from SetAggregate S

universe: () -> % if S has Finite

from FiniteSetAggregate S

Aggregate

BasicType

Comparable if S has Comparable

Evalable S if S has Evalable S

Finite if S has Finite

finiteAggregate

InnerEvalable(S, S) if S has Evalable S

PartialOrder

SetCategory

shallowlyMutable