Given the rational numbers or any finite field represented as a string, the procedure displays a string of M2-operations which calculate a unirational parametrization of the locus of lines in Q leading generically to numerical Godeaux surfaces with torsion group ℤ/5.
i1 : calculationOfTheUnirationalParametrizationOfTorsZ5Lines("QQ") o1 = kk = value(s); s = toString(1111); (relLin,relPfaf,d1',d2,Ms) = setupGodeaux(kk,s); lociE = lowerRankLociE(d1',relPfaf); -- choose the P3s among the loci lociEP3 = select(lociE,c-> codim c == 8); Sa = getP11(relPfaf); Q = sub(ideal relPfaf,Sa); -- L gives the list of P1xP1's inside P3xP3's leading to Z/5-Godeaux surfaces: L = lineConditionsTorsZ5(first lociEP3,last lociEP3,d1',relPfaf); -- we choose the first P1xP1; the others are equivalent under the S4-operation (comp0,comp1) = first L; -- introduce coordinates for the P1xP1: P1xP1 = kk[u_0..v_1,Degrees=>{2:{1,0},2:{0,1}}] -- the generic point in the first P1: genPoint0 =vars Sa % sub(comp0,Sa) entriesGenPoint0 =flatten entries genPoint0; -- the generic point in the second P1: genPoint1 =vars Sa % sub(comp1,Sa); entriesGenPoint1 =flatten entries genPoint1; pos0 = positions(entriesGenPoint0, i-> i!=0); pos1 = positions(entriesGenPoint1, i-> i!=0); P1xP1xP1 = kk[u_0..v_1,x_0,x_1,Degrees => {2:{1,0,0},2:{0,1,0},{0,1,1},{1,0,1}}] -- P1xP1xP1 is a P(O(1,0) ++ O(0,1)) -> P1xP1 -- the general line is given by: phi = map(P1xP1xP1,Sa,apply(2,i-> entriesGenPoint0_(pos0_i) => x_0*u_i) | apply(2,i-> entriesGenPoint1_(pos1_i) => x_1*v_i) | apply(select(12,j-> not member(j,pos0|pos1)),i-> Sa_i => 0_P1xP1xP1)) -- the following two points span a general line leading to a Z/5-Godeaux surface: phi0 = map(P1xP1,Sa,sub(diff(x_0,phi.matrix),P1xP1)) phi1 = map(P1xP1,Sa,sub(diff(x_1,phi.matrix),P1xP1)) |