# Singular          #### D.4.29.1 toric_ideal

Procedure from library `toric.lib` (see toric_lib).

Usage:
toric_ideal(A,alg); A intmat, alg string
toric_ideal(A,alg,prsv); A intmat, alg string, prsv intvec

Return:
ideal: standard basis of the toric ideal of A

Note:
These procedures return the standard basis of the toric ideal of A with respect to the term ordering in the current basering. Not all term orderings are supported: The usual global term orderings may be used, but no block orderings combining them.
One may call the procedure with several different algorithms:
- the algorithm of Conti/Traverso using elimination (ect),
- the algorithm of Pottier (pt),
- an algorithm of Bigatti/La Scala/Robbiano (blr),
- the algorithm of Hosten/Sturmfels (hs),
- the algorithm of DiBiase/Urbanke (du).
The argument `alg' should be the abbreviation for an algorithm as above: ect, pt, blr, hs or du.

If `alg' is chosen to be `blr' or `hs', the algorithm needs a vector with positive coefficients in the row space of A.
If no row of A contains only positive entries, one has to use the second version of toric_ideal which takes such a vector as its third argument.
For the mathematical background, see

Example:
 ```LIB "toric.lib"; ring r=0,(x,y,z),dp; // call with two arguments intmat A=1,1,0,0,1,1; A; ==> 1,1,0, ==> 0,1,1 ideal I=toric_ideal(A,"du"); I; ==> I=xz-y I=toric_ideal(A,"blr"); ==> ? The chosen algorithm needs a positive vector in the row space of the\ matrix. ==> ? leaving toric.lib::toric_ideal_1 ==> ? leaving toric.lib::toric_ideal I; ==> I=xz-y // call with three arguments intvec prsv=1,2,1; I=toric_ideal(A,"blr",prsv); I; ==> I=xz-y ``` 