Package zerodim
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 also Category:Package zerodim.
Algebraic Invariants
Let be a field, let be the polynomial ring over in indeterminates, and let be a 0-dimensional ideal of and . Then defines a 0-dimensional scheme in the affine -space. Consider the canonical multiplication map
and its kernel . Then is a finitely generated -module and is an ideal of the enveloping algebra .
- The ideal is called the Noether different of the algebra .
- The -module is called the module of Kaehler differential 1-forms of the algebra .
- The -linear map , is called the universal derivation of the algebra .
- For , the exterior power is called the module of Kaehler differential m-forms of the algebra .
- For the -th Fitting ideal of the module of Kaehler differential 1-forms is called the Kaehler different of the algebra .
More generally, for any -algebra , we can define the Noether different, module of Kaehler differential m-forms, Kaehler different of analogously. In particular, if is graded, then all these invariants are also graded.
Now let us embed the scheme in the projective -space via , where is a new indeterminate. Set and equip with the standard grading. The homogeneous vanishing ideal of is the homogenization of with respect to and denoted by , and the homogeneous coordinate ring of is the graded 1-dimensional ring . In this case is the Noetherian normalization of , and hence we can define the above invariants for the graded algebra . Moreover, we have the following further invariants.
- The graded -module is called the canonical module of the algebra .
- The graded locolization of at is called the homogeneous ring of quotients of .
- When the scheme is reduced (more general, locally Gorenstein), there is an injection and the inverse of in is called the Dedekind different of .
Many interesting properties of the scheme 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. Alias of the package is ZD
.
List of main functions
MinQuotIdeal(P, I, J): computes a min. homog. system of generators of homog. ideal (I+J)/I. input: P=K[x[1..N]], I and J homog. ideals of P output: list of polys
AffineNoetherDiff(P, I): computes a generating system"; of the Noether different of algebra R/K, R=P/I"; input: P=K[x[1..N]], I an ideal of P"; output: list of polys";
NoetherDifferent(P, I): computes a min.homog. gen. system of the Noether different of algebra R/K, R=P/I. input: P=K[x[1..N]], I an homog. ideal of P output: list of polys
NoetherDifferentRel(P, Ix): computes a min.homog. gen. system of the Noether different of R/K[x[0]], R=P/Ix. input: P=K[x[0..N]], Ix vanishing ideal of a 0-dim scheme X in P^n_K such that intersect(X,Z(x[0])) is empty output: list of polys
HilbertNoetherDiff(P, I): computes the Hilbert function of the Noether different of R/K, R=P/I. input: P=K[x[1..N]], I an homog. ideal of P output: the Hilbert function
HilbertNoetherDiffRel(P, Ix): computes the Hilbert function of the Noether different of R/K[x[0]], R=P/Ix. input: P=K[x[0..N]], Ix vanishing ideal of a 0-dim scheme X in P^n_K such that intersect(X,Z(x[0])) is empty output: the Hilbert function
AffineKaehlerDiff(P,I,m): computes a generating system of the m-th Kaehler different of algebra R/K, R=P/I. input: P=K[x[1..N]], I an ideal of P, m non-neg integer output: list of polys
KaehlerDifferent(P,I,m): computes a min.homog.gen. system of the m-th Kaehler different of algebra R/K, R=P/I. input: P=K[x[1..N]], I an homog. ideal, m non-neg integer output: list of polys
KaehlerDifferentRel(P, Ix): computes a min. homog.gen. system of the Kaehler different of R/K[x[0]], R=P/Ix. input: P=K[x[0..N]], Ix vanishing ideal of a 0-dim scheme X in P^n_K such that intersect(X,Z(x[0])) is empty output: list of polys
HilbertKaehlerDiff(P,I,m): computes the Hilbert function of the m-th Kaehler different of R/K, R=P/I. input: P=K[x[1..N]], I an homog. ideal, m non-neg integer output: the Hilbert function
HilbertKaehlerDiffRel(P, Ix): computes the Hilbert function of the Kaehler different of R/K[x[0]], R=P/Ix. input: P=K[x[0..N]], Ix vanishing ideal of a 0-dim scheme X in P^n_K such that intersect(X,Z(x[0])) is empty output: the Hilbert function
AffBMAlgo(LX,O): computes a list [GBasis,OrderIdeal,Separators] for a 0-dim ideal with its primary components LX. input: P=K[x[1..N]], LX list of 0-dim primary ideals q_j associated to a 0-dim ideal of P O list of K-bases of P/q_j output: [GBasis,OrderIdeal,Separators] of P/intersection(q_j)
DedekindDifferentRel(P,Points): computes a min.homog.gen. system of the Dedekind different of R/K[x[0]], where R=P/Ix and Ix is the vanishing ideal of Points. input: P=K[x[0..N]], Points=list of points in P^n_K not in Z(x[0]) output: list of polys
HilbertDedekindDiffRel(P,Points): computes the Hilbert function of the Dedekind different of R/K[x[0]], where R=P/Ix and Ix is the vanishing ideal of Points. input: P=K[x[0..N]], Points=list of points in P^n_K not in Z(x[0]) output: the Hilbert function
KaehlerDiffModule(P, Ix, m): computes a submodule U of P^t such that the module of Kaehler differential m-form has Omega^m(R/K)=P^t/U, R=P/Ix, t=binom{n}{m}. input: P=K[x[1..N]], Ix a non-zero ideal, m non-neg integer output: submodule with generators
HilbertKDM(P, Ix, m): computes the Hilbert function of the module of Kaehler differential m-form. input: P=K[x[1..N]], Ix a non-zero homog. ideal, 0<m<n+1 output: HF of Omega^m(R/K)
KDMOfPoints(P,Points,m): computes a submodule U of P^t such that the module of Kaehler differential m-form has Omega^m(R/K)=P^t/U, R=P/I_Points, t=binom{n}{m}. input: P=K[x[1..N]], Points=list of points, m non-neg integer output: submodule with generators
KDMOfProjectivePoints(P,Points,m): computes a submodule U of P^t such that the module of Kaehler differential m-form has Omega^m(R/K)=P^t/U, R=P/I_Points, t=binom{n}{m}. input: P=K[x[1..N]], Points=list of projective points, m non-neg integer output: submodule with generators
KDMRel(P, Ix, m): computes a submodule U of P^t such that the module of Kaehler differential m-form of R/K[x[0]] has Omega^m(R/K[x[0]])=P^t/U, R=P/Ix, t=binom{n}{m}. input: P=K[x[0..N]], Ix a non-zero homog. ideal such that K[x[0]] is the Noetherian normalization of R, m non-neg integer output: submodule with generators
HilbertKDMRel(P, Ix, m): computes the Hilbert function of the module of Kaehler differential m-form of R/K[x[0]]. input: P=K[x[0..N]], Ix a non-zero homog. ideal such that K[x[0]] is the Noetherian normalization of R, m non-neg integer"; output: HF of Omega^m(R/K[x_0])
Examples for computations
Now let us apply the zerodim
package to some concrete examples. Recall that the alias of the package is ZD
, and so to call a function from this package in computation one uses ZD.functions-name.
Consider the first example, where X is the scheme defined by the homogeneous ideal Ix.
Use P ::= QQ[X[0..2]]; Ix := ideal(X[0]*X[1] -X[1]^2, X[1]^2*X[2] -X[1]*X[2]^2, 2*X[0]^2*X[2] -3*X[0]*X[2]^2 +X[2]^3);
Then we calculate the differents of X as follows:
-- Computes the Noether different of R/K: ZD.NoetherDifferent(P,Ix); [] -- Computes the Noether different of R/K[x_0]: ZD.NoetherDifferentRel(P,Ix); [X[1]^3 -2*X[1]*X[2]^2, 2*X[0]^3 -6*X[0]*X[2]^2 -2*X[1]*X[2]^2 +3*X[2]^3, X[2]^4] -- Computes the Hilbert function of the Noether different of R/K[x_0]: ZD.HilbertNoetherDiffRel(P,Ix); H(0) = 0 H(1) = 0 H(2) = 0 H(3) = 2 H(t) = 5, for t >= 4 -- Computes the Kaehler different of R/K[x_0]: ZD.KaehlerDifferentRel(P,Ix); [X[1]^3 -2*X[1]*X[2]^2, 2*X[0]^3 -6*X[0]*X[2]^2 -2*X[1]*X[2]^2 +3*X[2]^3, X[2]^4] -- Computes the Hilbert function of the Kaehler different of R/K[x_0]: ZD.HilbertKaehlerDiffRel(P,Ix); H(0) = 0 H(1) = 0 H(2) = 0 H(3) = 2 H(t) = 5, for t >= 4
The module of Kaehler differentials 1-forms of R/K is determined by a submodule U of P^3 which is computed by:
U := ZD.KaehlerDiffModule(P,Ix,1); indent(U); SubmoduleRows(F, matrix([ [X[1], X[0] -2*X[1], 0], [0, 2*X[1]*X[2] -X[2]^2, X[1]^2 -2*X[1]*X[2]], [4*X[0]*X[2] -3*X[2]^2, 0, 2*X[0]^2 -6*X[0]*X[2] +3*X[2]^2], [X[0]*X[1] -X[1]^2, 0, 0], [2*X[0]^2*X[2] -3*X[0]*X[2]^2 +X[2]^3, 0, 0], [0, X[0]*X[1] -X[1]^2, 0], [0, 2*X[0]^2*X[2] -3*X[0]*X[2]^2 +X[2]^3, 0], [0, 0, X[0]*X[1] -X[1]^2], [0, 0, X[1]^2*X[2] -X[1]*X[2]^2], [0, 0, 2*X[0]^2*X[2] -3*X[0]*X[2]^2 +X[2]^3] ]))
Next, let us consider the example, where X is given by a set of 10 points:
Use P::=QQ[X[0..2]]; Points := [[1,1,0], [1,3,0], [1,1,1], [1,2,1], [1,3,1], [1,0,2], [1,1,2], [1,2,2], [1,3,2], [1,3,3]];
We can compute the Dedekind different of X and its Hilbert function by:
ZD.DedekindDifferentRel(P,Points); [X[2]^6, X[1]*X[2]^5, X[0]*X[2]^5, X[1]^2*X[2]^4, X[0]*X[1]*X[2]^4, X[0]^2*X[2]^4, X[1]^3*X[2]^3, X[0]*X[1]^2*X[2]^3, X[1]^6, X[0]*X[1]^5] ZD.HilbertDedekindDiffRel(P,Points); H(0) = 0 H(1) = 0 H(2) = 0 H(3) = 0 H(4) = 0 H(5) = 0 H(t) = 10, for t >= 6
The module of Kaehler differential 3-forms of R/K can be computed by
ZD.KDMOfProjectivePoints(P,Points,3); submodule(FreeModule(RingWithID(144, "QQ[X[0],X[1],X[2]]"), 1), [[(-1/2)*X[0]*X[1]^2 +(-19/27)*X[1]^3 +(-85/18)*X[0]^2*X[2] +(563/27)*X[0]*X[1]*X[2] +(85/27)*X[1]^2*X[2] +(-61/3)*X[0]*X[2]^2 +(-301/18)*X[1]*X[2]^2 +(47/3)*X[2]^3], [-X[0]^2*X[2] +(3/2)*X[0]*X[2]^2 +(-1/2)*X[2]^3], [-2*X[0]^2*X[1] +4*X[0]*X[1]^2 +(-4/3)*X[1]^3 +X[1]^2*X[2] +(-23/6)*X[0]*X[2]^2 +(-4/3)*X[1]*X[2]^2 +(13/6)*X[2]^3], [-X[0]^3 +(13/3)*X[0]*X[1]^2 +(-16/9)*X[1]^3 +(11/6)*X[1]^2*X[2] +(-253/36)*X[0]*X[2]^2 +(-22/9)*X[1]*X[2]^2 +(143/36)*X[2]^3], [(40/9)*X[0]*X[1]^2 +(-52/27)*X[1]^3 +X[0]*X[1]*X[2] +(19/9)*X[1]^2*X[2] +(-563/54)*X[0]*X[2]^2 +(-85/27)*X[1]*X[2]^2 +(301/54)*X[2]^3], [2*X[0]*X[1]*X[2] -2*X[0]*X[2]^2 +(-3/2)*X[1]*X[2]^2 +(3/2)*X[2]^3], [3*X[0]^2*X[2] +(-11/3)*X[0]*X[2]^2 +X[2]^3], [2*X[0]*X[1]^2 +(-4/3)*X[1]^3 -2*X[0]*X[2]^2 +(23/6)*X[1]*X[2]^2 +(-5/2)*X[2]^3], [3*X[0]^2*X[1] +(-13/9)*X[1]^3 +(-11/3)*X[0]*X[2]^2 +(253/36)*X[1]*X[2]^2 +(-55/12)*X[2]^3], [4*X[0]^3 +(-40/27)*X[1]^3 +(-1/2)*X[1]^2*X[2] +(-85/18)*X[0]*X[2]^2 +(563/54)*X[1]*X[2]^2 +(-61/9)*X[2]^3] ])