# Depth -- Finds the depth of a module or ideal, and systems of parameters in an ideal

## Description

There are two major groups of routines: one for finding the depth of an ideal or module or ring,or the depth of an ideal on a module; and the other for finding relatively sparse systems of homogeneous parameters in an ideal (there is an inhomogeneous version too.)

The depth of an ideal on a module is a fundamental invariant, a kind of arithmetic version of codimension. In many local or graded cases one is interested in the depth of the maximal ideal on the module, and then we speak just of the depth of the module (or, when the module is the ring itself, the depth of the ring.) Over a regular ring, depth is most efficiently computed using the Auslander-Buchsbaum formula depth M = dim R - pdim M, where pdim is the projective dimension. In general, depth(I,M) = min {i | Ext^i(R/I,M) != 0}. Both these methods are incorporated.

Depth can be computed from regular sequences, which are systems of parameters. The other routines in this package try probabilistically to find relatively sparse systems of parameters; the maximum length of such a system is equal to the codimension of the ideal, so (inhomogeneousSystemOfParameters,Ideal) and (systemOfParameters, Ideal), without further arguments, look for regular sequences of length codim I.

To find such sequences, one can simply take an appropriate number of random linear combinations of the generators of the ideal, and this is what's done by inhomogeneousSystemOfParameters. Since being a system of parameters is a matter of certain elements not being in certain prime ideals, this succeeds with very high probability over any field of reasonable size. But it produces inhomogeneous elements. When the ideal is homogeneous, one generally wants a homogeneous system of parameters; this is provided, again probabilistically, by the routine systemOfParameters.

Here is an example computing depths of modules (that is, the depths of the maximal ideal on the module:

 i1 : S = ZZ/101[a,b,c,d] o1 = S o1 : PolynomialRing i2 : K = koszul vars S 1 4 6 4 1 o2 = S <-- S <-- S <-- S <-- S 0 1 2 3 4 o2 : ChainComplex i3 : apply(numgens S, i-> depth coker K.dd_(i+1)) o3 = {0, 1, 2, 3} o3 : List

and here is one computing systems of paramters. The "Density" (a number between 0 and 1) is a measure of the sparseness sought, and "Attempts" bounds the number of probabilistic attempts.

 i4 : I = ideal"ab,bc,cd2,da" 2 o4 = ideal (a*b, b*c, c*d , a*d) o4 : Ideal of S i5 : codim I o5 = 2 i6 : setRandomSeed 0 o6 = 0 i7 : systemOfParameters(I, Density => .1, Attempts => 1000, Verbose => true) Attempts: 1000 Density: .1 Seed: null 2 o7 = ideal (a*b, c*d ) o7 : Ideal of S i8 : inhomogeneousSystemOfParameters I o8 = | cd2+bc bc+ad | 1 2 o8 : Matrix S <--- S

## Caveat

The systemOfParameters code could be improved by working one degree at a time, using a knowledge of the codim of the ideal generated by elements of degrees <=d for each d.

## Version

This documentation describes version 1.0 of Depth.

## Source code

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

## Exports

• Functions and commands
• Methods
• "inhomogeneousSystemOfParameters(Ideal)" -- see inhomogeneousSystemOfParameters -- generates an inhomogeneous system of parameters
• "inhomogeneousSystemOfParameters(Ideal,Ring)" -- see inhomogeneousSystemOfParameters -- generates an inhomogeneous system of parameters
• "inhomogeneousSystemOfParameters(Ring)" -- see inhomogeneousSystemOfParameters -- generates an inhomogeneous system of parameters
• "isCM(Module)" -- see isCM -- whether a ring or module is Cohen-Macaulay
• "isCM(Ring)" -- see isCM -- whether a ring or module is Cohen-Macaulay
• "isRegularSequence(List)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "isRegularSequence(List,Module)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "isRegularSequence(List,Ring)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "isRegularSequence(Matrix)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "isRegularSequence(Matrix,Module)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "isRegularSequence(Matrix,Ring)" -- see isRegularSequence -- whether a list is regular over a ring or module
• "regularSequenceCheck(List,Module)" -- see regularSequenceCheck -- how much of a list is regular
• "regularSequenceCheck(List,Ring)" -- see regularSequenceCheck -- how much of a list is regular
• "regularSequenceCheck(Matrix,Module)" -- see regularSequenceCheck -- how much of a list is regular
• "regularSequenceCheck(Matrix,Ring)" -- see regularSequenceCheck -- how much of a list is regular
• "systemOfParameters(Ideal)" -- see systemOfParameters -- finds a relatively sparse homogeneous system of parameters of minimal degree in an ideal
• "systemOfParameters(Ring)" -- see systemOfParameters -- finds a relatively sparse homogeneous system of parameters of minimal degree in an ideal
• "systemOfParameters(ZZ,Ideal)" -- see systemOfParameters -- finds a relatively sparse homogeneous system of parameters of minimal degree in an ideal
• Symbols

## For the programmer

The object Depth is .