This creates a projection to a hypersurface. It differs from genericProjection(codim I - 1, I) as it only tries to find a hypersurface equation that vanishes along the projection, instead of finding one that vanishes exactly at the projection. This can be faster, and can be useful for finding points.
i1 : R=ZZ/5[x,y,z]; |
i2 : I = ideal(random(3,R)-2, random(2,R)); o2 : Ideal of R |
i3 : projectionToHypersurface(I) ZZ 6 5 4 2 5 6 o3 = (map(R,--[y..z],{x, y - 2z}), ideal(y - 2y z - 2y z - 2y*z + z - 5 ------------------------------------------------------------------------ 2 2 2y z + y*z - 1)) o3 : Sequence |
i4 : projectionToHypersurface(R/I) R o4 = (map(------------------------------------------------------------------- 3 2 3 2 2 2 2 3 (- 2x - 2x*y - 2y + x z - y z + 2x*z - 2y*z - 2z - 2, - 2x*z ------------------------------------------------------------------------ ZZ --[y..z] 5 -------------,---------------------------------------------------------- 2 6 5 4 2 2 4 5 3 2 2 3 + 2y*z - 2z ) y - y z + 2y z - 2y z - y*z + 2y - y z - y*z + z + ------------------------------------------------------------------------ ZZ --[y..z] 5 -,{y + 2z, x + z}), ---------------------------------------------------- 6 5 4 2 2 4 5 3 2 2 1 y - y z + 2y z - 2y z - y*z + 2y - y z - y*z + ------------------------------------------------------------------------ -------) 3 z + 1 o4 : Sequence |
If you already know the codimension is c, you can set Codimension=>c so the function does not compute it.
The object projectionToHypersurface is a method function with options.