|
D.4.29.2 toric_std
Procedure from library toric.lib (see toric_lib).
- Usage:
- toric_std(I); I ideal
- Return:
- ideal: standard basis of I
- Note:
- This procedure computes the standard basis of I using a specialized
Buchberger algorithm. The generating system by which I is given has
to consist of binomials of the form x^u-x^v. There is no real check
if I is toric. If I is generated by binomials of the above form,
but not toric, toric_std computes an ideal `between' I and its
saturation with respect to all variables.
For the mathematical background, see
Toric ideals and integer programming.
Example:
| LIB "toric.lib";
ring r=0,(x,y,z),wp(3,2,1);
// call with toric ideal (of the matrix A=(1,1,1))
ideal I=x-y,x-z;
ideal J=toric_std(I);
J;
==> J[1]=y-z
==> J[2]=x-z
// call with the same ideal, but badly chosen generators:
// 1) not only binomials
I=x-y,2x-y-z;
J=toric_std(I);
==> ? Generator 2 of the input ideal is no difference of monomials.
==> ? leaving toric.lib::toric_std
// 2) binomials whose monomials are not relatively prime
I=x-y,xy-yz,y-z;
J=toric_std(I);
==> Warning: The monomials of generator 2 of the input ideal are not relative\
ly prime.
J;
==> J[1]=y-z
==> J[2]=x-z
// call with a non-toric ideal that seems to be toric
I=x-yz,xy-z;
J=toric_std(I);
J;
==> J[1]=y2-1
==> J[2]=x-yz
// comparison with real standard basis and saturation
ideal H=std(I);
H;
==> H[1]=x-yz
==> H[2]=y2z-z
LIB "elim.lib";
sat(H,xyz);
==> [1]:
==> _[1]=x-yz
==> _[2]=y2-1
==> [2]:
==> 1
| See also:
Toric ideals;
intprog_lib;
toric_ideal;
toric_lib.
|