TrieSet

Functional set

Sets are partial maps from element type to unit type, i.e., the partial map represents the set with its domain.

Hash

``type Hash = Hash.Hash``

Set

``type Set<T> = Trie.Trie<T, ()>``

empty

``func empty<T>() : Set<T>``

Empty set.

put

``func put<T>(s : Set<T>, x : T, xh : Hash, eq : (T, T) -> Bool) : Set<T>``

Put an element into the set.

delete

``func delete<T>(s : Set<T>, x : T, xh : Hash, eq : (T, T) -> Bool) : Set<T>``

Delete an element from the set.

equal

``func equal<T>(s1 : Set<T>, s2 : Set<T>, eq : (T, T) -> Bool) : Bool``

Test if two sets are equal.

size

``func size<T>(s : Set<T>) : Nat``

The number of set elements, set’s cardinality.

mem

``func mem<T>(s : Set<T>, x : T, xh : Hash, eq : (T, T) -> Bool) : Bool``

Test if a set contains a given element.

union

``func union<T>(s1 : Set<T>, s2 : Set<T>, eq : (T, T) -> Bool) : Set<T>``

diff

``func diff<T>(s1 : Set<T>, s2 : Set<T>, eq : (T, T) -> Bool) : Set<T>``

intersect

``func intersect<T>(s1 : Set<T>, s2 : Set<T>, eq : (T, T) -> Bool) : Set<T>``

fromArray

``func fromArray<T>(arr : [T], elemHash : T -> Hash, eq : (T, T) -> Bool) : Set<T>``

toArray

``func toArray<T>(s : Set<T>) : [T]``