In most cases this is equivalent to phi^* I, which is faster but may not take into account other representations of the map.
In the example below, we apply the method to check the birationality of a map (deterministically).
i1 : phi = quadroQuadricCremonaTransformation(5,1) o1 = -- rational map -- source: Proj(QQ[x, y, z, t, u, v]) target: Proj(QQ[x, y, z, t, u, v]) defining forms: { 2 y*z - v , 2 x*z - u , 2 x*y - t , - z*t + u*v, - y*u + t*v, t*u - x*v } o1 : RationalMap (Cremona transformation of PP^5 of type (2,2)) |
i2 : K := frac(QQ[vars(0..5)]); phi = phi ** K o3 = -- rational map -- source: Proj(frac(QQ[a..f])[x, y, z, t, u, v]) target: Proj(frac(QQ[a..f])[x, y, z, t, u, v]) defining forms: { 2 y*z - v , 2 x*z - u , 2 x*y - t , - z*t + u*v, - y*u + t*v, t*u - x*v } o3 : RationalMap (quadratic rational map from PP^5 to PP^5) |
i4 : p = trim minors(2,(vars K)||(vars source phi)) -e -d -c -b -a o4 = ideal (u + --v, t + --v, z + --v, y + --v, x + --v) f f f f f o4 : Ideal of frac(QQ[a..f])[x, y, z, t, u, v] |
i5 : q = phi p 2 2 b*e - d*f c*d - e*f - a*b + d - a*c + e o5 = ideal (u + ---------v, t + ---------v, z + ----------v, y + ----------v, d*e - a*f d*e - a*f d*e - a*f d*e - a*f ------------------------------------------------------------------------ 2 - b*c + f x + ----------v) d*e - a*f o5 : Ideal of frac(QQ[a..f])[x, y, z, t, u, v] |
i6 : time phi^** q -- used 0.667707 seconds -e -d -c -b -a o6 = ideal (u + --v, t + --v, z + --v, y + --v, x + --v) f f f f f o6 : Ideal of frac(QQ[a..f])[x, y, z, t, u, v] |
i7 : oo == p o7 = true |