Package zerodim: Difference between revisions

From ApCoCoAWiki
LongLe (talk | contribs)
LongLe (talk | contribs)
Line 28: Line 28:


== Package Description ==
== Package Description ==
The <code>zerodim</code> package provides functions for computing the introduced invariants of zero-dimensional schemes and their Hilbert functions in the graded case.
The <code>zerodim</code> package provides functions for computing the introduced invariants of zero-dimensional schemes. In the graded case the package also provides functions for computations of the Hilbert functions of these invariants.


=== List of main functions ===
=== List of main functions ===

Revision as of 20:22, 17 November 2022

This article is about a function from ApCoCoA-2. If you are looking for the ApCoCoA-1 version of it, see Category:ApCoCoA-1:Package ZeroDim.

This page describes the zerodim package. The package contains various functions for computing algebraic invariants of zero-dimensional schemes and related computations. For a complete list of functions, see Category:Package zerodim.


Algebraic Invariants

Let K be a field, let P=K[x1,,xn] be the polynomial ring over K in n indeterminates, and let I be a 0-dimensional ideal of P and R=P/I. Then I defines a 0-dimensional scheme X in the affine n-space. Consider the canonical multiplication map

μ:Re=RKRR,(f,g)fg

and its kernel J=Ker(μ). Then J/J2 is a finitely generated R-module and AnnRe(J) is an ideal of the enveloping algebra Re.

  • The ideal ϑN(R/K):=μ(AnnRe(J)) is called the Noether different of the algebra R/K.
  • The R-module ΩR/K1:=J/J2 is called the module of Kaehler differential 1-forms of the algebra R/K.
  • The K-linear map d:RΩR/K1,ff11f+J2, is called the universal derivation of the algebra R/K.
  • For m0, the exterior power ΩR/Km:=RmΩR/K1 is called the module of Kaehler differential m-forms of the algebra R/K.
  • For m0 the m-th Fitting ideal ϑX(m)(R/K) of the module of Kaehler differential 1-forms ΩR/K1 is called the Kaehler different of the algebra R/K.

More generally, for any K-algebra T/S, we can define the Noether different, module of Kaehler differential m-forms, Kaehler different of T/S analogously. In particular, if T/S is graded, then all these invariants are also graded.

Now let us embed the scheme X in the projective n-space via XD+(x0)n, where x0 is a new indeterminate. Set S:=P[x0]=K[x0,,xn] and equip S with the standard grading. The homogeneous vanishing ideal of X is the homogenization of I with respect to x0 and denoted by IX, and the homogeneous coordinate ring of X is the graded 1-dimensional ring RX=S/IX. In this case K[x0] is the Noetherian normalization of RX, and hence we can define the above invariants for the graded algebra RX/K[x0]. Moreover, we have the following further invariants.

  • The graded RX-module ωRX=HomK[x0](R,K[x0])(1) is called the canonical module of the algebra RX/K[x0].
  • The graded locolization Qh(RX) of RX at x0 is called the homogeneous ring of quotients of RX.
  • When the scheme X is reduced (more general, locally Gorenstein), there is an injection ωRXQh(RX) and the inverse of ωRX in Qh(RX) is called the Dedekind different of RX/K[x0].

Many interesting properties of the scheme X are reflexed by the algebraic structure of the above invariants.

Package Description

The zerodim package provides functions for computing the introduced invariants of zero-dimensional schemes. In the graded case the package also provides functions for computations of the Hilbert functions of these invariants.

List of main functions

Given a polynomial ring P and a list F of polynomials in P, one can compute the reduced SAGBI basis of K[F] (with respect to the term ordering given by P) using the function SB.SAGBI - as long as a finite one exists.

SB.SAGBI(F);

Note that this function probably runs into an infinite loop if no finite SAGBI basis exists. This can be avoided using the function SB.SAGBITimeout. Given a positive integer s, one can type in

SB.SAGBITimeout(F,s);

which does the same as SB.SAGBI(F), but throws an error if the computation is not finished within s seconds. Given a polynomial f and a list of polynomials G, the function SB.ReductionStep can be used to compute a polynomial g with fGsg.

SB.ReductionStep(f,G);


The Subalgebra Data Type

The package also introduces a new Data type, i.e. a record tagged with "$apcocoa/sagbi.Subalgebra". Given a polynomial ring P and a list of polynomials G from P, one can create the subalgebra K[G] using the function SB.Subalgebra.

Use P ::= QQ[x,y,z];
G := [x^2+y*z,z];
S := SB.Subalgebra(P,G);

For details about the structure of this data type, see the function page. While nearly all functionalities of the SAGBI package can be used without touching this data type, it has many advantages to do so because it stores informations of previous computations, see the example below. This is also the reason why many of the getter functions need the subalgebra to be called by reference. The following getter function can be used to get informations about the subalgebra:

SB.GetCoeffRing(S); -- returns the coefficient ring
SB.GetGens(S); -- returns the set G
SB.GetID(S); -- returns the unique ID of S
SB.GetLTSA(ref S); -- returns the subalgebra K[LT(f) | f in S]
SB.GetRing(S); -- returns P
SB.GetSAGBI(ref S); -- returns the reduced SAGBI basis of S (if a finite one exists)


Example for the Subalgebra Data Type

So what advantages does the Subalgebra data type have? Consider the following example.

Use P ::= QQ[x,y,z];
G := [x^2 -z^2,  x*y +z^2,  y^2 -2*z^2];
L := SB.SAGBI(G);
f := x^10*y^2 +x^6*y^6 -2*x^10*z^2 -5*x^8*y^2*z^2 +6*x^5*y^5*z^2 +10*x^8*z^4 +10*x^6*y^2*z^4 +15*x^4*y^4*z^4 -20*x^6*z^6 -10*x^4*y^2*z^6 +20*x^3*y^3*z^6 +20*x^4*z^8 +20*x^2*y^2*z^8 -10*x^2*z^10 +6*x*y*z^10 -y^2*z^10 +3*z^12;
b := SB.IsInSubalgebra(f,G);
h := SB.SubalgebraHS(G);

While this is only a simple example, the second code is much faster. At the time this is written, the second computation is approximately two times as fast as the first one.