# InverseSystems -- Macaulay's Inverse Systems

## Description

Inverse systems are often used to construct artinian Gorenstein ideals and modules. For a brief introduction to that application, see Gorenstein. Here we give a general introduction.

The graded Hopf algebra dual of the symmetric algebra $S := k[x_1,\dots,x_n]$ is the divided power algebra $D$. The dual basis to the monomial basis of $S$ is the basis consisting of monomials of the form $x_1^{(m_1)} \dots x_n^{(m_n)}$. In characteristic zero, $S$ and $D$ are isomorphic as algebras, with isomorphism sending $x_i^{a}$ to $a!x_i^{(a)}$. In general the multiplication in $D$ is defined by the same formulas as in characteristic 0. For example,

$x_1^{(1)}*x_1^{(1)} = 2*x_1^{(2)}$.

In positive characteristic $D$ and $S$ are not isomorphic; $D$ is not even a finitely generated algebra.

We will be interested also in the local versions, where we take power series in the divided powers. This is the ordinary linear dual of $S$. We denote it by $D'$. As an $S$-module, $D'$ is the injective hull of the simple module $S/(x_1,\dots,x_n)$.

Since $D$ is the graded dual of $S$, it may also be regarded as an $S$-module. Any element of $D$ is annihilated by a power of $mm = (x_1,\dots,x_n)$, so the action of $S$ on $D$ or $D'$ extends to an action of the power series ring k[[x_1,\dots,x_n]].

F. S. Macaulay defined the inverse system of an $S'$-submodule M of $D'$ to be the annihilator I of M in $S'$ (or in $S$). If $M$ is finitely generated then it is annihilated by some power of $mm$, and thus I is 0-dimensional.

Inversely, the (local) inverse system of an ideal in $S$ or $S'$ is by definition the submodule of $D'$ that it annihilates.

In the 1880's these ideas were used by Max Noether, in the local version, as a substitute for primary decomposition in the case of what he called multiple points in the plane. F. S. Macaualay studied and greatly refined Noether's work, and for example identified the ideals I that are annihilators of cyclic submodules of $D'$ as the ideals such that one could do residuation in $S'/I$ -- that is, $S'/I$ is Gorenstein. Though the global version has also been studied, we will only be concerned with the local version.

Any finitely generated submodule of D' generated by finite polynomials is actually a submodule of D, and its dual will have only primary components contained in $(x_1,\dots,x_n)$ so the distinction will not be important for us on that side. However, it is imporant to note that when taking the inverse system of an ideal, only the primary components contained in $(x_1,\dots,x_n)$ play a role.

%%%%%%%%%%%%%%%%%%%%%%%%

