Type "help" to see useful commands i1 : -- Example 9e: a genus 9 graph curve -- Part 1: Check the graph curve equations in the y coordinates M = matrix {{0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0}, {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0}}; 16 16 o1 : Matrix ZZ <-- ZZ i2 : R=QQ[x_0..x_8]; i3 : I = ideal {x_3*x_8, x_2*x_8, x_1*x_8, x_5*x_7-x_6*x_7-x_5*x_8+x_6*x_8, x_4*x_7-x_6*x_7+x_6*x_8, x_2*x_7, x_1*x_7, x_0*x_7, x_4*x_6-x_5*x_6+x_5*x_8, x_3*x_6-x_5*x_6+x_6*x_7+x_5*x_8-x_6*x_8, x_1*x_6, x_0*x_6, x_3*x_5-x_4*x_5+x_6*x_7-x_6*x_8, x_2*x_5-x_4*x_5+x_5*x_6-x_5*x_8, x_0*x_5, x_2*x_4-x_3*x_4+x_5*x_6-x_6*x_7-x_5*x_8+x_6*x_8, x_1*x_4-x_3*x_4+x_4*x_5-x_6*x_7+x_6*x_8, x_0*x_4-x_3*x_4+x_4^2-x_6*x_7+x_4*x_8+x_6*x_8, x_1*x_3-x_2*x_3+x_4*x_5-x_5*x_6+x_5*x_8, x_0*x_3-x_2*x_3+x_3*x_4-x_5*x_6+x_6*x_7+x_5*x_8-x_6*x_8, x_0*x_2-x_1*x_2+x_3*x_4-x_4*x_5+x_6*x_7-x_6*x_8 }; o3 : Ideal of R i4 : L = {ideal(x_7,x_6,x_5,x_4,x_3,x_2,x_1), ideal(x_8,x_7,x_6,x_5,x_4,x_3,x_2), ideal(x_8,x_7,x_6,x_5,x_4,x_3,x_0-x_1), ideal(x_8,x_7,x_6,x_5,x_4,x_1-x_2,x_0-x_2), ideal(x_8,x_7,x_6,x_5,x_2-x_3,x_1-x_3,x_0-x_3+x_4), ideal(x_8,x_7,x_6,x_3-x_4,x_2-x_4,x_1-x_4+x_5,x_0), ideal(x_8,x_7,x_4-x_5,x_3-x_5,x_2-x_5+x_6,x_1,x_0), ideal(x_8,x_5-x_6,x_4-x_6,x_3-x_6+x_7,x_2,x_1,x_0), ideal(x_6-x_7,x_5-x_7,x_4-x_7+x_8,x_3,x_2,x_1,x_0), ideal(x_7-x_8,x_6-x_8,x_4,x_3,x_2,x_1,x_0), ideal(x_7-x_8,x_5,x_4,x_3,x_2,x_1,x_0), ideal(x_6,x_5,x_4,x_3,x_2,x_1,x_0), ideal(x_7,x_6,x_5,x_3,x_2,x_1,x_0+x_4+x_8), ideal(x_8,x_7,x_6,x_4,x_3,x_2,x_0), ideal(x_8,x_7,x_5,x_4,x_3,x_1,x_0), ideal(x_8,x_6,x_5,x_4,x_2,x_1,x_0) }; i5 : intersect(L)==I o5 = true i6 : M==matrix apply(16, i -> apply(16, j -> if i==j then 0 else dim(L_i+L_j))) o6 = true i7 : -- Part 2: Map to the y coordinates used in Part 3 needsPackage("Cyclotomic"); i8 : K = cyclotomicField(12); i9 : getSymbol "x"; i10 : R=K[x_0..x_8]; i11 : I = ideal {x_3*x_8, x_2*x_8, x_1*x_8, x_5*x_7-x_6*x_7-x_5*x_8+x_6*x_8, x_4*x_7-x_6*x_7+x_6*x_8, x_2*x_7, x_1*x_7, x_0*x_7, x_4*x_6-x_5*x_6+x_5*x_8, x_3*x_6-x_5*x_6+x_6*x_7+x_5*x_8-x_6*x_8, x_1*x_6, x_0*x_6, x_3*x_5-x_4*x_5+x_6*x_7-x_6*x_8, x_2*x_5-x_4*x_5+x_5*x_6-x_5*x_8, x_0*x_5, x_2*x_4-x_3*x_4+x_5*x_6-x_6*x_7-x_5*x_8+x_6*x_8, x_1*x_4-x_3*x_4+x_4*x_5-x_6*x_7+x_6*x_8, x_0*x_4-x_3*x_4+x_4^2-x_6*x_7+x_4*x_8+x_6*x_8, x_1*x_3-x_2*x_3+x_4*x_5-x_5*x_6+x_5*x_8, x_0*x_3-x_2*x_3+x_3*x_4-x_5*x_6+x_6*x_7+x_5*x_8-x_6*x_8, x_0*x_2-x_1*x_2+x_3*x_4-x_4*x_5+x_6*x_7-x_6*x_8 }; o11 : Ideal of R i12 : sqrt3 =-ww_12^3+2*ww_12; i13 : S = K[y_0..y_8]; i14 : GraphCurve9 = {y_4^2+(-2/sqrt3-1)*y_2*y_6+(2/sqrt3)*y_0*y_7, y_2*y_4+(-2/sqrt3-2)*y_0*y_5+(2/sqrt3+1)*y_6*y_8, y_8^2+(2/sqrt3-1)*y_2*y_6+(-2/sqrt3)*y_0*y_7, y_0*y_3+(1/2)*y_6^2-(3/2)*y_4*y_8, y_2^2+y_6^2-2*y_4*y_8, y_0*y_1+(sqrt3/4-1/4)*y_4*y_6+(-sqrt3/4-3/4)*y_2*y_8, y_0^2+(sqrt3/2-1/2)*y_2*y_7+(-sqrt3/2-1/2)*y_1*y_8, y_4*y_5+(-sqrt3-3)*y_2*y_7+(sqrt3+2)*y_1*y_8, y_3*y_6+(-sqrt3-2)*y_2*y_7+(sqrt3+1)*y_1*y_8, y_1*y_2+(sqrt3/2+1/2)*y_4*y_7+(-sqrt3/2-3/2)*y_3*y_8, y_5*y_6+(-sqrt3/2-3/2)*y_4*y_7+(sqrt3/2+1/2)*y_3*y_8, y_2*y_3+(sqrt3+2)*y_6*y_7+(-sqrt3-3)*y_5*y_8, y_1*y_4+(sqrt3+1)*y_6*y_7+(-sqrt3-2)*y_5*y_8, y_3*y_4+(-sqrt3-1)*y_1*y_6+(sqrt3)*y_7*y_8, y_2*y_5+(-sqrt3)*y_1*y_6+(sqrt3-1)*y_7*y_8, y_1^2+y_5^2-2*y_3*y_7, y_0*y_2+(sqrt3/2)*y_5^2+(-sqrt3/2-1)*y_3*y_7, y_1*y_3+(-2*sqrt3+2)*y_0*y_4+(2*sqrt3-3)*y_5*y_7, y_3^2-4*y_0*y_6+3*y_7^2, y_1*y_5-2*y_0*y_6+y_7^2, y_3*y_5+(-2*sqrt3-3)*y_1*y_7+(2*sqrt3+2)*y_0*y_8}; i15 : sigma = matrix {{0, 0, 0, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0, -1}, {0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0, 0, 0, -1}, {0, 0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 1, 1_K}}; 9 9 o15 : Matrix K <-- K i16 : Fsigma = map(R,R,sigma); o16 : RingMap R <-- R i17 : Fsigma(I)==I o17 = true i18 : P = matrix {{1, -ww_12^3+ww_12, -ww_12^2+1, -ww_12^2, -ww_12, ww_12^3-ww_12, ww_12^2-1, ww_12^2, ww_12}, {0, ww_12^3-ww_12^2-ww_12+1, -1, 2*ww_12^2-1, ww_12^2+ww_12, -ww_12^3-ww_12^2+ww_12+1, -2*ww_12^2+1, -1, ww_12^2-ww_12}, {0, -ww_12^3+ww_12^2-1, ww_12^2-1, -ww_12^2+2, -ww_12^3-ww_12^2, ww_12^3+ww_12^2-1, ww_12^2+1, -ww_12^2, ww_12^3-ww_12^2}, {0, ww_12^3-ww_12^2, ww_12^2, -ww_12^2-1, ww_12^3+ww_12^2-1, -ww_12^3-ww_12^2, ww_12^2-2, -ww_12^2+1, -ww_12^3+ww_12^2-1}, {1, -ww_12^3+ww_12^2, -ww_12^2+2, ww_12^2-1, -ww_12^3-ww_12^2+1, ww_12^3+ww_12^2, -ww_12^2, ww_12^2+1, ww_12^3-ww_12^2+1}, {0, ww_12^3-ww_12^2, -ww_12^2, ww_12^2+1, ww_12^3+ww_12^2-1, -ww_12^3-ww_12^2, -ww_12^2+2, ww_12^2-1, -ww_12^3+ww_12^2-1}, {0, ww_12^2-ww_12, -1, -2*ww_12^2+1, -ww_12^3-ww_12^2+ww_12+1, ww_12^2+ww_12, 2*ww_12^2-1, -1, ww_12^3-ww_12^2-ww_12+1}, {0, ww_12-1, ww_12^2-1, ww_12^2-2, ww_12^3-ww_12-1, -ww_12-1, -ww_12^2-1, -ww_12^2, -ww_12^3+ww_12-1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}}; 9 9 o18 : Matrix K <-- K i19 : P^-1*sigma*P==diagonalMatrix(apply({0, 1, 2, 4, 5, 7, 8, 10, 11}, t -> K_0^t)) o19 = true i20 : F = map(S,R,P^-1); o20 : RingMap S <-- R i21 : F(I)==ideal GraphCurve9 o21 = true i22 : -- Part 3: Check the linear space P giving GraphCurve9 K = toField(QQ[sqrt3,Degrees=>{0}]/(sqrt3^2-3)); i23 : S = K[z_1,z_2,z_3,z_5,z_7,z_8,z_9,z_11,z_13]; i24 : z_0=(12*sqrt3 - 18)*z_13; i25 : z_4=((4/9)*sqrt3+2/3)*z_3; i26 : z_6=(12*sqrt3-21)*z_1; i27 : z_10=(-6*sqrt3 + 9)*z_9; i28 : z_12=-1/3*z_7; i29 : LGraphCurve9= {z_0-(12*sqrt3 - 18)*z_13, z_4-((4/9)*sqrt3+2/3)*z_3, z_6-(12*sqrt3-21)*z_1, z_10-(-6*sqrt3 + 9)*z_9, z_12+1/3*z_7 }; i30 : all(LGraphCurve9, i -> i==0) o30 = true i31 : I1 = {-z_5^2+z_4*z_6-z_0*z_7, z_3*z_5-z_2*z_6-z_0*z_8, -z_3*z_4+z_2*z_5-z_0*z_9, -z_3^2+z_1*z_6-z_0*z_10, z_2*z_3-z_1*z_5-z_0*z_11, -z_2^2+z_1*z_4-z_0*z_12}; i32 : I2 = {-z_11^2+z_10*z_12-z_1*z_13, z_9*z_11-z_8*z_12-z_2*z_13, -z_9*z_10+z_8*z_11-z_3*z_13, -z_9^2+z_7*z_12-z_4*z_13, z_8*z_9-z_7*z_11-z_5*z_13, -z_8^2+z_7*z_10-z_6*z_13}; i33 : I3 = {z_1*z_7+z_2*z_8+z_3*z_9-z_0*z_13, z_1*z_8+z_2*z_10+z_3*z_11, z_1*z_9+z_2*z_11+z_3*z_12, z_2*z_7+z_4*z_8+z_5*z_9, z_2*z_8+z_4*z_10+z_5*z_11-z_0*z_13, z_2*z_9+z_4*z_11+z_5*z_12, z_3*z_7+z_5*z_8+z_6*z_9, z_3*z_8+z_5*z_10+z_6*z_11, z_3*z_9+z_5*z_11+z_6*z_12-z_0*z_13}; i34 : PcapSpGr36 = flatten {I1,I2,I3}; i35 : R=K[y_0..y_8]; i36 : GraphCurve9 = {y_4^2+(-2/sqrt3-1)*y_2*y_6+(2/sqrt3)*y_0*y_7, y_2*y_4+(-2/sqrt3-2)*y_0*y_5+(2/sqrt3+1)*y_6*y_8, y_8^2+(2/sqrt3-1)*y_2*y_6+(-2/sqrt3)*y_0*y_7, y_0*y_3+(1/2)*y_6^2-(3/2)*y_4*y_8, y_2^2+y_6^2-2*y_4*y_8, y_0*y_1+(sqrt3/4-1/4)*y_4*y_6+(-sqrt3/4-3/4)*y_2*y_8, y_0^2+(sqrt3/2-1/2)*y_2*y_7+(-sqrt3/2-1/2)*y_1*y_8, y_4*y_5+(-sqrt3-3)*y_2*y_7+(sqrt3+2)*y_1*y_8, y_3*y_6+(-sqrt3-2)*y_2*y_7+(sqrt3+1)*y_1*y_8, y_1*y_2+(sqrt3/2+1/2)*y_4*y_7+(-sqrt3/2-3/2)*y_3*y_8, y_5*y_6+(-sqrt3/2-3/2)*y_4*y_7+(sqrt3/2+1/2)*y_3*y_8, y_2*y_3+(sqrt3+2)*y_6*y_7+(-sqrt3-3)*y_5*y_8, y_1*y_4+(sqrt3+1)*y_6*y_7+(-sqrt3-2)*y_5*y_8, y_3*y_4+(-sqrt3-1)*y_1*y_6+(sqrt3)*y_7*y_8, y_2*y_5+(-sqrt3)*y_1*y_6+(sqrt3-1)*y_7*y_8, y_1^2+y_5^2-2*y_3*y_7, y_0*y_2+(sqrt3/2)*y_5^2+(-sqrt3/2-1)*y_3*y_7, y_1*y_3+(-2*sqrt3+2)*y_0*y_4+(2*sqrt3-3)*y_5*y_7, y_3^2-4*y_0*y_6+3*y_7^2, y_1*y_5-2*y_0*y_6+y_7^2, y_3*y_5+(-2*sqrt3-3)*y_1*y_7+(2*sqrt3+2)*y_0*y_8}; i37 : c={24*sqrt3 - 36, -3*sqrt3, 3*sqrt3 - 3, -6*sqrt3 + 9, -2, -3*sqrt3 + 9, 63*sqrt3 - 108, -3, -6*sqrt3 + 9, 1, -6*sqrt3 + 9, 3, 1, 2}; i38 : F = map(R,S,{c_1*y_2,c_2*y_4,c_3*y_6,c_5*y_8,c_7*y_7,c_8*y_5,c_9*y_3,c_11*y_1,c_13*y_0}); o38 : RingMap R <-- S i39 : F(ideal(PcapSpGr36))==ideal(GraphCurve9) o39 = true i40 :