The circuits are contained in the Graver basis of IA. 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
using temporary file name /tmp/M2-10055-0/0
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
using temporary file name /tmp/M2-10055-0/1
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)
using temporary file name /tmp/M2-10055-0/2
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
|