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
|