From CoCoAWiki
Jump to: navigation, search


 <short_description>Computes a finite SAGBI-basis of a subalgebra if existing.</short_description>

<syntax> SB.Sagbi(G:LIST of POLY):LIST of POLY </syntax>


This function computes a finite SAGBI-basis of a subalgebra S generated by the polynomials of the list G, if a finite SAGBI-basis of S is existing. Then a list of polynomials is returned which form a SAGBI-basis of S. Otherwise the computation will be interrupted after a reasonable time, i.e. it seems that there is no finite SAGBI-basis, and NULL will be returned.


 <item>@param G A list of polynomials which generates a subalgebra.</item>
 <item>@return Either a list of polynomials which form a finite SAGBI-basis of the subalgebra generated by G or NULL, if no finite SAGBI-basis is existing.</item>


<example> Use R::=QQ[x,y];

G:=[x-y,x+y]; SB.IsSagbi(G); SB.Sagbi(G);

-- output:


-- The result is correct, because a SAGBI-basis of G is the following: [

 x - y,
 x + y,

-- Done.

</example> <example> Use R::=QQ[x[1..6]];

Generators:=[-x[4] - x[6], -x[1], x[2]^2 + x[3]^2,

   -4x[4]^2 - 5/2x[5]^2 + 2x[4]x[6] - 4x[6]^2, 
   -2x[2]x[3]x[4] + x[2]^2x[5] - x[3]^2x[5] + 2x[2]x[3]x[6], 
   -x[2]^2x[4] + x[3]^2x[4] - 2x[2]x[3]x[5] + x[2]^2x[6] - x[3]^2x[6]];


-- Computation of a SAGBI-basis Basis:=SB.Sagbi(Generators); SB.IsSagbi(Basis);

-- output:


-- Of course the test passes now because the computed SAGBI-basis is -- indeed a SAGBI-basis. TRUE

-- Done.

</example> <example> Use R::=QQ[x,y];

G:=[x+y, xy, xy^2]; SB.Sagbi(G);

-- output:

--- Computation was interrupted --- NULL

-- Done.



<see>SB.IsSagbi</see> <see>SB.IsSagbiOf</see>