# cycleIdeal -- constructs the cycle ideal of a realization

## Synopsis

• Usage:
C = cycleIdeal V
C = cycleIdeal M
C = cycleIdeal P
C = cycleIdeal S
• Inputs:
• V, a list, a list of points of a realization
• M, , a matroid
• P, , a polytope
• S, , a slack matrix of some realization
• Optional inputs:
• CoefficientRing => ..., default value QQ, specifies the coefficient ring of the underlying ring of the ideal
• Object => ..., default value polytope, specify combinatorial object
• Saturate => ..., default value all, specifies saturation strategy to be used
• Strategy => ..., default value Eliminate, specifies saturation strategy to be used
• Vars => ..., default value {}, specifies the variables to use to create the underlying ring of the ideal
• Outputs:
• C, an ideal, the cycle ideal with coefficients from given realization

## Description

A cycle ideal is the toric ideal generated by the cycles of the bipartite non-incidence graph on vertices/elements and facets/hyperplanes. Each cycle binomial has coefficients coming from the entries of a slack matrix of a realization of the given object. This method computes the cycle ideal of the given realization of a polytope or matroid.

 i1 : V = {{0, 0}, {1, 0}, {1, 1}, {0, 1}}; i2 : C = cycleIdeal V Order of vertices is {{0, 0}, {1, 0}, {0, 1}, {1, 1}} Graph computed from symbolic adjacency matrix: | 0 y_1 0 y_2 | | y_3 0 0 y_4 | | 0 y_5 y_6 0 | | y_7 0 y_8 0 | o2 = ideal(y y y y - y y y y ) 0 3 5 6 1 2 4 7 o2 : Ideal of QQ[y ..y ] 0 7

You can create the cycle ideal of any matrix, even if it is not the realization of some matroid or polytope.

 i3 : M = matrix{{1, 1, 0}, {0, 1, 2}, {1, 0, 3}}; 3 3 o3 : Matrix ZZ <--- ZZ i4 : C = cycleIdeal M Graph computed from symbolic adjacency matrix: | y_1 y_2 0 | | 0 y_3 y_4 | | y_5 0 y_6 | o4 = ideal(3y y y - 2y y y ) 1 3 4 0 2 5 o4 : Ideal of QQ[y ..y ] 0 5

## Caveat

Variables in the cycle ideal C will be labelled according to the labeling assigned by symbolicSlackMatrix, which is in order by rows, so to test equality of C with some precomputed ideal care needs to be taken that variable labels match.

If Object => abstractPolytope is chosen, the graphic ideal will be returned instead.

• graphicIdeal -- creates the toric ideal of the non-incidence graph of a polytope
• slackMatrix -- computes the slack matrix of a given realization

## Ways to use cycleIdeal :

• "cycleIdeal(List)"
• "cycleIdeal(Matrix)"
• "cycleIdeal(Matroid)"
• "cycleIdeal(Polyhedron)"

## For the programmer

The object cycleIdeal is .