Package sagbi/SB.TruncSAGBI: Difference between revisions

From ApCoCoAWiki
examples and see
added Hilbert driven info and example
 
Line 7: Line 7:
   <short_description>Computes a truncated SAGBI-basis of a standard-graded subalgebra.</short_description>
   <short_description>Computes a truncated SAGBI-basis of a standard-graded subalgebra.</short_description>
    
    
<syntax>
<syntax>SB.SAGBI(G: LIST of POLY,d: RAT): LIST of POLY</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</syntax>
</syntax>
   <description>
   <description>
This function computes a <tt>d</tt>-truncated SAGBI-basis of the subalgebra <tt>S</tt> generated by the polynomials in the list <tt>G</tt>, i.e. a set  of polynomials <tt>F</tt> such that any term appearing as the leading term of a polynomial in <tt>S</tt> of degree smaller than or equal to <tt>d</tt> is a product of terms appearing as leading term of a polynomial in <tt>F</tt>.
This function computes a <tt>d</tt>-truncated SAGBI-basis of the subalgebra <tt>S</tt> generated by the polynomials in the list <tt>G</tt>, i.e. a set  of polynomials <tt>F</tt> such that any term appearing as the leading term of a polynomial in <tt>S</tt> of degree smaller than or equal to <tt>d</tt> is a product of terms appearing as leading term of a polynomial in <tt>F</tt>. <par/>
If additionally, the Hilbert series of <tt>K[G]</tt> is given, then the SAGBI basis is computed Hilbert-driven.
<itemize>
<itemize>
   <item>@param <em>G</em> A list of homogeneous polynomials which generates a subalgebra.</item>
   <item>@param <em>G</em> A list of homogeneous polynomials which generates a subalgebra.</item>
   <item>@param <em>d</em> An integer specifying the truncation degree.</item>
   <item>@param <em>d</em> An integer specifying the truncation degree.</item>
  <item>@param <em>HS</em> (optional) The Hilbert Series of <tt>K[G]</tt>.</item>
   <item>@return A tuple <tt>[L,b]</tt> where <tt>L</tt> is a list of polynomials which form a <tt>d</tt>-truncated finite SAGBI-basis of the subalgebra generated by <tt>G</tt>. <tt>b</tt> is a boolean value which is <tt>true</tt> if <tt>L</tt> is already a complete SAGBI basis.</item>
   <item>@return A tuple <tt>[L,b]</tt> where <tt>L</tt> is a list of polynomials which form a <tt>d</tt>-truncated finite SAGBI-basis of the subalgebra generated by <tt>G</tt>. <tt>b</tt> is a boolean value which is <tt>true</tt> if <tt>L</tt> is already a complete SAGBI basis.</item>
</itemize>
</itemize>


<example>
<example>
Use QQ[x,y,z];
Use QQ[x,y,z], DegRevLex;
S := SB.TruncSAGBI([x^2 -z^2,  x*y +z^2,  y^2 -2*z^2],3);
S := SB.TruncSAGBI([x^2 -z^2,  x*y +z^2,  y^2 -2*z^2],3);
indent(S);
indent(S);
Line 29: Line 30:


<example>
<example>
Use QQ[x,y];
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
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);
indent(S);
Line 36: Line 37:
--  false
--  false
-- ]
-- ]
</example>
<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
</example>
</example>
   </description>
   </description>
   <seealso>
   <seealso>
     <see>Package sagbi/SB.SAGBI</see>
     <see>Package sagbi/SB.SAGBI</see>
Line 44: Line 59:
     <see>Package sagbi/SB.GetSAGBI</see>
     <see>Package sagbi/SB.GetSAGBI</see>
     <see>Package sagbi/SB.GetTruncSAGBI</see>
     <see>Package sagbi/SB.GetTruncSAGBI</see>
    <see>Package sagbi/SB.SubalgebraHS</see>
   </seealso>
   </seealso>
   <types>
   <types>

Latest revision as of 15:15, 5 November 2020

This article is about a function in ApCoCoA-2.0.

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

See also

Package sagbi/SB.SAGBI

Package sagbi/SB.SAGBITimeout

Package sagbi/SB.IsSAGBIOf

Package sagbi/SB.GetSAGBI

Package sagbi/SB.GetTruncSAGBI

Package sagbi/SB.SubalgebraHS