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.893691 seconds
o17 : Ideal of R
|
i18 : time reflexify(J*R^1);
-- used 1.43947 seconds
|