Macaulay2 » Documentation
Packages » Divisor :: reflexivePower
next | previous | forward | backward | up | index | toc

reflexivePower -- computes a reflexive power of an ideal in a normal domain



This function returns the $n$-th reflexive power of $I$. By definition this is the reflexification of $I^n$, or in other words, $Hom(Hom(I^n, R), R)$.

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

o2 : Ideal of R
i3 : reflexivePower(5, J)

             3     2
o3 = ideal (y , x*y )

o3 : Ideal of R
i4 : reflexivePower(6, J)

o4 = ideal y

o4 : Ideal of R

This function is typically much faster than reflexifying $I^n$ however. We can obtain this speedup, because in a normal domain, the reflexification of $I^n$ is the same as the reflexification of the ideal generated by the $n$-th powers of the generators of $I$. Consider the example of a cone over a point on an elliptic curve.

i5 : R = QQ[x,y,z]/ideal(-y^2*z +x^3 + x^2*z + x*z^2+z^3);
i6 : I = ideal(x-z,y-2*z);

o6 : Ideal of R
i7 : time J20a = reflexivePower(20, I);
 -- used 0.0550234s (cpu); 0.0555045s (thread); 0s (gc)

o7 : Ideal of R
i8 : I20 = I^20;

o8 : Ideal of R
i9 : time J20b = reflexify(I20);
 -- used 0.403304s (cpu); 0.333674s (thread); 0s (gc)

o9 : Ideal of R
i10 : J20a == J20b

o10 = true

This passes the Strategy option to a reflexify call. Valid options are IdealStrategy and ModuleStrategy.

i11 : R = QQ[x,y,z]/ideal(-y^2*z +x^3 + x^2*z + x*z^2+z^3);
i12 : I = ideal(x-z,y-2*z);

o12 : Ideal of R
i13 : time J1 = reflexivePower(20, I, Strategy=>IdealStrategy);
 -- used 0.0637895s (cpu); 0.0657466s (thread); 0s (gc)

o13 : Ideal of R
i14 : time J2 = reflexivePower(20, I, Strategy=>ModuleStrategy);
 -- used 0.168077s (cpu); 0.169002s (thread); 0s (gc)

o14 : Ideal of R
i15 : J1 == J2

o15 = true

See also

Ways to use reflexivePower :

For the programmer

The object reflexivePower is a method function with options.