// twoOval.sing // // Frank Sottile // 18 September 2001 // Amherst, MA // ///////////////////////////////////////////////////////////////////// // // Here, we investigate the families of quadrics simultaneously // tangent to the envelope of lines perpendicular to the x-axis and // tangent to the hyperbola of radius 1 centered at (0,2,0). // (These lines are transversal to both the x-axis and the y-z line // at infinity.) // ///////////////////////////////////////////////////////////////////// LIB "primdec.lib"; int t = timer; option(redSB); ring R = 0, (a,b,c,d,e,f,g,h,x,y), (lp); ideal I = e*y-g^2+e*h-f^2 , -e*h+f^2-a*h+c^2 , -a*y+d^2+3*a*h-3*c^2 , -e*y+g^2+a*h-c^2 , a*y-d^2+3*e*h-3*f^2 , -3*e*y+3*g^2+a*y-d^2 , b*h-c*f , b*y-d*g , -d*f+2*b*x-c*g , a*x-d*c , e*x-g*f ; ideal G = std(I); print("This is the degree of the original ideal; which has irrelevant components"); print("as well as relevant ones that we wish to study"); degree(G); // // The irrelevant ideal consists of those a -- z for which the 2-2 curve // is identically zero. One way for that to happen is if the 2 x 2 // minors of the quadratic form all vanish, that is, if the quadric // has rank 1 // print("We saturate by the ideal of rank 1 quadrics"); ideal IR1 = a*e-b^2 ,a*f-c*b ,a*g-d*b ,b*f-c*e ,b*g-d*e ,c*g-d*f ,a*h-c^2 ,a*x-d*c ,b*h-c*f ,b*x-d*f ,c*x-d*h ,a*y-d^2 ,b*x-c*g ,b*y-d*g ,c*y-d*x ,e*h-f^2 ,e*x-g*f ,f*x-g*h ,e*y-g^2 ,f*y-g*x ,h*y-x^2 ; G = std(quotient(G,IR1)); degree(G); ideal IR2 = g,f,e,d,c,b,a; print("Now we saturate by an ideal defining a trivial 2,2 curve"); print("Saturate by (g,f,e,d,c,b,a)."); G = std(sat(G,IR2)[1]); degree(G); print("Now we saturate by an ideal defining a trivial 2,2 curve"); print("Saturate by (y,x,h,g,f,d,c)."); ideal IR3 = y,x,h,g,f,d,c; G = std(sat(G,IR3)[1]); degree(G); print("Thus we have finaly obtain an ideal of dimension 2, so that it"); print("defines curves."); short=0; list L = facstd(G); short=0; print("The first component of the ideal has degree 4, and is reducible, but"); print("does not contain any real points"); std(L[1]); degree(std(L[1])); print("/////////////////////////////////////////"); print("The same is true for the second component"); std(L[2]); degree(std(L[2])); print("/////////////////////////////////////////"); print("And the third component"); std(L[3]); degree(std(L[3])); print("/////////////////////////////////////////"); print("And the fourth component"); std(L[4]); degree(std(L[4])); print("/////////////////////////////////////////"); print("The last 4 components each have degree 2 and are defined over the"); print("real numbers, defining RATIONAL components !"); std(L[5]); degree(std(L[5])); print("/////////////////////////////////////////"); std(L[6]); degree(std(L[6])); print("/////////////////////////////////////////"); std(L[7]); degree(std(L[7])); print("/////////////////////////////////////////"); std(L[8]); degree(std(L[8])); print("/////////////////////////////////////////"); timer-t; quit;