# 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[x1,…,xn] is the divided power algebra D. The dual basis to the monomial basis of S is the basis consisting of monomials of the form x1(m1) …xn(mn). In characteristic zero, S and D are isomorphic as algebras, with isomorphism sending xia to a!xi(a). In general the multiplication in D is defined by the same formulas as in characteristic 0. For example,

x1(1)*x1(1) = 2*x1(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/(x1,…,xn).

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 = (x1,…,xn), so the action of S on D or D’ extends to an action of the power series ring k[[x1,…,xn]].

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 (x1,…,xn) 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 (x1,…,xn) play a role.

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

Going from a submodule of D to an ideal of S (or from a submodule of Dr to a submodule of Sr:

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 Dr as an r-rowed matrix M of ordinary polynomials.

In the default behavior of the script

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

a monomial xa is taken to represent a!x(a) ∈D’, where, if a = (a1,…,an), then a! = a1!*…*an!. 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 xa 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 GLn(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×n invertible scalar matrix, then G defines an automorphism g: S→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 Sr to a submodule of Dr.

If I is an ideal of S, homogeneous or not, we regard I as an ideal of S’, and similarly with submodules of Sn. In either case we allow the function to accept either a submodule or its matrix of generators (a matrix with target Sn, 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 xa 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 Dr and bounded co-length submodules of Sr (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 Dr. 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/(x1d,…, xnd) -> D’ sending xa to contract(xa, product(n, j-> xid-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
• Symbols