A library written in TypeScript implementing the mathematical branch known as set theory - a subset of discrete mathematics.
While there is a current proposal for adding new methods to the Set class1, it is not formally recommended yet. This library provides functions to coincide with the Set
class2, as standardized by the ECMAScript Language Specification. 3.
npm install @neoncitylights/set-theory
const a = new Set<number>([1, 2, 3, 4]);
const b = new Set<number>([4, 5, 6, 7]);
getIntersection(a, b); // new Set<number>([4])
getUnion(a, b); // new Set<number>([1, 2, 3, 4, 5, 6, 7])
const c = new Set<string>(["hello", "world"]);
const d = new Set<string>(["hello"]);
isSupersetOf(c, d); // true
isSubsetOf(d, c); // true
Auto-generated API documentation is available.
- # predicates.areSetsDisjoint<TElement>(a, b): boolean • source
- # predicates.areSetsEquivalent<TElement>(a, b): boolean • source
- # predicates.areSetsEqual<TElement>(a, b): boolean • source
- # predicates.isSubsetOf<TElement>(a, b): boolean • source
- # predicates.isSupersetOf<TElement>(a, b): boolean • source
- # predicates.isProperSubsetOf<TElement>(a, b): boolean • source
- # predicates.isProperSupersetOf<TElement>(a, b): boolean • source
- # operations.getUnion<TElement>(a, b): Set<TElement> • source
- # operations.getIntersection<TElement>(a, b): Set<TElement> • source
- # operations.getDifference<TElement>(a, b): Set<TElement> • source
- # operations.getSymmetricDifference<TElement>(a, b): Set<TElement> • source
- # similarity.getJaccardSimilarityCoefficient<TElement>(a, b): number • source
- # similarity.getLogDice<TElement>(a, b): number • source
- # similarity.getOverlapCoefficient<TElement>(a, b): number • source
- # similarity.getSorensenDiceCoefficient<TElement>(a, b): number • source
This library provides generic types for describing different types of set functions via:
- SetFunction<TElement>
- SetOperation<TElement>
- SetPredicate<TElement>
- SetSimilarity<TElement>
A set is an unordered collection of unique elements. The type of elements can be anything, such as words, numbers, and even other sets. In math, the name of sets are usually denoted with a capital letter, like
Sets are written with curly brackets at the start and end, and each element is separated by a comma.
For expressing larger, finite sets, we can use an ellipsis in-between. They can also be at the beginning or end to indicate that the set is infinite.
Sets are written by defining a variable, and declaring a predicate (a statement that must be true or false) for that variable.
For example, to express
To express
Compared to roster notation, set-builder notation is a way of more rigorously4 defining a set. However, it is important to note that depending on the audience, it can be less accessible to readers.
Cardinality is the formal term that represents the number of elements within a set. It is also known as the "size" of the element. Given a set named
Disjoint sets are sets that have no elements in common. Given two sets named
Equivalent sets are two sets that have the same cardinality.
Equal sets are sets that have the same cardinality and the same elements.
A subset is a set where all elements of set
A superset is a set where all elements of
A proper subset is when set
A proper superset is when set
The intersection is the set of elements that are the members of two sets.
The union is the set of all elements in a collection of sets.
The difference (also known as the complement) is the set of all elements that are in set A that are not in set B.
The symmetric difference is the set that belongs to one but not both of two sets.
Character | Code point | Name |
---|---|---|
⊆ |
U+2286 |
Subset |
⊇ |
U+2287 |
Superset |
⊂ |
U+2282 |
Proper subset |
⊃ |
U+2283 |
Proper superset |
∅ |
U+03D5 |
Empty set |
∈ |
U+2208 |
Element of |
∉ |
U+2209 |
Not element of |
∩ |
U+2229 |
Intersection |
∪ |
U+222A |
Union |
\ |
U+005C |
Complement/difference |
△ |
U+25B3 |
Symmetric difference |
⊖ |
U+2296 |
Symmetric difference |
× |
U+00D7 |
Cartesian product |
ℕ |
U+2115 |
Set of all natural numbers |
𝕎 |
U+1D54E |
Set of all whole numbers |
ℤ |
U+2124 |
Set of all integer numbers |
ℚ |
U+211A |
Set of all rational numbers |
𝔽 |
U+1D53D |
Set of all irrational numbers |
ℝ |
U+211D |
Set of all real numbers |
ℂ |
U+2102 |
Set of all complex numbers |
This library is licensed under the MIT License.
Footnotes
-
Wadas, M., & Gunasekaran, S. (n.d.). New Set methods. New set methods. Retrieved November 1, 2021, from https://tc39.es/proposal-set-methods/. ↩
-
MDN Web Docs Contributors. (n.d.). Set - javascript: MDN. JavaScript | MDN. Retrieved November 1, 2021, from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set. ↩
-
TC39. (2021, October 30). Draft ECMA-262 / October 30, 2021. ECMAScript® 2022 Language Specification. Retrieved November 1, 2021, from https://tc39.es/ecma262/#sec-set-objects. ↩
-
Wikipedia contributors. (2021, November 1). Rigour. In Wikipedia, The Free Encyclopedia. Retrieved 17:24, November 1, 2021, from https://en.wikipedia.org/w/index.php?title=Rigour&oldid=1053055627 ↩