# Set SΒΆ

sets.spad line 1 [edit on github]

S: SetCategory

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 PartialOrder

- >: (%, %) -> Boolean
from PartialOrder

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

- cardinality: % -> NonNegativeInteger
from FiniteSetAggregate S

- coerce: % -> OutputForm
from CoercibleTo OutputForm

- complement: % -> % if S has Finite
from FiniteSetAggregate S

- construct: List S -> %
from Collection S

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

- 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

- 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

- 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

- 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

Comparable if S has Comparable

ConvertibleTo InputForm if S has ConvertibleTo InputForm

Evalable S if S has Evalable S

InnerEvalable(S, S) if S has Evalable S