# Package sagbi/SB.TruncSAGBI

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

## SB.TruncSAGBI

Computes a truncated SAGBI-basis of a standard-graded subalgebra.

### Syntax

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

### Syntax

`SB.SAGBI(G: LIST of POLY,d: RAT, HS: PSERIES): LIST of POLY`

### Description

This function computes a d-truncated SAGBI-basis of the subalgebra S generated by the polynomials in the list G, i.e. a set of polynomials F such that any term appearing as the leading term of a polynomial in S of degree smaller than or equal to d is a product of terms appearing as leading term of a polynomial in F.

If additionally, the Hilbert series of K[G] is given, then the SAGBI basis is computed Hilbert-driven.

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

• @param d An integer specifying the truncation degree.

• @param HS (optional) The Hilbert Series of K[G].

• @return A tuple [L,b] where L is a list of polynomials which form a d-truncated finite SAGBI-basis of the subalgebra generated by G. b is a boolean value which is true if L is already a complete SAGBI basis.

#### Example

```Use QQ[x,y,z], DegRevLex;
S := SB.TruncSAGBI([x^2 -z^2,  x*y +z^2,  y^2 -2*z^2],3);
indent(S);
-- [
--   [y^2 -2*z^2,  x*y +z^2,  x^2 -z^2],
--   false
-- ]
```

#### Example

```Use QQ[x,y], Lex;
S := SB.TruncSAGBI([x +y,  x*y,  x*y^2],7); -- K[x+y,xy,xy^2] does not have a finite SAGBI basis
indent(S);
-- [
--   [x +y,  x*y,  x*y^2,  x*y^3,  x*y^4,  x*y^5,  x*y^6],
--   false
-- ]
```

#### Example

```Use QQ[x,y], DegLex;
L := [x, x*y -y^2, x*y^2];
t0 := CpuTime();
s1 := SB.TruncSAGBI(L,30);
t1 := CpuTime();
HS := SB.SubalgebraHS(L);
s2 := SB.TruncSAGBI(L,30,HS);
t2 := CpuTime();
PrintLn "Normal: ", FloatStr(t1-t0);
PrintLn "Hilbert-driven: ", FloatStr(t2-t1); -- should be faster
```