# toricCircuits -- calculates the circuits of the toric ideal; invokes "circuits" from 4ti2

## Synopsis

• Usage:
toricCircuits(A)
• Inputs:
• A, , whose columns parametrize the toric variety. The toric ideal $I_A$ is the kernel of the map defined by A
• Outputs:
• B, , whose rows form the circuits of A

## Description

The circuits are contained in the Graver basis of $I_A$. In fact, they are precisely the primitive binomials in the ideal with minimal support.

 i1 : A = matrix "1,1,1,1; 1,2,3,4" o1 = | 1 1 1 1 | | 1 2 3 4 | 2 4 o1 : Matrix ZZ <--- ZZ i2 : C = toricCircuits A o2 = | 0 1 -2 1 | | 1 -2 1 0 | | 1 0 -3 2 | | 2 -3 0 1 | 4 4 o2 : Matrix ZZ <--- ZZ

The ideal generated by the circuits of A in general differs from the toric ideal of A. For example:

 i3 : R = QQ[a..d] o3 = R o3 : PolynomialRing i4 : Icircuit = toBinomial(toricCircuits(A), R) -- this is the circuit ideal of A 2 2 3 2 3 2 o4 = ideal (- c + b*d, - b + a*c, - c + a*d , - b + a d) o4 : Ideal of R i5 : I = toBinomial(toricMarkov(A), R) 2 2 o5 = ideal (- c + b*d, - b + a*c, - b*c + a*d) o5 : Ideal of R i6 : I==Icircuit o6 = false

The two ideals are not the same. There is a minimal generator of I which is not a circuit:

 i7 : a*d-b*c % I -- this binomial is in I: o7 = 0 o7 : R i8 : a*d-b*c % Icircuit -- but not in Icircuit: o8 = - b*c + a*d o8 : R

## Ways to use toricCircuits :

• "toricCircuits(Matrix)"

## For the programmer

The object toricCircuits is .