+ M2 --no-readline --print-width 98
Macaulay2, version 1.15
--loading configuration for package "FourTiTwo" from file /home/ubuntuasus/.Macaulay2/init-FourTiTwo.m2
--loading configuration for package "Topcom" from file /home/ubuntuasus/.Macaulay2/init-Topcom.m2
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases,
               PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations

i1 : 
     -----------------------------------------------------
     -- Theorem 4.2 and Remark 4.4: Unirationality of M_{g,n}^u 
     -----------------------------------------------------
     -- M_10,6^u
     -----------------------------------------------------
     load "UnirationalPointedCurves.m2"

i2 : -- We start from a general curve of genus 10.
     p=1009;

i3 : Fp=ZZ/p;

i4 : S=Fp[y_0..y_9];

i5 : needsPackage("RandomCanonicalCurves")

o5 = RandomCanonicalCurves

o5 : Package

i6 : C=(random canonicalCurve)(10,S);

o6 : Ideal of S

i7 : (genus C==10,degree C==18, codim C==8)

o7 = (true, true, true)

o7 : Sequence

i8 : -- We pick 5 points on C, and compute the Serre dual model which embeds C in P^4.
     pts=intersect for i from 1 to 5 list randomKRationalPoint(C);

o8 : Ideal of S

i9 : R=ZZ/p[x_0..x_4];

i10 : SC=S/C;

i11 : phi=map(SC,R,((gens pts)_{0..4}));

o11 : RingMap SC <--- R

i12 : C'=kernel phi;

o12 : Ideal of R

