Get the reflexification or double dual (in the case of a normal ring, S2-ification) of an ideal I or module M. Recall the double dual is defined to be Hom(Hom(M, R), R).
i1 : R = QQ[x,y,z]/ideal(x^2-y*z); |
i2 : m = ideal(x,y,z); o2 : Ideal of R |
i3 : reflexify(m) o3 = ideal 1 o3 : Ideal of R |
i4 : I = ideal(x,y); o4 : Ideal of R |
i5 : reflexify(I) o5 = ideal (y, x) o5 : Ideal of R |
i6 : reflexify(I^2) o6 = ideal y o6 : Ideal of R |
i7 : reflexify(I^3) 2 o7 = ideal (y , x*y) o7 : Ideal of R |
We also have an example of reflexifying a module.
i8 : R = QQ[x,y,z]/ideal(x^2-y*z); |
i9 : m = ideal(x,y,z); o9 : Ideal of R |
i10 : prune reflexify(m*R^2) 2 o10 = R o10 : R-module, free |
i11 : I = ideal(x,y); o11 : Ideal of R |
i12 : prune reflexify(I*R^1) o12 = cokernel {1} | x -y | {1} | -z x | 2 o12 : R-module, quotient of R |
i13 : prune reflexify(I^2*R^1) 1 o13 = R o13 : R-module, free, degrees {1} |
Generally speaking, it is faster to reflexify ideals as opposed to modules. Consider the following example of a point on an elliptic curve.
i14 : R = QQ[x,y,z]/ideal(-y^2*z +x^3 + x^2*z + x*z^2+z^3); |
i15 : I = ideal(x-z,y-2*z); o15 : Ideal of R |
i16 : J = I^21; o16 : Ideal of R |
i17 : time reflexify(J); -- used 0.522873 seconds o17 : Ideal of R |
i18 : time reflexify(J*R^1); -- used 0.791824 seconds |