next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Divisor :: dualize(..., Strategy => ...)

dualize(..., Strategy => ...) -- strategies to compute Hom(M, R)

Synopsis

Description

If Strategy => IdealStrategy, then dualize assume the module is isomorphic to an ideal, embeds it as an ideal, and computes the dual by forming a colon. ModuleStrategy simply computes the Hom. The default Strategy for modules is ModuleStrategy, and the default Strategy for ideals is IdealStrategy. This is because there is overhead using the opposite strategy (involving embedding modules as ideals). Frequently IdealStrategy is faster, but not always. Consider first a D4 singularity in characteristic 2.

i1 : R = ZZ/2[x,y,z]/ideal(z^2-x*y*z-x^2*y-x*y^2);
i2 : m = ideal(x,y,z);

o2 : Ideal of R
i3 : J = m^9;

o3 : Ideal of R
i4 : M = J*R^1;
i5 : time dualize(J, Strategy=>IdealStrategy);
     -- used 0.0820884 seconds

o5 : Ideal of R
i6 : time dualize(J, Strategy=>ModuleStrategy);
     -- used 0.585946 seconds

o6 : Ideal of R
i7 : time dualize(M, Strategy=>IdealStrategy);
     -- used 0.69621 seconds
i8 : time dualize(M, Strategy=>ModuleStrategy);
     -- used 0.00307147 seconds
i9 : time embedAsIdeal dualize(M, Strategy=>ModuleStrategy);
     -- used 0.00179704 seconds

o9 : Ideal of R

For monomial ideals in toric rings, frequently ModuleStrategy appears faster.

i10 : R = ZZ/7[x,y,u,v]/ideal(x*y-u*v);
i11 : I = ideal(x,u);

o11 : Ideal of R
i12 : J = I^15;

o12 : Ideal of R
i13 : time dualize(J, Strategy=>IdealStrategy);
     -- used 0.0786307 seconds

o13 : Ideal of R
i14 : time dualize(J, Strategy=>ModuleStrategy);
     -- used 0.00487787 seconds

o14 : Ideal of R

Further information

See also