Package sagbi/SB.SAGBITimeout

From ApCoCoAWiki
< Package sagbi
Revision as of 10:02, 27 September 2020 by Andraschko (talk | contribs) (fixed example)

SB.SAGBITimeout

Same as SAGBI, but stops after a given time and throws an error if the computation isn't finished yet.

Syntax

SB.SAGBI(G:LIST of POLY,t:RAT):LIST of POLY

Description

This function computes a SAGBI basis and throws an error if the computation isn't finished after t seconds. If the computation terminates within t seconds, a reduced SAGBI basis of the subalgebra generated by the set G is returned.

  • @param G A list of polynomials which generates a subalgebra.

  • @param t A rational number specifying the time limit.

  • @return A list of polynomials which form a finite SAGBI-basis of the subalgebra generated by G.

Example

Use QQ[x[1..3]];
S := SB.SAGBITimeout([x[1]^2-x[3]^2,x[1]*x[2]+x[3]^2,x[2]^2-2*x[3]^2],10);
indent(S);
-----------------------------------------------------------------------------
[
  x[2]^2 -2*x[3]^2,
  x[1]*x[2] +x[3]^2,
  x[1]^2 -x[3]^2,
  x[1]^2*x[3]^2 +x[1]*x[2]*x[3]^2 +(1/2)*x[2]^2*x[3]^2 +(-1/2)*x[3]^4
]

Example

Use QQ[x,y];
SAGBITimeout([x+y,x*y,x*y^2],10); -- K[x+y,xy,xy^2] doesn't have a finite SAGBI basis
-----------------------------------------------------------------------------
--> ERROR: Timeout after 10.161 seconds.
--> WHERE: at line 618 (column 2) of sagbi.cpkg5
-->  error("Timeout after " + DecimalStr(t1-t0) + " seconds.")
-->  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^