# 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 ${\displaystyle K}$ be a field, let ${\displaystyle P=K[x_{1},\ldots ,x_{n}]}$ be the polynomial ring over ${\displaystyle K}$ in ${\displaystyle n}$ indeterminates, and let ${\displaystyle I}$ be a 0-dimensional ideal of ${\displaystyle P}$ and ${\displaystyle R=P/I}$. Then ${\displaystyle I}$ defines a 0-dimensional scheme ${\displaystyle X}$ in the affine ${\displaystyle n}$-space. Consider the canonical multiplication map

${\displaystyle \mu :R^{e}=R\otimes _{K}R\longrightarrow R,(f,g)\mapsto fg}$

and its kernel ${\displaystyle J=\mathrm {Ker} (\mu )}$. Then ${\displaystyle J/J^{2}}$ is a finitely generated ${\displaystyle R}$-module and ${\displaystyle \mathrm {Ann} _{R^{e}}(J)}$ is an ideal of the enveloping algebra ${\displaystyle R^{e}}$.

• The ideal ${\displaystyle \vartheta _{N}(R/K):=\mu (\mathrm {Ann} _{R^{e}}(J))}$ is called the Noether different of the algebra ${\displaystyle R/K}$.
• The ${\displaystyle R}$-module ${\displaystyle \Omega _{R/K}^{1}:=J/J^{2}}$ is called the module of Kaehler differential 1-forms of the algebra ${\displaystyle R/K}$.
• The ${\displaystyle K}$-linear map ${\displaystyle 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 ${\displaystyle R/K}$.
• For ${\displaystyle m\geq 0}$, the exterior power ${\displaystyle \Omega _{R/K}^{m}:=\wedge _{R}^{m}\Omega _{R/K}^{1}}$ is called the module of Kaehler differential m-forms of the algebra ${\displaystyle R/K}$.
• For ${\displaystyle m\geq 0}$ the ${\displaystyle m}$-th Fitting ideal ${\displaystyle \vartheta _{X}^{(m)}(R/K)}$ of the module of Kaehler differential 1-forms ${\displaystyle \Omega _{R/K}^{1}}$ is called the Kaehler different of the algebra ${\displaystyle R/K}$.

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

Now let us embed the scheme ${\displaystyle X}$ in the projective ${\displaystyle n}$-space via ${\displaystyle X\subseteq D_{+}(x_{0})\subseteq \mathbb {P} ^{n}}$, where ${\displaystyle x_{0}}$ is a new indeterminate. Set ${\displaystyle S:=P[x_{0}]=K[x_{0},\dots ,x_{n}]}$ and equip ${\displaystyle S}$ with the standard grading. The homogeneous vanishing ideal of ${\displaystyle X}$ is the homogenization of ${\displaystyle I}$ with respect to ${\displaystyle x_{0}}$ and denoted by ${\displaystyle I_{X}}$, and the homogeneous coordinate ring of ${\displaystyle X}$ is the graded 1-dimensional ring ${\displaystyle R_{X}=S/I_{X}}$. In this case ${\displaystyle K[x_{0}]}$ is the Noetherian normalization of ${\displaystyle R_{X}}$, and hence we can define the above invariants for the graded algebra ${\displaystyle R_{X}/K[x_{0}]}$. Moreover, we have the following further invariants.

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

Many interesting properties of the scheme ${\displaystyle 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[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]
])