# symbolicSlackMatrix -- computes the symbolic slack matrix

## Synopsis

• Usage:
S = symbolicSlackMatrix V
S = symbolicSlackMatrix X
S = symbolicSlackMatrix M
S = symbolicSlackMatrix P
S = symbolicSlackMatrix C
• Inputs:
• V, a list, a list of points treated as the vertices of polytope; or vectors of a linear matroid if matroid is given as Object; or a list of indices comprising the facets of an abstract polytope if abstractPolytope is given as Object.
• X, , a slack matrix
• M, , a matroid
• P, , a polytope
• C, , a cone
• Optional inputs:
• CoefficientRing => ..., -- specifies the coefficient ring of the underlying ring of the matrix
• Object => ..., -- specify combinatorial object
• Vars => ..., -- specifies the variables to use to create the underlying ring of the matrix
• Outputs:
• S, , the symbolic slack matrix with indexed variables in symbol x

## Description

The symbolic slack matrix records the combinatorial structure of the given object. Its (i, j)-entry is 0 if element i is in hyperplane j and it is a variable otherwise. Variables are indexed left to right by rows.

 `i1 : V = {{0, 0}, {0, 1}, {1, 1}, {1, 0}};` ```i2 : S = symbolicSlackMatrix V Order of vertices is {{0, 0}, {1, 0}, {0, 1}, {1, 1}} o2 = | 0 x_0 0 x_1 | | x_2 0 0 x_3 | | 0 x_4 x_5 0 | | x_6 0 x_7 0 | 4 4 o2 : Matrix (QQ[x , x , x , x , x , x , x , x ]) <--- (QQ[x , x , x , x , x , x , x , x ]) 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7```
 `i3 : M = matroid({0, 1, 2, 3, 4, 5}, {{1, 2, 3}, {0, 2, 4}, {0, 3, 5}, {1, 4, 5}}, EntryMode => "nonbases");` ```i4 : S = symbolicSlackMatrix M o4 = | x_0 0 x_1 x_2 0 x_3 0 | | 0 x_4 x_5 x_6 x_7 0 0 | | x_8 x_9 0 x_10 0 0 x_11 | | x_12 0 x_13 0 x_14 0 x_15 | | 0 x_16 x_17 0 0 x_18 x_19 | | 0 0 0 x_20 x_21 x_22 x_23 | 6 7 o4 : Matrix (QQ[x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ]) <--- (QQ[x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ]) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23```
 `i5 : V = {{1, 2, 3}, {4, 5, 6}, {1, 2, 4, 5}, {1, 3, 4, 6}, {2, 3, 5, 6}};` ```i6 : S = symbolicSlackMatrix(V, Object => "abstractPolytope") o6 = | 0 x_0 0 0 x_1 | | 0 x_2 0 x_3 0 | | 0 x_4 x_5 0 0 | | x_6 0 0 0 x_7 | | x_8 0 0 x_9 0 | | x_10 0 x_11 0 0 | 6 5 o6 : Matrix (QQ[x , x , x , x , x , x , x , x , x , x , x , x ]) <--- (QQ[x , x , x , x , x , x , x , x , x , x , x , x ]) 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11```