i13 : -- We check that C' is a smooth genus 10 degree 13 curve in P^4.
      (codim C'==3, degree C'==13, genus C'==10)

o13 = (true, true, true)

o13 : Sequence

i14 : isSmoothPn(C')

o14 = true

i15 : -- We perform a liaison with respect to 3 cubic hypersurfaces.
      CI=cIntContaining({3,3,3},C');

o15 : Ideal of R

i16 : D=saturate(CI:C');

o16 : Ideal of R

i17 : -- D is a smooth curve of genus 12 and degree 14.
      (codim D==3, degree D==14, genus D==12)

o17 = (true, true, true)

o17 : Sequence

i18 : isSmoothPn(D)

o18 = true

i19 : -- We verify that C' and D intersect only in ordinary double points.
      isOrdDoublePointsPn(C',D)

o19 = true

i20 : -- We check that D lies on 4 cubic hypersurfaces.
      tally degrees D

o20 = Tally{{3} => 4}
            {4} => 5

o20 : Tally

i21 : -- So we can impose the choice of one more point.
      NPoints=apply(1,i->ideal(random(1,R),random(1,R),random(1,R),random(1,R)));

i22 : DandNPoints=intersect(NPoints|{D});

o22 : Ideal of R

i23 : -- We take the three remaining cubic hypersurfaces and do liaison backwards.
      CI=cIntContaining({3,3,3},DandNPoints);

o23 : Ideal of R

i24 : Cnew=saturate(CI:D);

o24 : Ideal of R

i25 : -- We check that Cnew is a smooth genus 10 degree 13 curve in P^4 containing the point.
      (genus Cnew==10,degree Cnew==13, codim Cnew==3)

o25 = (true, true, true)

o25 : Sequence

i26 : isSmoothPn(Cnew)

o26 = true

i27 : isSubset(Cnew,NPoints_0)

o27 = true

i28 : 
      -----------------------------------------------------
      -- M_10,7^u
      -----------------------------------------------------
      restart
Macaulay2, version 1.15
--loading configuration for package "FourTiTwo" from file /home/ubuntuasus/.Macaulay2/init-FourTiTwo.m2
--loading configuration for package "Topcom" from file /home/ubuntuasus/.Macaulay2/init-Topcom.m2
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases,
               PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations

i1 : load "UnirationalPointedCurves.m2"

i2 : -- We start from a general curve of genus 10.
     p=1009;

i3 : Fp=ZZ/p;

i4 : S=Fp[y_0..y_9];

i5 : needsPackage("RandomCanonicalCurves")

o5 = RandomCanonicalCurves

o5 : Package

i6 : C=(random canonicalCurve)(10,S);

o6 : Ideal of S

i7 : (genus C==10,degree C==18, codim C==8)

o7 = (true, true, true)

o7 : Sequence

i8 : -- We pick 6 points on C, and compute the Serre dual model which embeds C in P^3.
     pts=intersect for i from 1 to 6 list randomKRationalPoint(C);

o8 : Ideal of S

i9 : R=ZZ/p[x_0..x_3];

i10 : SC=S/C;

i11 : phi=map(SC,R,((gens pts)_{0..3}));

o11 : RingMap SC <--- R

i12 : C'=kernel phi;

o12 : Ideal of R

i13 : -- We check that C' is a smooth genus 10 degree 12 curve in P^3.
      (codim C'==2, degree C'==12, genus C'==10)

o13 = (true, true, true)

o13 : Sequence

i14 : isSmoothPn(C')

o14 = true

i15 : -- We perform a liaison with respect to 2 quintic hypersurfaces.
      CI=cIntContaining({5,5},C');

o15 : Ideal of R

i16 : D=saturate(CI:C');

o16 : Ideal of R

i17 : -- D is a smooth curve of genus 12 and degree 14.
      (codim D==2, degree D==13, genus D==13)

o17 = (true, true, true)

o17 : Sequence

i18 : isSmoothPn(D)

o18 = true

i19 : -- We verify that C' and D intersect only in ordinary double points.
      isOrdDoublePointsPn(C',D)

o19 = true

i20 : -- We check that D lies on 3 quintic hypersurfaces.
      tally degrees D

o20 = Tally{{5} => 3}
            {6} => 6

o20 : Tally

i21 : -- So we can impose the choice of one more point.
      NPoints=apply(1,i->ideal(random(1,R),random(1,R),random(1,R)));

i22 : DandNPoints=intersect(NPoints|{D});

o22 : Ideal of R

i23 : -- We take the three remaining cubic hypersurfaces and do liaison backwards.
      CI=cIntContaining({5,5},DandNPoints);

o23 : Ideal of R

i24 : Cnew=saturate(CI:D);

o24 : Ideal of R

i25 : -- We check that Cnew is a smooth genus 10 degree 12 curve in P^3 containing the point.
      (genus Cnew==10,degree Cnew==12, codim Cnew==2)

o25 = (true, true, true)

o25 : Sequence

i26 : isSmoothPn(Cnew)

o26 = true

i27 : isSubset(Cnew,NPoints_0)

o27 = true

i28 : 
      -----------------------------------------------------
      -- M_11,7^u
      -----------------------------------------------------
      restart
Macaulay2, version 1.15
--loading configuration for package "FourTiTwo" from file /home/ubuntuasus/.Macaulay2/init-FourTiTwo.m2
--loading configuration for package "Topcom" from file /home/ubuntuasus/.Macaulay2/init-Topcom.m2
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases,
               PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations

i1 : load "UnirationalPointedCurves.m2"

i2 : -- We start from a general curve of genus 11.
     p=1009;

i3 : Fp=ZZ/p;

i4 : S=Fp[y_0..y_10];

i5 : needsPackage("RandomCanonicalCurves")

o5 = RandomCanonicalCurves

o5 : Package

i6 : C=(random canonicalCurve)(11,S);

o6 : Ideal of S

i7 : (genus C==11,degree C==20, codim C==9)

o7 = (true, true, true)

o7 : Sequence

i8 : -- We pick 6 points on C, and compute the Serre dual model which embeds C in P^4.
     pts=intersect for i from 1 to 6 list randomKRationalPoint(C);

o8 : Ideal of S

i9 : R=ZZ/p[x_0..x_4];

i10 : SC=S/C;

i11 : phi=map(SC,R,((gens pts)_{0..4}));

o11 : RingMap SC <--- R

i12 : C'=kernel phi;

o12 : Ideal of R

i13 : -- We check that C' is a smooth genus 11 degree 14 curve in P^4.
      (codim C'==3, degree C'==14, genus C'==11)

o13 = (true, true, true)

o13 : Sequence

i14 : isSmoothPn(C')

o14 = true

i15 : -- We perform a liaison with respect to 3 cubic hypersurfaces.
      CI=cIntContaining({3,3,3},C');

o15 : Ideal of R

i16 : D=saturate(CI:C');

o16 : Ideal of R

i17 : -- D is a smooth curve of genus 9 and degree 13.
      (codim D==3, degree D==13, genus D==9)

o17 = (true, true, true)

o17 : Sequence

i18 : isSmoothPn(D)

o18 = true

i19 : -- We verify that C' and D intersect only in ordinary double points.
      isOrdDoublePointsPn(C',D)

o19 = true

i20 : -- We check that D lies on 4 cubic hypersurfaces.
      tally degrees D

o20 = Tally{{3} => 4}
            {4} => 6

o20 : Tally

i21 : -- So we can impose the choice of one more point.
      NPoints=apply(1,i->ideal(random(1,R),random(1,R),random(1,R),random(1,R)));

i22 : DandNPoints=intersect(NPoints|{D});

o22 : Ideal of R

i23 : -- We take the three remaining cubic hypersurfaces and do liaison backwards.
      CI=cIntContaining({3,3,3},DandNPoints);

o23 : Ideal of R

i24 : Cnew=saturate(CI:D);

o24 : Ideal of R

i25 : -- We check that Cnew is a smooth genus 11 degree 14 curve in P^4 containing the point.
      (genus Cnew==11,degree Cnew==14, codim Cnew==3)

o25 = (true, true, true)

o25 : Sequence

i26 : isSmoothPn(Cnew)

o26 = true

i27 : isSubset(Cnew,NPoints_0)

o27 = true

i28 : 
      -----------------------------------------------------
      -- M_12,5^u and M_12,6^u
      -----------------------------------------------------
      restart
Macaulay2, version 1.15
--loading configuration for package "FourTiTwo" from file /home/ubuntuasus/.Macaulay2/init-FourTiTwo.m2
--loading configuration for package "Topcom" from file /home/ubuntuasus/.Macaulay2/init-Topcom.m2
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases,
               PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations

i1 : load "UnirationalPointedCurves.m2"

i2 : -- We produce a dominant family of curves of genus 9 and degree 15 in P^6.
     -- By Riemann-Roch, it suffices to produce a general degree 15 line bundle L.
     -- We start from a general curve of genus 9
     p=1009;

i3 : Fp=ZZ/p;

i4 : S=Fp[y_0..y_8];

i5 : needsPackage("RandomCanonicalCurves")

o5 = RandomCanonicalCurves

o5 : Package

i6 : C=(random canonicalCurve)(9,S);

o6 : Ideal of S

i7 : (genus C==9,degree C==16, codim C==7)

o7 = (true, true, true)

o7 : Sequence

i8 : -- by Verra, L is of the form omega_C(p_1+...+p_4-p_5-...-p_9) for {p_i} general
     -- points on the curve. We construct the embedding C' of C given by L.
     pts=for i from 1 to 9 list randomKRationalPoint(C);

i9 : D1=intersect apply(4,i->pts_i); -- D1=p_1+...+p_4

o9 : Ideal of S

i10 : D2=intersect apply(5,i->pts_(4+i)); -- D2=p_5+...+p_9

o10 : Ideal of S

i11 : H1=gens D1*random(source gens D1,S^{-1});

              1       1
o11 : Matrix S  <--- S

i12 : E1=(C+ideal H1):D1;

o12 : Ideal of S

i13 : L=mingens ideal(gens intersect(E1,D2)%C);

              1       7
o13 : Matrix S  <--- S

i14 : SC=S/C;

i15 : R=ZZ/p[x_0..x_6];

i16 : phi:=map(SC,R,substitute(L,SC));

o16 : RingMap SC <--- R

i17 : C'=kernel phi;

o17 : Ideal of R

i18 : -- We check that C' is a smooth genus 9 degree 15 curve in P^6.
      (codim C'==5, degree C'==15, genus C'==9)

o18 = (true, true, true)

o18 : Sequence

i19 : isSmoothPn(C')

o19 = true

i20 : -- We check that C' lies on at least 5 quadric hypersurfaces.
      tally degrees C'

o20 = Tally{{2} => 6 }
            {3} => 13

o20 : Tally

i21 : -- We perform a liaison with respect to 5 of them.
      CI=cIntContaining({2,2,2,2,2},C');

o21 : Ideal of R

i22 : D=saturate(CI:C');

o22 : Ideal of R

i23 : -- D is a smooth curve of genus 12 and degree 17 in P^6.
      (codim D==5, degree D==17, genus D==12)

o23 = (true, true, true)

o23 : Sequence

i24 : isSmoothPn(D)

o24 = true

i25 : -- We verify that C' and D intersect only in ordinary double points.
      isOrdDoublePointsPn(C',D)

o25 = true

i26 : -- We check that D is non-degenerate.
      betti mingens D

             0  1
o26 = total: 1 14
          0: 1  .
          1: .  5
          2: .  9

o26 : BettiTally

i27 : -- This means that this construction dominates W^6_{12,17}, and via
      -- the Serre dual divisor it dominates M_12,5^u.
      -- The unirationality of M_12,6^u follows from the observation that 
      -- C' lies on at least 6 quadric hypersurfaces.
      tally degrees C'

o27 = Tally{{2} => 6 }
            {3} => 13

o27 : Tally

i28 : -- So we can impose the choice of one more point.
      NPoints=apply(1,i->ideal(random(1,R),random(1,R),random(1,R),random(1,R),random(1,R),random(1,R)));

i29 : C'andNPoints=intersect(NPoints|{C'});

o29 : Ideal of R

i30 : -- We take the five remaining quadric hypersurfaces and do liaison.
      CI=cIntContaining({2,2,2,2,2},C'andNPoints);

o30 : Ideal of R

i31 : Dnew=saturate(CI:C');

o31 : Ideal of R

i32 : -- We check that Dnew contains the point.
      isSubset(Dnew,NPoints_0)

o32 = true

i33 :