# 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 $K$ be a field, let $P=K[x_{1},\ldots ,x_{n}]$ 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

$\mu :R^{e}=R\otimes _{K}R\longrightarrow R,(f,g)\mapsto fg$ and its kernel $J=\mathrm {Ker} (\mu )$ . Then $J/J^{2}$ is a finitely generated $R$ -module and $\mathrm {Ann} _{R^{e}}(J)$ is an ideal of the enveloping algebra $R^{e}$ .

• The ideal $\vartheta _{N}(R/K):=\mu (\mathrm {Ann} _{R^{e}}(J))$ is called the Noether different of the algebra $R/K$ .
• The $R$ -module $\Omega _{R/K}^{1}:=J/J^{2}$ is called the module of Kaehler differential 1-forms of the algebra $R/K$ .
• The $K$ -linear map $d:R\rightarrow \Omega _{R/K}^{1},f\mapsto f\otimes 1-1\otimes f+J^{2}$ , is called the universal derivation of the algebra $R/K$ .
• For $m\geq 0$ , the exterior power $\Omega _{R/K}^{m}:=\wedge _{R}^{m}\Omega _{R/K}^{1}$ is called the module of Kaehler differential m-forms of the algebra $R/K$ .
• For $m\geq 0$ the $m$ -th Fitting ideal $\vartheta _{X}^{(m)}(R/K)$ of the module of Kaehler differential 1-forms $\Omega _{R/K}^{1}$ 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 $X\subseteq D_{+}(x_{0})\subseteq \mathbb {P} ^{n}$ , where $x_{0}$ is a new indeterminate. Set $S:=P[x_{0}]=K[x_{0},\dots ,x_{n}]$ and equip $S$ with the standard grading. The homogeneous vanishing ideal of $X$ is the homogenization of $I$ with respect to $x_{0}$ and denoted by $I_{X}$ , and the homogeneous coordinate ring of $X$ is the graded 1-dimensional ring $R_{X}=S/I_{X}$ . In this case $K[x_{0}]$ is the Noetherian normalization of $R_{X}$ , and hence we can define the above invariants for the graded algebra $R_{X}/K[x_{0}]$ . Moreover, we have the following further invariants.

• The graded $R_{X}$ -module $\omega _{R_{X}}=\mathrm {Hom} _{K[x_{0}]}(R,K[x_{0}])(-1)$ is called the canonical module of the algebra $R_{X}/K[x_{0}]$ .
• The graded locolization $Q^{h}(R_{X})$ of $R_{X}$ at $x_{0}$ is called the homogeneous ring of quotients of $R_{X}$ .
• When the scheme $X$ is reduced (more general, locally Gorenstein), there is an injection $\omega _{R_{X}}\hookrightarrow Q^{h}(R_{X})$ and the inverse of $\omega _{R_{X}}$ in $Q^{h}(R_{X})$ is called the Dedekind different of $R_{X}/K[x_{0}]$ .

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. 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], 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)) 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], 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)) 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], 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)) 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], 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)) 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], 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)
output: list of polys

HilbertDedekindDiffRel(P,Points): computes the Hilbert function
of the Dedekind different of R/K[x], 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)
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]
has Omega^m(R/K[x])=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] 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].
input: P=K[x[0..N]], Ix a non-zero homog. ideal such that
K[x] 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*X -X^2, X^2*X -X*X^2, 2*X^2*X -3*X*X^2 +X^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^3 -2*X*X^2,  2*X^3 -6*X*X^2 -2*X*X^2 +3*X^3,  X^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^3 -2*X*X^2,  2*X^3 -6*X*X^2 -2*X*X^2 +3*X^3,  X^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, X -2*X, 0],
[0, 2*X*X -X^2, X^2 -2*X*X],
[4*X*X -3*X^2, 0, 2*X^2 -6*X*X +3*X^2],
[X*X -X^2, 0, 0],
[2*X^2*X -3*X*X^2 +X^3, 0, 0],
[0, X*X -X^2, 0],
[0, 2*X^2*X -3*X*X^2 +X^3, 0],
[0, 0, X*X -X^2],
[0, 0, X^2*X -X*X^2],
[0, 0, 2*X^2*X -3*X*X^2 +X^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^6,  X*X^5,  X*X^5,  X^2*X^4,  X*X*X^4,
X^2*X^4,  X^3*X^3,  X*X^2*X^3,  X^6,  X*X^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,X,X]"), 1),
[[(-1/2)*X*X^2 +(-19/27)*X^3 +(-85/18)*X^2*X +(563/27)*X*X*X
+(85/27)*X^2*X +(-61/3)*X*X^2 +(-301/18)*X*X^2 +(47/3)*X^3],
[-X^2*X +(3/2)*X*X^2 +(-1/2)*X^3], [-2*X^2*X +4*X*X^2
+(-4/3)*X^3 +X^2*X +(-23/6)*X*X^2 +(-4/3)*X*X^2 +(13/6)*X^3],
[-X^3 +(13/3)*X*X^2 +(-16/9)*X^3 +(11/6)*X^2*X +(-253/36)*X*X^2
+(-22/9)*X*X^2 +(143/36)*X^3],
[(40/9)*X*X^2 +(-52/27)*X^3 +X*X*X +(19/9)*X^2*X
+(-563/54)*X*X^2 +(-85/27)*X*X^2 +(301/54)*X^3],
[2*X*X*X -2*X*X^2 +(-3/2)*X*X^2 +(3/2)*X^3],
[3*X^2*X +(-11/3)*X*X^2 +X^3],
[2*X*X^2 +(-4/3)*X^3 -2*X*X^2 +(23/6)*X*X^2 +(-5/2)*X^3],
[3*X^2*X +(-13/9)*X^3 +(-11/3)*X*X^2 +(253/36)*X*X^2 +(-55/12)*X^3],
[4*X^3 +(-40/27)*X^3 +(-1/2)*X^2*X +(-85/18)*X*X^2 +(563/54)*X*X^2 +(-61/9)*X^3]
])