The hyperelliptic locus Vhyp in Q ⊂ℙ11 is is birational to a product of a Hirzebruch surface F with 3 copies of ℙ1. This function prints the commands which compute the parametrization following the recipy outlined in Section 2.1 of [F.-O. Schreyer and I. Stenger, Marked Godeaux surfaces with special bicanonical fibers. https://arxiv.org/pdf/2201.12065.pdf].
i1 : Jhyp = computeParametrizationOfHypLocus(QQ); Sa =ring Jhyp kk=coefficientRing Sa Lom=adjointPresentation Jhyp; betti Lom P19= ring Lom betti Lom J1=ann coker Lom; dim J1, degree J1, betti J1 -- J1 contains components which are supported on coordinate hyperplanes in P19. -- We remove these now. betti(J1s=J1:P19_0) degree J1s scan(20,i->(J1s=J1s:ideal P19_i)) degree J1s, betti J1s -* the residual part is irrelevant: betti(Jrest=J1:J1s) dim Jrest, degree Jrest, betti Jrest elapsedTime cJrest=decompose Jrest; tally apply(cJrest,c->(codim c, degree c, dim c, betti c)) -- => none of these components lie in the image of V(Jhyp) --> P19 *- betti (fJ1s=res(ideal (gens J1s)_{0..36},DegreeLimit=>1)) vertex=trim ideal fJ1s.dd_5 varsP11= reverse (entries gens vertex)_0 P11=kk[varsP11] scroll=trim sub(ann coker transpose fJ1s.dd_5,P11) fscroll=res scroll fscroll.dd_5 -- We compute the 2x6 matrix of the scroll using a scrollar syzygy koszulComplex=res trim ideal (fscroll.dd_5_{0}) dfscroll=dual fscroll[-5]**P11^{-6} extended=extend(koszulComplex,dfscroll,matrix{{1,0,0,0,0}}); m2x6=map(P11^2,P11^{6:-1},transpose (koszulComplex.dd_6|extended_5)) assert(minors(2,m2x6)==scroll) -- We compute the elimnation ideal J2 elimVars=(entries mingens ideal(vars P19%vertex))_0 J2=sub(eliminate(J1s,elimVars),P11) betti res J2 -- We compute a change of coordinates which identifies the scroll with P5xP1 -- in its Segre embedding jacobian flatten m2x6 aut=vars P11 * inverse jacobian flatten m2x6 J2normal=sub(sub(J2,P11),aut) m2x6normal=sub(m2x6,aut) -- We introduce the Cox ring of P5xP1 w=symbol w P5xP1=kk[c_0..c_5,w_0,w_1,Degrees=>{6:{1,0},2:{0,1}}] cs=basis({1,1},P5xP1) bs=flatten m2x6normal subCox=apply(12,i->bs_(0,i)=>cs_(0,i)) phiCox=map(P5xP1,P11,subCox) -- We saturate the image of J2 in the Cox ring V4=gens (ideal mingens phiCox J2normal:ideal basis({0,1},P5xP1)) ideal V4 use ring V4 m1=matrix{{c_0,c_2},{-c_4*w_1,c_5*(w_0-w_1)}} assert(det m1==V4_(0,0)) m2=matrix{{c_1,c_2},{-c_4*w_1,c_3*w_0}} assert(det m2== V4_(0,1)) -- We discovered two relative rank 4 quadrics P5xP1xP1xP1=kk[c_0..c_5,w_0,w_1,y_0..z_1,Degrees=>{6:{1,0,0,0},2:{0,1,0,0},2:{0,0,1,0},2:{0,0,0,1}}] J2sc=ideal (sub(m1,P5xP1xP1xP1)*transpose basis({0,0,0,1},P5xP1xP1xP1))+ ideal (sub(m2,P5xP1xP1xP1)*transpose basis({0,0,1,0},P5xP1xP1xP1)) sJ2sc=syz(m12=diff(basis({1,0,0,0},P5xP1xP1xP1),transpose gens J2sc)) isHomogeneous sJ2sc degrees source sJ2sc autinv=vars P11 *jacobian flatten m2x6 sub(aut,autinv) P1bundleOver3xP1=kk[v_0,v_1,w_0,w_1,y_0..z_1,Degrees=>{{1,2,0,0},{1,0,0,0},2:{0,1,0,0},2:{0,0,1,0},2:{0,0,0,1}}] paraV4=map(P1bundleOver3xP1^1,,transpose (sub(sJ2sc,P1bundleOver3xP1)*matrix{{v_0},{v_1}})) isHomogeneous paraV4 betti paraV4 paraV4'=flatten (paraV4**transpose matrix{{w_0,w_1}})*inverse sub(jacobian flatten m2x6,kk) -- paraV4' gives a parametrization of V(J2) sub(J2,paraV4') degrees map(P1bundleOver3xP1^1,,paraV4') u=symbol u Pu=kk[toList(u_0..u_8)|gens P1bundleOver3xP1,Degrees=>{{1,0,0,0,0},8:{1,1,3,1,1},{0,1,2,0,0},{0,1,0,0,0},2:{0,0,1,0,0},2:{0,0,0,1,0},2:{0,0,0,0,1}}] uparaV4=map(Pu^1,,u_0*sub(paraV4',Pu)) isHomogeneous uparaV4, degrees source uparaV4 apply(8,i->(reverse elimVars)_i=>Pu_(i+1)) -- to use the elimVars in reversed order gives slightly better equations in the final parametrization psi=map(Pu,P19,apply(8,i->(reverse elimVars)_i=>Pu_(i+1))|apply(12,i->sub(P11_i,P19)=> uparaV4_(0,i))) betti(J3=psi J1s) -- J3 defines in P8-bundle over V4 the fibers of V(J1s)-->V4 isHomogeneous J3 -- we saturate with respect to u_0 to get some equations which are linear in the u's betti(J3u=saturate(J3,ideal u_0)) isHomogeneous J3u L1=select(rank source gens J3u, i->first (degrees source (gens J3u)_{i})_0==1) tally degrees source (gens J3u)_L1 isHomogeneous (gens J3u)_L1 -- we solve this linear system of equations for u's s0=diff((vars Pu)_{0..8},transpose (gens J3u)_L1) isHomogeneous s0 s1=syz s0 betti s0, betti s1 degrees source s1 P4bundle=kk[toList(t_0..t_4)|gens P1bundleOver3xP1,Degrees=>-degrees source s1|apply(degrees source vars P1bundleOver3xP1,c->prepend(0,c))] subToP4bundle=(vars P4bundle)_{0..4}*transpose sub(s1,P4bundle) rho=map(P4bundle,Pu,apply(9,i->Pu_i=>subToP4bundle_(0,i))|apply(numgens P1bundleOver3xP1,i->Pu_(i+9)=>P4bundle_(i+5))) isHomogeneous rho J4=(rho J3u); isHomogeneous J4 -- cJ4=decompose J4 -- J4 defines the rational normal curve fibration in the P4-bundle generically. -- We have to remove some primary components of J4. betti(J4t=saturate(J4,ideal (w_0-w_1))) betti(J4t=saturate(J4t,ideal (w_0))) betti(J4t=saturate(J4t,ideal (w_1))) fJ4t=res J4t -- the resolution of a relative rational normal curve fibration over the P1bundleOver3xP1 apply(4,i->tally degrees fJ4t_i) -- Macaulay discovers a relative scrollar syzygy. We compute the corresponding 4x2 matrix: row0=mingens ideal fJ4t.dd_3_{0} frow=res image row0 dualfJ = dual fJ4t[-3] frow0=(chainComplex( prepend(row0,apply(3,i->frow.dd_(i+1)))))**P4bundle^(-degrees target (dualfJ.dd_1)^{0}) extended=extend(frow0,dualfJ,map(frow0_0,dualfJ_0,matrix{{1_P4bundle,0,0}})) betti(mat4x2=extended_3|frow0.dd_4) -- the matrix whose minorsdefine the syzygy scheme assert(minors(2,mat4x2)==J4t) isHomogeneous mat4x2 -- We compute the relative adjoint tensor of mat6x4 P1xP4bundle=kk[x_0,x_1]**P4bundle adj=diff (sub(transpose (vars P4bundle)_{0..4},P1xP4bundle), matrix{{x_1,x_0}}*sub(transpose mat4x2,P1xP4bundle)) m5x4=map(source (vars P1xP4bundle)_{2..6},,adj) tally degrees source m5x4 ,tally degrees target m5x4 betti(sadj=syz transpose m5x4) P1bundleOver4xP1=kk[x_0,x_1]**P1bundleOver3xP1 toP1xP4bundle=sub(sadj,P1bundleOver4xP1) alpha=map(P1bundleOver4xP1,P1xP4bundle, apply(5,i->P1xP4bundle_(i+2)=>toP1xP4bundle_(i,0))| apply(8,i->P1xP4bundle_(7+i)=>P1bundleOver4xP1_(2+i))| apply(2,i->P1xP4bundle_(i)=>P1bundleOver4xP1_i) ) alpha rho psi sub(rho psi vars P19,P1xP4bundle) paraJ1s=map(P1bundleOver4xP1^1,,alpha sub(rho psi vars P19,P1xP4bundle)) isHomogeneous paraJ1s -- paraJs give the parametrization of V(J1s) in P^19 sub(J1s,paraJ1s) betti (paraJPrelim=transpose syz transpose map(P1bundleOver4xP1^12,,sub(Lom,paraJ1s))) -- paraJPrelim is a parmatrization of the hyperelliptic loci V(Jhyp) sub(Jhyp,paraJPrelim) netList apply(12,i->factor paraJPrelim_(0,i)) vars P1bundleOver4xP1 -- sort variables and simplify factors finalCox=kk[(gens P1bundleOver4xP1)_{2..5,0,1,6..9},Degrees=>apply((gens P1bundleOver4xP1)_{2..5,0,1,6..9},m->degree m)] vars finalCox paraJPrelim1=sub(paraJPrelim,finalCox) paraJ=sub(paraJPrelim1,{w_0=>w_0+w_1}) netList apply(12,i->factor paraJ_(0,i)) paraHyp=map(finalCox,Sa,paraJ) paraHyp1=precomputedHyperellipticPoint(Sa) matrix paraHyp== sub(matrix paraHyp1,vars finalCox) o1 : Ideal of QQ[a , a , a , a , a , a , a , a , a , a , a , a ] 3,2,3 3,1,3 3,0,3 2,2,3 2,1,2 2,0,2 1,1,3 1,1,2 1,0,1 0,0,3 0,0,2 0,0,1 |