+ M2 Macaulay2, version 1.15
with packages: ConwayPolynomials, Elimination, IntegralClosure, InverseSystems, LLLBases,
PrimaryDecomposition, ReesAlgebra, TangentCone, Truncations
i1 :
load "UnirationalPointedCurves.m2"
i2 : p=32009;
i3 : Fp=ZZ/p;
i4 : needsPackage("RandomCanonicalCurves");
i5 : S=Fp[y_0..y_8];
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 : pts=intersect for i from 1 to 4 list randomKRationalPoint(C);
o8 : Ideal of S
i9 : R=Fp[t_0..t_4];
i10 : SC=S/C;
i11 : phi=map(SC,R,((gens pts)_{0..4}));
o11 : RingMap SC <
i12 : C'=kernel phi;
o12 : Ideal of R
i13 : (codim C'==3, degree C'==12, genus C'==9)
o13 = (true, true, true)
o13 : Sequence
i14 : isSmoothPn(C')
o14 = true
i15 : CI=cIntContaining({3,3,3},C');
o15 : Ideal of R
i16 : C=saturate(CI:C');
o16 : Ideal of R
i17 : (genus C==15,degree C==15 ,codim C==3)
o17 = (true, true, true)
o17 : Sequence
i18 : isSmoothPn(C)
o18 = true
i19 : isOrdDoublePointsPn(C,C')
o19 = true
i20 : H=ideal random (R^1,R^{1:-1});
o20 : Ideal of R
i21 : pts15=ideal mingens(H+C);
o21 : Ideal of R
i22 : degree pts15
o22 = 15
i23 : codim pts15
o23 = 4
i24 : S=Fp[y_0..y_14];
i25 : RS= R**S;
i26 : time omegaC:=presentation truncate(0,Ext^2(C,R^{ -5}));
15 46
o26 : Matrix R <
i27 : SH=R/(pts15);
i28 : omegaCH=presentation ((coker omegaC)**SH);
15 46
o28 : Matrix SH <
i29 : graph=substitute(vars S,RS)*substitute(omegaC,RS);
1 46
o29 : Matrix RS <
i30 : graphH=substitute(vars S,RS)*substitute(omegaCH,RS);
1 46
o30 : Matrix RS <
i31 : linForm=random(1,SH);
i32 : J=saturate(((ideal graph)),substitute(linForm,RS));
o32 : Ideal of RS
i33 : I=ideal mingens substitute(J,S);
o33 : Ideal of S
i34 : JH=saturate(((ideal graphH)),substitute(linForm,RS));
o34 : Ideal of RS
i35 : IH=ideal mingens substitute(JH,S);
o35 : Ideal of S
i36 : (genus I==15,degree I==28, codim I==13)
o36 = (true, true, true)
o36 : Sequence
i37 : (degree IH==15, codim IH==14)
o37 = (true, true)
o37 : Sequence
i38 : betti IH
0 1
o38 = total: 1 55
0: 1 4
1: . 51
o38 : BettiTally
i39 : H15=ideal((gens IH)*(random(source gens IH, (S)^{-1})));
o39 : Ideal of S
i40 : P3=Fp[r_0..r_3];
i41 : SI=S/I;
i42 : M=map(S/I,P3,flatten entries (mingens IH)_{0..3});
o42 : RingMap SI <
i43 : IP3=ker M;
o43 : Ideal of P3
i44 : (codim IP3==2,degree IP3==13,genus IP3==15)
o44 = (true, true, true)
o44 : Sequence
i45 : isSmoothPn(IP3)
o45 = true
i46 : tally degrees IP3
o46 = Tally{{5} => 5}
{6} => 4
o46 : Tally
i47 : NPoints=apply(3,i->ideal(random(1,P3),random(1,P3),random(1,P3)));
i48 : DandNPoints=intersect(NPoints|{IP3});
o48 : Ideal of P3
i49 : CI=cIntContaining({5,5},DandNPoints);
o49 : Ideal of P3
i50 : Cfin=saturate(CI:IP3);
o50 : Ideal of P3
i51 : (genus Cfin==12,degree Cfin==12,codim Cfin==2)
o51 = (true, true, true)
o51 : Sequence
i52 : isSmoothPn(Cfin)
o52 = true
i53 : isSubset(Cfin, intersect NPoints)
o53 = true
i54 : isOrdDoublePointsPn(Cfin,IP3)
o54 = true
i55 : betti Ext^1(Cfin,(ring Cfin)^{-4})
0 1
o55 = total: 3 7
-1: 3 .
0: . 7
o55 : BettiTally
i56 :