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.226142 seconds o4 = 1 |
i5 : time projDim(module I, Strategy=>StrategyRandom, MinDimension => 1) -- used 0.055896 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.
The object projDim is a method function with options.