- Usage:
`toricMarkov(A) or toricMarkov(A, InputType => "lattice") or toricMarkov(A,R)`

- Inputs:
`A`, a matrix, whose columns parametrize the toric variety; the toric ideal is the kernel of the map defined by`A`. Otherwise, if InputType is set to "lattice", the rows of`A`are a lattice basis and the toric ideal is the saturation of the lattice basis ideal.`InputType =>``s`, default value null, which is the string "lattice" if rows of`A`specify a lattice basis`R`, a ring, polynomial ring in which the toric ideal*I*should live_{A}

- Outputs:
`B`, a matrix, whose rows form a Markov Basis of the lattice*{z integral : A z = 0}*or the lattice spanned by the rows of`A`if the option`InputType => "lattice"`is used

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) 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 *I _{A}*. 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") 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) 2 2 o9 = ideal (- c + b*d, - b + a*c, - b*c + a*d) o9 : Ideal of R |

- toricMarkov(Matrix)
- toricMarkov(Matrix,Ring)