Primitive methods (know about representation)
The representation is a table whose tags are the elements, and
whose values are true.
member: Say whether an element is in a set
s: set
e: element
returns
f: true if e is in set, false otherwise
insert: Insert an element to a set
s: set
e: element
new: Make a list into a set
l: list
returns
s: set
elements: Iterator for sets
TODO: Make the iterator return only the key
High level methods (representation unknown)
difference: Find the difference of two sets
s, t: sets
returns
r: s with elements of t removed
difference: Find the symmetric difference of two sets
s, t: sets
returns
r: elements of s and t that are in s or t but not both
intersection: Find the intersection of two sets
s, t: sets
returns
r: set intersection of s and t
union: Find the union of two sets
s, t: sets
returns
r: set union of s and t
subset: Find whether one set is a subset of another
s, t: sets
returns
r: true if s is a subset of t, false otherwise
propersubset: Find whether one set is a proper subset of
another
s, t: sets
returns
r: true if s is a proper subset of t, false otherwise
equal: Find whether two sets are equal
s, t: sets
returns
r: true if sets are equal, false otherwise
set - table = set difference
set * table = intersection
set / table = symmetric difference
set <= table = subset
set < table = proper subset