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.