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 |
The object toricCircuits is a method function.