High performance set theory.
This library is a collection of functional utilities from set theory, each of which operate on an arbitrary number of input sets.
Each function accepts variable arguments and operates with the principals of immutability: none of the input sets are modified in the process of calculation.
The difference of sets contains all the elements of the first set, not contained in other sets.
import { difference } from 'set-utilities';
const differenceAB = difference(setA, setB);
const differenceABC = difference(setA, setB, setC);
The intersection of sets contains all the elements each contained in every set.
import { intersection } from 'set-utilities';
const intersectionAB = intersection(setA, setB);
const intersectionABC = intersection(setA, setB, setC);
The union of sets contains all the elements each contained in any set.
import { union } from 'set-utilities';
const unionAB = union(setA, setB);
const unionABC = union(setA, setB, setC);
The symmetric difference of sets contains only the unique elements of each set.
import { xor } from 'set-utilities';
const xorAB = xor(setA, setB);
const xorABC = xor(setA, setB, setC);
Sets are equivalent if they have the same cardinality, and there is a bijection between the elements contained in each set.
import { equivalence } from 'set-utilities';
const isEquivalentAB = equivalence(setA, setB);
const isEquivalentABC = equivalence(setA, setB, setC);
Sets are disjoint if they have no elements in common.
import { disjoint } from 'set-utilities';
const isDisjointAB = disjoint(setA, setB);
const isDisjointABC = disjoint(setA, setB, setC);
A family of sets are pairwise disjoint if none of the sets share any elements in common.
import { pairwiseDisjoint } from 'set-utilities';
const isPairwiseDisjointAB = pairwiseDisjoint(setA, setB);
const isPairwiseDisjointABC = pairwiseDisjoint(setA, setB, setC);
A set is a subset of another if all of its elements are contained in the other set.
import { subset } from 'set-utilities';
const isSubsetAB = subset(setA, setB);
const isSubsetABC = subset(setA, setB, setC);
A set is a proper subset of another if all of its elements are contained in the other set, and it has a lower cardinality than the other set.
import { properSubset } from 'set-utilities';
const isProperSubsetAB = properSubset(setA, setB);
const isProperSubsetABC = properSubset(setA, setB, setC);
A set is a superset of another if it contains all the elements contained in the other set.
import { superset } from 'set-utilities';
const isSupersetAB = superset(setA, setB);
const isSupersetABC = superset(setA, setB, setC);
A set is a proper superset of another if it contains all the elements contained in the other set, and it has a greater cardinality than the other set.
import { properSuperset } from 'set-utilities';
const isProperSupersetAB = properSuperset(setA, setB);
const isProperSupersetABC = properSuperset(setA, setB, setC);
An immutable sorting operation for sets.
import { sort } from 'set-utilities';
const sortedA = sort(setA);
const sortedB = sort(setB, compareFunction);