newPackage( "KoszulDivisorOnPic14M8", Version => "0.2", Date => "April 29, 2012", Authors => {{Name => "Frank-Olaf Schreyer", Email => "schreyer@math.uni-sb.de", HomePage => "http://www.math.uni-sb.de/ag/schreyer/"} }, Headline => "Investigate the Koszul divisor on Pic^{14}(M_8)", DebuggingMode => true ) export{"randomCanonicalCurveGenus8with8Points", "randomCurveGenus8Degree14inP6", "getCurveOnKoszulDivisor", "unirationalityOfZ1", "randomEllipticNormalCurve", "experiment"} randomEllipticNormalCurve = method () randomEllipticNormalCurve(PolynomialRing) := R -> ( kk:=coefficientRing R; y:= symbol y; S:=kk[y_0..y_2]; -- homogeneous coordinate ring of P^2 E:= y_2^2*y_0-y_1^3+random(0,S)*y_1*y_0^2+random(0,S)*y_0^3; n:= numgens R-1; nO := saturate((ideal(y_0,y_1))^(n+1)+ideal E); d:= max flatten degrees nO; Hs:=gens nO; H:=Hs*random(source Hs,S^{ -d}); linsys1:=gens truncate(d,(ideal H +ideal E):nO); linsys := mingens ideal (linsys1 % ideal E); SE:=S/E; phi:=map(SE,R, sub(linsys,SE)); ideal mingens ker phi) TEST /// kk=ZZ/10007 R=kk[x_0..x_5] I=randomEllipticNormalCurve R; betti res I /// unirationalityOfZ1 = method() unirationalityOfZ1(PolynomialRing) := R -> ( if numgens R !=7 then error "expected a polynomial ring in 7 variables"; E:= randomEllipticNormalCurve R; pt:=ideal random(R^1, R^{6:-1}); while not dim pt == 1 do (pt=ideal random(R^1, R^{6:-1})); coordinates:= transpose syz transpose jacobian pt; --coordinates of the point fE:= res( E,LengthLimit=>2); V:=syz sub(fE.dd_2,coordinates); --the space of syzygies of E vanishing in pt s:=fE.dd_2*V*random(source V, R^{ -3}); -- a random syzygy CEpt:=fE.dd_1*syz transpose syz jacobian transpose s; -- the quadrics of the syzygy scheme IC:=(ideal CEpt:pt):E;-- the ideal of the random curve on Z1 IC) TEST /// kk=ZZ/10007 R=kk[x_0..x_6] I=unirationalityOfZ1 R; betti res I /// randomCanonicalCurveGenus8with8Points = method() randomCanonicalCurveGenus8with8Points PolynomialRing := R ->( --Input: R a polynomial ring in 8 variables, --Output: a pair of an ideal of a canonical curve C -- together with a list of ideals of 8 points --Method: Mukai's structure theorem on genus 8 curves. -- Note that the curves are have general Clifford index. FF:=coefficientRing R; p:=symbol p; -- coordinate ring of the Plucker space: P:=FF[flatten apply(6,j->apply(j,i->p_(i,j)))]; skewMatrix:=matrix table(6,6, (i,j) -> ( if ij then -p_(j,i) else 0_P)); -- ideal of the Grassmannian G(2,6): IGrass:=pfaffians(4,skewMatrix); points:=apply(8,k->exteriorPower(2,random(P^2,P^6))); ideals:=apply(points,pt->ideal( vars P*(syz pt**P^{-1}))); -- linear span of the points: L1 := intersect ideals; if degree L1 != 8 then return (null,null); L:= super basis(1,L1); if dim ideal L != 8 then return (null,null); phi:=vars P%L; -- coordinates as function on the span -- actually the last 8 coordinates represent a basis phi2:= matrix{toList(7:0_R)}|vars R; -- matrix for map from R to P/IC IC:=ideal (gens IGrass%L); --the ideal of C on the span -- obtained as the reduction of the Grassmann equation mod L IC2:=ideal mingens substitute(IC,phi2); idealsOfPts:=apply(ideals,Ipt-> ideal mingens ideal sub(gens Ipt%L,phi2)); (IC2,idealsOfPts)) randomCurveGenus8Degree14inP6=method(TypicalValue=>Ideal) randomCurveGenus8Degree14inP6 PolynomialRing := S -> ( -- Input: S coordinate ring of P^6 -- Output: ideal of a curve in P^6 x:=symbol x; FF:=coefficientRing S; R:=FF[x_0..x_7]; (I,points):=randomCanonicalCurveGenus8with8Points(R); if I === null then return null; D1:=intersect apply(4,i->points_i); -- divisors of degree 4 D2:=intersect apply(4,i->points_(4+i)); -- compute the complete linear system |K+D1-D2|, note K=H1 H1:=gens D1*random(source gens D1,R^{-1}); E1:=(I+ideal H1):D1; -- the residual divisor L:=mingens ideal(gens intersect(E1,D2)%I); if source L != R^{7:-2} then return null; -- the complete linear system -- note: all generatore of the intersection have degree 2. RI:=R/I; -- coordinate ring of C' in P^7 phi:=map(RI,S,substitute(L,RI)); ideal mingens ker phi) getCurveOnKoszulDivisor = method() getCurveOnKoszulDivisor(ZZ,PolynomialRing) := (rk,R) -> ( --since the Koszul divisor has codimension 1 in Pic^{14}(M_8) one can --find examples over finite field by searching I:=ideal 1_R; gensI:= mingens I;r:=-1;s:=I; while( while ( while(I=randomCurveGenus8Degree14inP6 R; not (class I ===Ideal)) do (); not(degree I==14 and genus I==8)) do (); gensI=mingens I; r=if rank source gensI == 8 then (s=ideal syz(gensI,DegreeLimit=>3);codim s) else -1; not (r==rk)) do (); I) experiment = (p,N) ->( kk:=ZZ/p; x := symbol x; R:=kk[x_0..x_6]; I:=ideal 1_R; gensI:= mingens I;r:=-1;s:=I; tally apply(N,i->( while ( while(I=randomCurveGenus8Degree14inP6 R; not (class I ===Ideal)) do (); not(degree I==14 and genus I==8)) do (); gensI=mingens I; r=if rank source gensI == 8 then (s=ideal syz(gensI,DegreeLimit=>3);codim s) else -1; (betti I, r))) ) beginDocumentation() doc /// Key KoszulDivisorOnPic14M8 Headline Construction of random curves of degree 14 and genus 8 Description Text In this package the unirationality parametrization of $Pic^{14}(M_8)$ due to Mukai is implemented. The main references are \ \ \ \ \ [Mu] S. Mukai, Curves, $K3$ surfaces and Fano $3$-folds of genus $\leq 10$. Algebraic geometry and commutative algebra, Vol. I, 357-377, Kinokuniya, Tokyo, 1988. \ \ \ \ \ [Ve] A. Verra, The unirationality of the moduli spaces of curves of genus 14 or lower. Compos. Math. 141 (2005), no. 6, 1425-1444. The main purpose of this package is to establish the reduciblity of the Koszul divisor as claimed in @HREF("http://arxiv.org/abs","Chiodo,Eisenbud,Farkas,Schreyer [2012]")@ /// doc /// Key randomEllipticNormalCurve (randomEllipticNormalCurve,PolynomialRing) Headline compute a random elliptic normal curve in P^n Usage I=randomEllipticNormalCurve Inputs R: PolynomialRing homogeneous coordinate ring of P^n Outputs I: Ideal the ideal of an elliptic normal curve of degree n+1 in P^n Description Text Starting from a random plane elliptic curve E in Weierstrass normal form we compute the elliptic normal curve reembedded by the linear system |O_E((n+1)o)| Example kk=ZZ/10007;R=kk[x_0..x_6]; I=randomEllipticNormalCurve R; betti res I /// doc /// Key unirationalityOfZ1 (unirationalityOfZ1,PolynomialRing) Headline compute a random normal curve of degree 14 and genus 8 in P^6 with an extra syzygy of rank 6 Usage I=unirationalityOfZ1 R Inputs R: PolynomialRing homogeneous coordinate ring of P^6 Outputs I: Ideal the ideal of a random normal curve C of degree 14 and genus 8 in P^6 with an extra syzygy Description Text Following the construction of Proposition 5.x in @HREF("http://arxiv.org/abs","Chiodo,Eisenbud,Farkas,Schreyer [2012]")@ we compute a random normal curve of degree 14 and genus 8 in P^6 with an extra syzygy of rank 6. The fact that the resulting curve is smooth is needed for the unirationality proof. Example kk=ZZ/10007;R=kk[x_0..x_6]; setRandomSeed("goodExample"); I=unirationalityOfZ1 R; betti res I R1=kk[x_0..x_6,MonomialOrder=>Eliminate 3]; R2=kk[x_3..x_6] -- coordinate ring of P^3 I1=selectInSubring(1, gens gb sub(I,R1)); I2=ideal mingens ideal sub(I1,R2); -- the curve projected into P^3 betti(fI2= res I2) degree I2==14, genus I2 ==8 singI2=I2+minors(2,jacobian I2); dim singI2 == 0 -- => I defines a smooth curve Text The elliptic curve and the point can be recovered from C Example kk=ZZ/10007;R=kk[x_0..x_6]; setRandomSeed("goodExample"); C=unirationalityOfZ1 R; betti (fC = res C) s=(fC.dd_2)_{0}; J=ideal(fC.dd_1*syz transpose syz jacobian transpose s); betti res J pt = ideal s; -- the ideal of the point dim pt == 1 CE =J:pt; betti res CE E=CE:C; -- the ideal of the elliptic normal curve betti res E dim E == 2, degree E == 7, genus E ==1 degree (E+C)==14, dim (E+pt)==0, dim (C+pt)==0 -- we check smmothness using a general projection to P^3 Er=sub(E,random(R^1,R^{7:-1})); R1=kk[x_4..x_6,x_0..x_3,MonomialOrder=>Eliminate 3]; R2=kk[x_0..x_3] -- coordinate ring of P^3 E1=selectInSubring(1, gens gb sub(Er,R1)); E2=ideal mingens ideal sub(E1,R2); -- the curve projected into P^3 betti(fE2= res E2) degree E2==7, genus E2 ==1 singE2=E2+minors(2,jacobian E2); dim singE2 == 0 -- => E is a smooth curve elliptic curve /// doc /// Key randomCanonicalCurveGenus8with8Points (randomCanonicalCurveGenus8with8Points,PolynomialRing) Headline compute a random canonical curve of genus 8 with 8 marked point Usage (I,idealsOfPts)=randomCanonicalCurveGenus8with8Points S Inputs S: PolynomialRing homogeneous coordinate ring of $\PP^7$ Outputs I: Ideal a canonical curve C of genus 8 idealsOfPts: List 8 ideals of K-rational points on C Description Text According to Mukai [Mu] any smooth curve of genus 8 and Clifford index 3 is the transversal intersection $C=\PP^7 \cap\ G(2,6) \subset \ \PP^{15}$. In particular this is true for the general curve of genus 8. Picking 8 points in the Grassmannian $G(2,6)$ at random and \PP^7 as their span gives the result. Example FF=ZZ/10007;S=FF[x_0..x_7]; (I,points)=randomCanonicalCurveGenus8with8Points S; betti res I points /// doc /// Key randomCurveGenus8Degree14inP6 (randomCurveGenus8Degree14inP6,PolynomialRing) Headline Compute a random normal curve of genus g=8 and degree 14 in \PP^6 Usage I=randomCurveGenus8Degree14inP6 S Inputs S: PolynomialRing in 7 variables Outputs I: Ideal of a curve of geometric genus 8 and degree 14 in \PP^6 Description Text The construction is based on Mukai's unirational description of $M_{8,8}$ of the moduli space of genus 8 with 8 marked points (see [Mu]). Example FF=ZZ/10007;S=FF[x_0..x_6]; I=randomCurveGenus8Degree14inP6 S; betti res I /// doc /// Key getCurveOnKoszulDivisor (getCurveOnKoszulDivisor,ZZ,PolynomialRing) Headline get a curve of genus 8 and degree 14 in \PP^6 on the Koszul divisor with syzygy of rank rk Usage I=getCurveOnKoszulDivisor(6,R) Inputs R: PolynomialRing in 7 variables rk: ZZ the desired rank of the extra syzygy Outputs I: Ideal of a curve of geometric genus 8 and degree 14 in \PP^6 with an extra syzygy of rank 8 Description Text The construction is based on Mukai's unirational description of $M_{8,8}$ of the moduli space of genus 8 with 8 marked points (see [Mu]). Over finite ground fields on can find curves with extra syzygies by searching. The example below shows that there exisits curves on the Koszul divisor with full rank extra syzygies. Example kk=ZZ/19;R=kk[x_0..x_6] setRandomSeed("getDesiredFCurveFast"); time I=getCurveOnKoszulDivisor(7,R); betti (fI= res I) R1=kk[x_0..x_6,MonomialOrder=>Eliminate 3]; R2=kk[x_3..x_6] -- coordinate ring of P^3 I1=selectInSubring(1, gens gb sub(I,R1)); I2=ideal mingens ideal sub(I1,R2); -- the curve projected into P^3 betti(fI2= res I2) degree I2==14, genus I2 ==8 singI2=I2+minors(2,jacobian I2); dim singI2 == 0 -- => I defines a smooth curve s=ideal mingens ideal (fI.dd_2)_{0} dim s == 0 -- => the extra syzygy has full rank 7 -- omega=Ext^1(I2,R2^{ -4}); -- betti res omega /// end restart uninstallPackage("KoszulDivisorOnPic14M8") installPackage("KoszulDivisorOnPic14M8",RerunExamples=>true,RemakeAllDocumentation=>true) viewHelp "KoszulDivisorOnPic14M8" loadPackage("KoszulDivisorOnPic14M8") viewHelp "KoszulDivisorOnPic14M8" time experiment(5,5^2) time experiment(7,7^2) time experiment(11,11^2) time experiment(13,13^2) time experiment(17,17^2) time experiment(19,10*19^2) -- used 11520.5 seconds 11520.5/60/60 --o10 = Tally{(total: 1 7, -1) => 3182} -- 0: 1 . -- 1: . 7 -- 0 1 -- (total: 1 8, 5) => 17 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 8, 6) => 248 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 8, 7) => 158 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 9, -1) => 5 -- 0: 1 . -- 1: . 7 -- 2: . 2 time experiment(23,10*23^2) --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p=29, kk=ZZ/p R=kk[x_0..x_6] setRandomSeed("ok") count=1 time tally apply(p,i->( while ( while( I=randomCurveGenus8Degree14inP6 R; not (class I ===Ideal) ) do (count=count+1); not(degree I==14 and genus I==8)) do (print count); gensI=mingens I; d=if rank source gensI == 8 then (s=ideal syz(gensI,DegreeLimit=>3);dim s) else -1; (betti gensI,d) )) 10*851.4/60/60 -- used 7979.29 seconds -- 0 1 --o13 = Tally{(total: 1 7, -1) => 2687} -- 0: 1 . -- 1: . 7 -- 0 1 -- (total: 1 8, 0) => 96 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 8, 1) => 114 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 8, 2) => 2 -- 0: 1 . -- 1: . 7 -- 2: . 1 -- 0 1 -- (total: 1 9, -1) => 1 -- 0: 1 . -- 1: . 7 -- 2: . 2 -- --o13 : Tally