Going from a submodule of D to an ideal of S (or from a submodule of D^r to a submodule of S^r:

Because D and D' are not finitely generated S-modules Macaulay2 cannot deal with them directly. These scripts can only deal with a finitely generated submodule M of D or D'. Such a module is represented here by a row matrix, of ordinary polynomials, whose entries are thought of as generators of M.

More generally, we represent a finitely generated submodule of $D^r$ as an $r$-rowed matrix M of ordinary polynomials.

In the default behavior of the script

inverseSystem M = inverseSystem(M, DividedPowers => false)

a monomial $x^a$ is taken to represent $a!x^{(a)} \in D'$, where, if $a = (a_1,\dots,a_n)$, then $a! = a_1!*\dots*a_n!$. This means that the script should not be used in the default way unless the characteristic is greater than the highest degree to which a variable appears.

To make $x^a$ represent $x^{(a)}$, for example in small characteristics, use

inverseSystem(Matrix, DividedPowers=>true)

(which was and remains the default behavior of the script "fromDual").

The reason for the default choice is that the general linear group GL_n(k) acts on both S and D, and it is reasonable to expect that the operations defined by inverseSystem should be equivariant. This is the case for the default setting, but with DividedPowers=>true it is not the case. For example,

 i1 : S = QQ[x,y] o1 = S o1 : PolynomialRing i2 : J = inverseSystem x^2 3 o2 = ideal (y, x ) o2 : Ideal of S

differs only by a linear change of coordinates from the ideal

 i3 : J' = inverseSystem (x+y)^2 3 o3 = ideal (x - y, y ) o3 : Ideal of S

But is has very different properties than the ideal

 i4 : J'' = inverseSystem(matrix{{(x+y)^2}}, DividedPowers=>true) 2 2 2 o4 = ideal (x*y - 2y , x - y ) o4 : Ideal of S i5 : betti res J'' 0 1 2 o5 = total: 1 2 1 0: 1 . . 1: . 2 . 2: . . 1 o5 : BettiTally

With the default behavior (DividedPowers=>false), inverseSystem is equivariant in a precise sense: If G is an $n\times n$ invertible scalar matrix, then G defines an automorphism g: S\to S by change of variables. Also g also acts on 1 x m matrices M, componentwise and (transpose g)^{-1} (inverseSystem M) = inverseSystem(g M), as illustrated below:

 i6 : kk = QQ o6 = QQ o6 : Ring i7 : n = 3 o7 = 3 i8 : S = kk[a,b,c] o8 = S o8 : PolynomialRing i9 : M = matrix{{a^2,b^3+c^3}} o9 = | a2 b3+c3 | 1 2 o9 : Matrix S <--- S i10 : G = random(S^3, S^3) o10 = | 9/2 1/2 3/2 | | 1/2 1 3/4 | | 9/4 3/4 7/4 | 3 3 o10 : Matrix S <--- S i11 : g = map(S,S,(vars S)*G) 9 1 9 1 3 3 3 7 o11 = map (S, S, {-a + -b + -c, -a + b + -c, -a + -b + -c}) 2 2 4 2 4 2 4 4 o11 : RingMap S <--- S i12 : g' = map(S,S,(vars S)*(transpose G)) 9 1 3 1 3 9 3 7 o12 = map (S, S, {-a + -b + -c, -a + b + -c, -a + -b + -c}) 2 2 2 2 4 4 4 4 o12 : RingMap S <--- S i13 : h = map(S,S,(vars S)*(transpose G)^(-1)) 19 4 18 13 72 42 30 36 68 o13 = map (S, S, {--a + --b - --c, --a + --b - --c, - --a - --b + --c}) 47 47 47 47 47 47 47 47 47 o13 : RingMap S <--- S i14 : inverseSystem M 3 3 3 o14 = ideal (b*c, a*c, a*b, b - c , a ) o14 : Ideal of S i15 : g'(inverseSystem g(M)) 24675 7943 50901 4935 1833 893 o15 = ideal (- -----a*b - ----a*c - -----b*c, ----a*b + ----a*c + ---b*c, - 2 8 8 2 2 4 ----------------------------------------------------------------------- 73467 3 26433 2 42111 2 8379 3 2961a*b - 5076a*c - 47b*c, - -----a + -----a b + -----a*b + ----b - 64 64 64 64 ----------------------------------------------------------------------- 128133 2 34989 37563 2 65989 2 38437 2 8379 3 ------a c + -----a*b*c + -----b c - -----a*c + -----b*c - ----c , 64 32 64 64 64 64 ----------------------------------------------------------------------- 78003 3 48033 2 6021 2 441 3 122067 2 17379 -----a + -----a b + ----a*b - ---b + ------a c + -----a*b*c - 32 32 32 32 32 16 ----------------------------------------------------------------------- 1977 2 48321 2 2023 2 441 3 ----b c + -----a*c - ----b*c + ---c ) 32 32 32 32 o15 : Ideal of S

These may look different, but...

 i16 : g'(inverseSystem g(M)) == inverseSystem M o16 = true

Equivalently,

 i17 : h(inverseSystem M) == inverseSystem g(M) o17 = true

There is a similar equivariance for the dual action of inverseSystem on ideals.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Going from an ideal of S to a submodule of D, or from a submodule of S^r to a submodule of D^r.

If $I$ is an ideal of $S$, homogeneous or not, we regard $I$ as an ideal of $S'$, and similarly with submodules of S^n. In either case we allow the function to accept either a submodule or its matrix of generators (a matrix with target S^n, possibly with generators in different degrees.

If I is an ideal or a submodule, then M = inverseSystem(d, I) M1 = inverseSystem(d, I, DividedPowers => true)

both return 1 x m matrices whose entries are the minimal generators of the annihilator of $I$ in $D'$, correct up to degree d. In the matrix $M$ a term $x^a$ is to be interpreted as $a! x^{(a)}$, while in the matrix $M1$ it is interpreted as $x^{(a)}$. Of course the first computation is only valid if all the powers of variables appearing in the generators of $I$ are < char k.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 The functor inverseSystem ( -- ) and inverseSystem (d ,-- ) are inverse contravariant isomorphisms between the categories of bounded length submodules of D^r and bounded co-length submodules of S^r (the bound depends on d in an obvious way.)

 i18 : S = ZZ/101[a,b,c] o18 = S o18 : PolynomialRing i19 : M = random(S^{0,1}, S^{-1,-1,-2,-2}) o19 = {0} | -13a-15b-47c -43a-28b+38c {-1} | 22a2-47ab+43b2+7ac+36bc+33c2 45a2+47ab-17b2+15ac+35bc+40c2 ----------------------------------------------------------------------- 2a2-34ab-23b2+19ac-11bc+11c2 11a3-28a2b-47ab2+15b3-3a2c-7abc-13b2c+29ac2+30bc2+39c3 ----------------------------------------------------------------------- 16a2-48ab+39b2-16ac+48bc-38c2 | 46a3+a2b-23ab2-37b3+22a2c+2abc-10b2c-47ac2-18bc2+27c3 | 2 4 o19 : Matrix S <--- S i20 : d = 6 o20 = 6 i21 : N = inverseSystem(d, M) o21 = {0} | 36a5-23a4b-48a3b2+43a2b3+40ab4-25b5+36a4c {-1} | 9a6+32a5b-18a4b2+38a3b3+9a2b4-43ab5-11b6- ----------------------------------------------------------------------- -31a3bc-49a2b2c+4ab3c-10b4c-50a3c2+48a2bc2+13ab2c2+45b3c2-29a2c3+46abc3 3a5c-30a4bc+33a3b2c+26a2b3c+28ab4c-7b5c-41a4c2-34a3bc2+22a2b2c2+14ab3c2 ----------------------------------------------------------------------- -39b2c3+22ac4+49bc4+16c5 +26b4c2+38a3c3+49a2bc3+9ab2c3+31b3c3+10a2c4+45abc4-39b2c4-32ac5-11bc5+ ----------------------------------------------------------------------- -3a4+4a3b-8a2b2-17ab3+b4-22a3c+32a2bc-9ab2c+ 11c6 -24a5+8a4b-17a3b2-44a2b3-30ab4-b5-9a4c-2a3bc ----------------------------------------------------------------------- 29b3c-a2c2+13abc2-25b2c2 -14a2b2c-23ab3c-47b4c-46a3c2-36a2bc2-ab2c2-b3c2+31a2c3+41abc3+3b2c3- ----------------------------------------------------------------------- | 43ac4-33bc4+43c5 | 2 2 o21 : Matrix S <--- S i22 : image M == inverseSystem N o22 = true

but with a smaller value of d this would not work:

 i23 : d = 5 o23 = 5 i24 : N = inverseSystem(d, M) o24 = {0} | -49a4-42a3b-47a2b2-30ab3+50b4+10a3c-2a2bc+41ab2c+13b3c+36a2c2+ {-1} | -42a5-39a4b+7a3b2+8a2b3-21ab4+17b5-23a4c-48a3bc-50a2b2c+11ab3c ----------------------------------------------------------------------- 2abc2+17ac3 -21b4c-32a3c2+33a2bc2+31ab2c2-31b3c2+37a2c3-44abc3+38b2c3+24ac4-48bc4+ ----------------------------------------------------------------------- 9a4+13a3b+24a2b2+15ab3+47b4+29a3c+30ab2c-41b3c- 15c5 -24a5+28a4b-a3b2-23a2b3+27ab4-27b5+20a4c+19a3bc ----------------------------------------------------------------------- 29a2c2-25abc2+17bc3 -44a2b2c-39ab3c-4b4c+5a3c2+25a2bc2-8ab2c2-27b3c2+50a2c3+25abc3+10b2c3+ ----------------------------------------------------------------------- -18a4+43a3b-30a2b2+45ab3-10b4+13a3c-32a2bc-9ab2c- 2ac4-45bc4-c5 -23a5-37a4b-40a3b2+36a2b3-33ab4-20b5-15a4c-24a3bc ----------------------------------------------------------------------- 31b3c-3a2c2+24abc2-21c4 +27a2b2c+30ab3c+9b4c+5a3c2+4a2bc2-28ab2c2-28b3c2+44a2c3-31abc3+27b2c3+ ----------------------------------------------------------------------- -3a4+4a3b-8a2b2-17ab3+b4-22a3c+32a2bc-9ab2c+ 42ac4+44bc4+13c5 -24a5+8a4b-17a3b2-44a2b3-30ab4-b5-9a4c-2a3bc ----------------------------------------------------------------------- 29b3c-a2c2+13abc2-25b2c2 -14a2b2c-23ab3c-47b4c-46a3c2-36a2bc2-ab2c2-b3c2+31a2c3+41abc3+3b2c3- ----------------------------------------------------------------------- | 43ac4-33bc4+43c5 | 2 4 o24 : Matrix S <--- S i25 : image M != inverseSystem N o25 = true

There is at present no direct way to compare inverseSystem(d, inverseSystem M) and M, since the matrices repreenting these submodules are really representing sets of generators in D^r. However, we can check equality of containment by applying inverseSystem again:

 i26 : M = random(S^{0,1}, S^{-1,-1,-2,-2}) o26 = {0} | -22a-9b-20c 32a-32b+24c {-1} | -15a2-49ab+9b2-20ac-26bc-8c2 39a2-33ab-39b2+44ac+22bc+43c2 ----------------------------------------------------------------------- -30a2-39b2-19ac+4bc-49c2 -8a3-3a2b+16ab2+6b3-30a2c-6abc+3b2c-9ac2+25bc2-41c3 ----------------------------------------------------------------------- -48a2+33ab+36b2+17ac+13bc-11c2 | 36a3-22a2b-28ab2+40b3+41a2c+35abc-31b2c-35ac2-2bc2-49c3 | 2 4 o26 : Matrix S <--- S i27 : inverseSystem(inverseSystem(d,gens inverseSystem M)) == inverseSystem M o27 = true

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Method: To represent finitely generated S-submodule of $D'$ as an S-module we use the map of modules S/(x_1^d,\dots, x_n^d) -> D' sending $x^a$ to contract(x^a, product(n, j-> x_i^{d-1})), and its inverse, which is of course defined only on divided monomials of small degree.

## Caveat

The translations used involve multiplying or dividing by scalars; if the polynoimials involved have maximum degree n, then n! must be invertible for theUsing the tool of translation to make sense.

• inverseSystem -- Inverse systems with equivariance
• fromDual -- Ideal from inverse system
• toDual -- finds the inverse system to an ideal up to a given degree
• DividedPowers -- Option for inverseSystem
• fromDividedPowers -- Translates from divided power monomial basis to ordinary monomial basis
• toDividedPowers -- Translates to divided power monomial basis from ordinary monomial basis

## Authors

• David Eisenbud
• Mats Boij

## Version

This documentation describes version 1.1 of InverseSystems.

## Source code

The source code from which this documentation is derived is in the file InverseSystems.m2.

## Exports

• Functions and commands
• fromDividedPowers -- Translates from divided power monomial basis to ordinary monomial basis
• fromDual -- Ideal from inverse system
• inverseSystem -- Inverse systems with equivariance
• isStandardGradedPolynomialRing -- Checks whether a ring is a polynomial ring over a field with variables of degree 1
• toDividedPowers -- Translates to divided power monomial basis from ordinary monomial basis
• toDual -- finds the inverse system to an ideal up to a given degree
• Methods
• "fromDividedPowers(Matrix)" -- see fromDividedPowers -- Translates from divided power monomial basis to ordinary monomial basis
• "fromDividedPowers(RingElement)" -- see fromDividedPowers -- Translates from divided power monomial basis to ordinary monomial basis
• "fromDual(Matrix)" -- see fromDual -- Ideal from inverse system
• "fromDual(RingElement)" -- see fromDual -- Ideal from inverse system
• "inverseSystem(Ideal)" -- see inverseSystem -- Inverse systems with equivariance
• "inverseSystem(Matrix)" -- see inverseSystem -- Inverse systems with equivariance
• "inverseSystem(RingElement)" -- see inverseSystem -- Inverse systems with equivariance
• "inverseSystem(ZZ,Ideal)" -- see inverseSystem -- Inverse systems with equivariance
• "inverseSystem(ZZ,Matrix)" -- see inverseSystem -- Inverse systems with equivariance
• "isStandardGradedPolynomialRing(Ring)" -- see isStandardGradedPolynomialRing -- Checks whether a ring is a polynomial ring over a field with variables of degree 1
• "toDividedPowers(Matrix)" -- see toDividedPowers -- Translates to divided power monomial basis from ordinary monomial basis
• "toDividedPowers(RingElement)" -- see toDividedPowers -- Translates to divided power monomial basis from ordinary monomial basis
• "toDual(ZZ,Ideal)" -- see toDual -- finds the inverse system to an ideal up to a given degree
• "toDual(ZZ,Matrix)" -- see toDual -- finds the inverse system to an ideal up to a given degree
• Symbols

## For the programmer

The object InverseSystems is .