Macaulay2 » Documentation
Packages » Macaulay2Doc :: Set
next | previous | forward | backward | up | index | toc

Set -- the class of all sets

Description

Elements of sets may be any immutable object, such as integers, ring elements and lists of such. Ideals may also be elements of sets.
i1 : A = set {1,2};
i2 : R = QQ[a..d];
i3 : B = set{a^2-b*c,b*d}

           2
o3 = set {a  - b*c, b*d}

o3 : Set
Set operations, such as membership, union, intersection, difference, Cartesian product, Cartesian power, and subset are available. For example,
i4 : toList B

       2
o4 = {a  - b*c, b*d}

o4 : List
i5 : member(1,A)

o5 = true
i6 : member(-b*c+a^2,B)

o6 = true
i7 : A ** A

o7 = set {(1, 1), (1, 2), (2, 1), (2, 2)}

o7 : Set
i8 : A^**2

o8 = set {(1, 1), (1, 2), (2, 1), (2, 2)}

o8 : Set
i9 : set{1,3,2} - set{1}

o9 = set {2, 3}

o9 : Set
i10 : set{4,5} + set{5,6}

o10 = set {4, 5, 6}

o10 : Set
i11 : set{4,5} * set{5,6}

o11 = set {5}

o11 : Set
i12 : set{1,3,2} === set{1,2,3}

o12 = true

Ideals in Macaulay2 come equipped with a specific sequence of generators, so the following two ideals are not considered strictly equal, and thus the set containing them will appear to have two elements.
i13 : I = ideal(a,b); J = ideal(b,a);

o13 : Ideal of R

o14 : Ideal of R
i15 : I == J

o15 = true
i16 : I === J

o16 = false
i17 : C = set(ideal(a,b),ideal(b,a))

o17 = set {ideal (a, b), ideal (b, a)}

o17 : Set
However, if you trim the ideals, then the generating sets will be the same, and so the set containing them will have one element.
i18 : C1 = set(trim ideal(a,b),trim ideal(b,a))

o18 = set {ideal (b, a)}

o18 : Set

A set is implemented as a HashTable, whose keys are the elements of the set, and whose values are all 1. In particular, this means that two objects are considered the same exactly when they are strictly equal, according to ===.

Functions and methods returning a set :

Methods that use a set :

For the programmer

The object Set is a type, with ancestor classes Tally < VirtualTally < HashTable < Thing.