Suppose we would like to comput the toric ideal defining the variety parametrized by the following matrix:
i1 : A = matrix"1,1,1,1;0,1,2,3"
o1 = | 1 1 1 1 |
| 0 1 2 3 |
2 4
o1 : Matrix ZZ <--- ZZ
|
Since there are 4 columns, the ideal will live in the polynomial ring with 4 variables.
i2 : R = QQ[a..d]
o2 = R
o2 : PolynomialRing
|
i3 : M = toricMarkov(A)
using temporary file name /tmp/M2-29229-0/0
o3 = | 0 1 -2 1 |
| 1 -2 1 0 |
| 1 -1 -1 1 |
3 4
o3 : Matrix ZZ <--- ZZ
|
Note that rows of M are the exponents of minimal generators of IA. To get the ideal, we can do the following:
i4 : I = toBinomial(M,R)
2 2
o4 = ideal (- c + b*d, - b + a*c, - b*c + a*d)
o4 : Ideal of R
|
Alternately, we might wish to give a lattice basis ideal instead of the matrix A. The lattice basis will be specified by a matrix, as follows:
i5 : B = syz A
o5 = | -1 2 |
| 2 -3 |
| -1 0 |
| 0 1 |
4 2
o5 : Matrix ZZ <--- ZZ
|
i6 : N = toricMarkov(transpose B, InputType => "lattice")
using temporary file name /tmp/M2-29229-0/1
o6 = | 0 1 -2 1 |
| 1 -2 1 0 |
| 1 -1 -1 1 |
3 4
o6 : Matrix ZZ <--- ZZ
|
i7 : J = toBinomial(N,R) -- toricMarkov(transpose B, R, InputType => "lattice")
2 2
o7 = ideal (- c + b*d, - b + a*c, - b*c + a*d)
o7 : Ideal of R
|
We can see that the two ideals are equal:
Also, notice that instead of the sequence of commands above, we could have used the following:
i9 : toricMarkov(A,R)
using temporary file name /tmp/M2-29229-0/2
2 2
o9 = ideal (- c + b*d, - b + a*c, - b*c + a*d)
o9 : Ideal of R
|