Returns the internal representation of the ground set.
Important: read the following if you encounter warnings/errors when specifying subsets of a matroid (e.g. restriction/deletion/contraction, ranks of subset, etc.)
For a matroid M, there are 2 main differences between M.groundSet and the elements of M (given by M_*). First is data types: M.groundSet is a Set, and M_* is a List. Second, M.groundSet always consists of integers from 0 to n-1, where n is the number of elements of M; on the other hand, the elements of M themselves can be arbitrary (e.g. symbols, matrices, edges in a graph, etc.).
Thus, one can think of M.groundSet as the set of indices of the elements in the list M_*: the first element of M has index 0, corresponding to the element 0 in M.groundSet; the second element of M has index 1, etc.
The key point is that all sets associated to the structure of a matroid - bases, circuits, flats, etc. - are subsets of M.groundSet (not M_*). In particular, they are also of class Set (although a collection of them is usually a List), and are also indexed from 0 to n-1. (An exception here is loops and coloops, which are given as a list of indices, rather than single-element sets).
A recommended way to circumvent this distinction between indices and elements is to use $\{0, ..., n-1\}$ as the actual elements of M, in which case an element is equal to its index in M.groundSet. Most methods in this package will accept either a list of elements or a set of indices, and if the elements of M are $\{0, ..., n-1\}$, then functionally there will be no difference between inputting lists or sets.
In summary: lists are used for elements in M, and given as sublists of M_*, while sets are used for indices, and given as subsets of M.groundSet.
|
|
|
|
|
|
|
|
|
|
Note in particular the types of the various outputs above.
The following illustrates how to perform operations with a specified subset of M.groundSet. In the final example, a list of indices is given, which goes against the conventions above, but the elements of the list are treated (correctly) as indices, and if debugLevel is greater than 0, then a warning is printed.
|
|
|
|
|
|
The object groundSet is a method function.
The source of this document is in Matroids/doc-Matroids.m2:503:0.