next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
FourTiTwo :: toricMarkov

toricMarkov -- calculates a generating set of the toric ideal I_A, given A; invokes "markov" from 4ti2

Synopsis

Description

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-6287-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-6287-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:
i8 : I == J

o8 = true
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-6287-0/2

               2           2
o9 = ideal (- c  + b*d, - b  + a*c, - b*c + a*d)

o9 : Ideal of R

Ways to use toricMarkov :