A slack matrix depends on the given representation. Its rows are indexed by vertices/ground set elements and its columns are indexed by facets/hyperplanes. The (i, j)-entry is the j-th inequality evaluated on element i.
i1 : V = {{0, 0}, {0, 1}, {1, 1}, {1, 0}}; |
i2 : SP = slackMatrix V Order of vertices is {{0, 0}, {1, 0}, {0, 1}, {1, 1}} o2 = | 0 1 0 1 | | 1 0 0 1 | | 0 1 1 0 | | 1 0 1 0 | 4 4 o2 : Matrix QQ <--- QQ |
i3 : SM = slackMatrix(V, Object => "matroid") o3 = | -1 -1 0 -1 0 0 | | -1 0 1 0 1 0 | | 0 1 1 0 0 -1 | | 0 0 0 -1 -1 -1 | 4 6 o3 : Matrix ZZ <--- ZZ |
i4 : C = posHull(matrix{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}); |
i5 : S = slackMatrix C Order of rays is {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} o5 = | 1 0 0 | | 0 1 0 | | 0 0 1 | 3 3 o5 : Matrix ZZ <--- ZZ |
When giving a Matroid as input, the ground set must be a set of vectors giving a representation of the matroid.
The object slackMatrix is a method function with options.