next | previous | forward | backward | up | top | index | toc | Macaulay2 website
FastMinors :: projDim

projDim -- finds an upper bound for the projective dimension of a module



The function pdim returns the length of a projective resolution. If the module passed is not homogeneous, then the projective resolution may not be minimal and so pdim can give the wrong answer. This function projDim tries to improve this bound by considering ideals of appropriately sized minors of the resolution (starting from the end of the resolution and working backwards). Using the option MinDimension (default value 0) gives a lower bound on the projective dimension, increasing it can thus improve the speed of computation.

i1 : R = QQ[x,y];
i2 : I = ideal((x^3+y)^2, (x^2+y^2)^2, (x+y^3)^2, (x*y)^2);

o2 : Ideal of R
i3 : pdim(module I)

o3 = 2
i4 : time projDim(module I, Strategy=>StrategyRandom)
     -- used 0.442055 seconds

o4 = 1
i5 : time projDim(module I, Strategy=>StrategyRandom, MinDimension => 1)
     -- used 0.0439606 seconds

o5 = 1

The option MaxMinors can be used to control how many minors are computed at each step. If this is not specified, the number of minors is a function of the dimension $d$ of the polynomial ring and the possible minors $c$. Specifically it is 10 * d + 2 * log_1.3(c). Otherwise the user can set the option MaxMinors => ZZ to specify that a fixed integer is used for each step. Alternatively, the user can control the number of minors computed at each step by setting the option MaxMinors => List. In this case, the list specifies how many minors to be computed at each step, (working backwards). Finally, you can also set MaxMinors to be a custom function of the dimension $d$ of the polynomial ring and the maximum number of minors.

See also

Ways to use projDim :

For the programmer

The object projDim is a method function with options.