\\name: P2F3 \\*****************comments********************************** \\a coordinatization of P^2(F_3) and some calculations on it. \\need to read in inp.gp \\*********************************************************** p = P = vector(26); \\points: lines p[ 1] = Mod([ 1, 1, 1],3)~; p[14] = p[ 1]~ ; P[ 1] =AA ; P[14] =FF ; p[ 2] = Mod([ 0, 1, 1],3)~; p[15] = p[ 2]~ ; P[ 2] =C1 ; P[15] =F1 ; p[ 3] = Mod([ 1, 0, 1],3)~; p[16] = p[ 3]~ ; P[ 3] =C2 ; P[16] =F2 ; p[ 4] = Mod([ 1, 1, 0],3)~; p[17] = p[ 4]~ ; P[ 4] =C3 ; P[17] =F3 ; p[ 5] = Mod([ 0, 1, 2],3)~; p[18] = p[ 5]~ ; P[ 5] =E1 ; P[18] =B1 ; p[ 6] = Mod([ 2, 0, 1],3)~; p[19] = p[ 6]~ ; P[ 6] =E2 ; P[19] =B2 ; p[ 7] = Mod([ 1, 2, 0],3)~; p[20] = p[ 7]~ ; P[ 7] =E3 ; P[20] =B3 ; p[ 8] = Mod([ 2, 1, 1],3)~; p[21] = p[ 8]~ ; P[ 8] =A1 ; P[21] =Z1 ; p[ 9] = Mod([ 1, 2, 1],3)~; p[22] = p[ 9]~ ; P[ 9] =A2 ; P[22] =Z2 ; p[10] = Mod([ 1, 1, 2],3)~; p[23] = p[10]~ ; P[10] =A3 ; P[23] =Z3 ; p[11] = Mod([ 1, 0, 0],3)~; p[24] = p[11]~ ; P[11] =G1 ; P[24] =D1 ; p[12] = Mod([ 0, 1, 0],3)~; p[25] = p[12]~ ; P[12] =G2 ; P[25] =D2 ; p[13] = Mod([ 0, 0, 1],3)~; p[26] = p[13]~ ; P[13] =G3 ; P[26] =D3 ; \\make the linear transformation lin taking column vectors a,b,c to x,y,z lin(a,b,c,x,y,z)= { local(m1,m2,linn); m1=m2=matrix(3,3); m1[,1]=a;m1[,2]=b;m1[,3]=c; m2[,1]=x;m2[,2]=y;m2[,3]=z; linn=m2*m1^-1; return(linn); } \\act by a linear transformation T on P^2(F_3); \\T has in entered as a 3x3 matrix mod 3. \\compute the action of T on the indices 1,2,...26.the vector trp(T) stores the answer trp(T) = { local(i,j,tp,pp,ll); tp=vector(26); for ( i = 1, 13, \ pp = T*p[i]; ll = p[13+i]*T^-1; \ for(j = 1, 13,\ if( pp == p[j] || pp == -p[j], tp[i]=j);\ if( ll == p[13+j] || ll == -p[13+j], tp[13+i]=13+j);\ )\ ); return(tp); } \\ The permutation of points and lines by T perm(T)= { local(i,j,tp); tp=trp(T); print("points :"); for( i = 1, 13, print1(P[i]," ")); print(" "); for( i = 1, 13, print1(P[tp[i]]," ")); print(" "); print("lines :"); for( i = 1, 13, print1(P[13+i]," ")); print(" "); for( i = 1, 13, print1(P[tp[13+i]]," ")); return(); } \\ the standard relators of R1 transformed by T ades(T)= { local(i,j,tp); tp=trp(T); \\print("newS =","md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 2],"]),",\ \\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[19],"]),","md(ma(r[",tp[ 3],"]),",\ \\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[20],"]),"," ma(r[",tp[ 4],"])))))))));"); \\ \\print("newA =", "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 2],"]),",\ \\ "md(ma(r[",tp[24],"]),", "md(ma(r[",tp[ 5],"]),","md(ma(r[",tp[15],"]),",\ \\ "md(ma(r[",tp[10],"]),", "md(ma(r[",tp[16],"]),","md(ma(r[",tp[ 6],"]),",\ \\ "md(ma(r[",tp[25],"]),", "md(ma(r[",tp[ 3],"]),"," ma(r[",tp[19],"]))))))))))));"); \\ print("A11= ", "md(ma(r[",tp[16],"]),","md(ma(r[",tp[ 6],"]),",\ "md(ma(r[",tp[25],"]),", "md(ma(r[",tp[ 3],"]),","md(ma(r[",tp[19],"]),",\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 2],"]),",\ "md(ma(r[",tp[24],"]),", "md(ma(r[",tp[ 5],"]),"," ma(r[",tp[15],"])))))))))));"); print(" E8 =", "md(ma(r[",tp[ 5],"]),","md(ma(r[",tp[24],"]),",\ "md(ma(r[",tp[ 2],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 1],"]),",\ "md(ma(r[",tp[20],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[ 3],"]))))))));"); print(" E7 =", "md(ma(r[",tp[24],"]),",\ "md(ma(r[",tp[ 2],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 1],"]),",\ "md(ma(r[",tp[20],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[ 3],"])))))));"); print(" E6 =", "md(ma(r[",tp[ 2],"]),", "md(ma(r[",tp[18],"]),","md(ma(r[",tp[ 1],"]),",\ "md(ma(r[",tp[20],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[ 3],"]))))));"); print(" d8 =", "md(ma(r[",tp[15],"]),","md(ma(r[",tp[ 5],"]),",\ "md(ma(r[",tp[24],"]),", "md(ma(r[",tp[ 2],"]),","md(ma(r[",tp[18],"]),",\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[20],"]))))))));"); print(" d7 =", "md(ma(r[",tp[ 5],"]),",\ "md(ma(r[",tp[24],"]),", "md(ma(r[",tp[ 2],"]),","md(ma(r[",tp[18],"]),",\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[20],"])))))));"); print(" d6 =", "md(ma(r[",tp[24],"]),", "md(ma(r[",tp[ 2],"]),","md(ma(r[",tp[18],"]),",\ "md(ma(r[",tp[ 1],"]),", "md(ma(r[",tp[19],"]),"," ma(r[",tp[20],"]))))));"); return(); } \\*************************************************************************************************************** \\take the generator matrix [a,c_i, e_i, a_i, g_i, f] of C^(1,13) and transform by T and store the anwer in tgen \\check if the action of G = PGl_3(F_3) on the vectors of length 14 are lineear. \\See if for the element T in G the action on the basis matches the action on the other 12 lines gg = matrix (14,14); for ( j = 1, 14, for( i = 1, 14, gg[i,j] = r[j][i,])); gginv=minv(gg); trg(T)= { local(i,j,tp,tg); tp=trp(T); tg = matrix(14,14); for ( j = 1, 14, for( i = 1, 14, tg[i,j] = r[tp[j]][i,])); \\for ( i = 15, 26, newv = r[tp[i]] - mv(tg ,mv( gginv , r[i] )) ; print( ip(newv, newv)) ); return(tg); } \\the two standard generators of P^2(F_3) Ta = Mod( [1,0,0; 2,2,0; 1,0,2],3); Tb = Mod( [0,1,0; 0,0,1; 1,0,0],3); \\the 14x14 matrices for the two standard generators in its representation on C^(1,13) Ma = md(trg(Ta) , gginv ); Mb = md(trg(Tb) , gginv ); \\check that the action of Ma and Mb on the vectors r[i] is same as the permutation action of a & b on L3F3 \\ for( i = 1, 26, print( mv( Ma, r[i]) == r[trp(Ta)[i]], " ", mv( Mb, r[i]) == r[trp(Tb)[i]]) ); \\*************************************************************************************************** \\formulas to check for x and y to give a presentation of Pgl_3(F_3) \\x^2 = y^3 = (xy)^{13} = ((xy)^4xy^{-1})^2xyxyxy^{-1}xy^{-1}xyxy^{-1}xy^{-1}xyxyxy^{-1} = 1 presL3F3(x,y)= { local(xy,xy2,xy4,xyi,xyi2,xt1); xy = md(x, y);xy2 = md(xy,xy); xy4 = md(xy2,xy2); xyi = md( x, minv(y) ); xyi2 = md(xyi,xyi) ; xt1= md(md( xy4, xyi), md( xy4, xyi)); print(md(x,x) == Mid(14)," ",\ md(y, md( y, y) ) == Mid(14)," ",\ md( xy4, md(xy4, md(xy4, xy))) == Mid(14)," ",\ md( xt1, md( xy2, md( xyi2, md(xy, md( xyi2, md(xy2, xyi )))))) == Mid(14)); return(); } \\sigma: the automorphism of C_1,13, interchanging points and lines and whose square is 6th root of 1 \\in the setup where = theta, sigma takes point --> (w^2.line ) and line --> (-w^2.point) \\it commutes with Ma but not with Mb gensigmaold()= { local(i,j,g1,gg2,rjp,sig); gg1 = gg2 = matrix(14,14); for( j = 1, 14, for( i = 1, 14, gg1[i,j]= r[j][i,] )); for( j = 1, 13, rjp = sdot(W,r[13+j]);for( i = 1, 14, gg2[i,j]= rjp[i,] )); rjp = -sdot(W,r[1]); for( i = 1,14, gg2[i,14] = rjp[i,] ); sig = md( gg2, minv(gg1)); return(sig); } \\sigma: the automorphism of C_1,13, interchanging points and lines and whose square is 6th root of 1 \\in the setup where = -theta*omega, sigma takes point --> (-w.line ) and line --> (point) \\it commutes with Ma but not with Mb \\sigma normalizes the group generated by a, b, so L_3(F_3) is normal of index 12 in the group generated by \\a,b,sigma. Let G = L_3(F_3) = and G_1 = , then \\ we have the sequence 1 --> G --> G_1 --> Z/12Z --> 1, where Z/12Z is the cyclic subgroup generated by sigma. \\sigma * a * sigma^-1 acts via the linear transformation Tsa = Mod([1,2,1; 0,2,0;0,0,2],3) on the points of P^2(F_3). gensigma()= { local(i,j,gg1,gg2,rjp,sig); gg1 = gg2 = matrix(14,14); for( j = 1, 14, for( i = 1, 14, gg1[i,j]= r[j][i,] )); for( j = 1, 13, rjp = sdot(-w,r[13+j]);for( i = 1, 14, gg2[i,j]= rjp[i,] )); rjp = r[1]; for( i = 1,14, gg2[i,14] = rjp[i,] ); sig = md( gg2, minv(gg1)); return(sig); } \\sigm = gensigma(); \\for( i = 1, 13, print( mv(sigm, r[i]) == sdot( -w,r[13+i]) , " ", mv(sigm, r[13+i]) == r[i] ) ); analm(a)= { local(ww,l1,l2,ana,i,j); ww = (-1 + sqrt(-3))/2; l1 = matsize(a)[1]; l2 = matsize(a)[2]; ana= matrix(l1,l2); for( i = 1, l1, for( j = 1, l2, ana[i,j] = a[i,j][1] + ww* a[i,j][2] )); return(ana); } \\given a matrix a whose entries are apprrox eisenstein integer gets them in exact form: [*,*] digm(a)= { local(ww,l1,l2,diga,i,j,epsilon,flag); ww = (-1 + sqrt(-3))/2; epsilon = .001; flag = 0; l1 = matsize(a)[1]; l2 = matsize(a)[2]; diga= matrix(l1,l2); for( i = 1, l1, for( j = 1, l2,\ if( err(om1(a[i,j])) > epsilon || err(om2(a[i,j])) > epsilon ,flag = 1; print(i, " ",j) );\ diga[i,j] = dig(a[i,j]) )); if( flag == 1, print( " input may not be integral" ) ); return(diga); } intspan(a)= { local(l1,l2,inta, ta,j,k); w = [0,1]; l1 = matsize(a)[1]; l2 = matsize(a)[2]; inta = matrix( 2*l1, 2*l2); ta = matrix( l1, 2) ; for( j = 1, l2, \ for( k = 1, l1, ta[k,] = a[k,j] );\ inta[, 2*j-1] = mtov(ta);\ inta[,2*j] = mtov(sdot( w,ta)) ); return(inta); } \\find the fixed vectors of the action of a,b of L_3F_3 fixed(a,b)= { local(kerna,kernb,ka,kb,kern); kerna = matker( analm(a) - matid(14)); kernb = matker( analm(b) - matid(14)); ka = intspan( digm( kerna)); kb = intspan( digm( kernb)); kern = matintersect( ka, kb); return(kern); } \\ let u1 be the vector of norm 3 fixed by the action of L3F3 \\let ff = 4*fixed(Ma,Mb)~; the 2nd and 4th rows of ff are omega multiples of te 1st and the 3rd row. \\let w1 and w2 be the 1st and the third row resp. w1 = vtom( ff[1,]~); w2 =vtom( ff[3,]~); \\we have u1 = -vad( w2, sdot(W,w1));this is a norm +3 vector that is perp to the 13 points. u1 = [0, 0; 0, 0; 1, 2; -2, -4; 0, 0; 0, 0; 1, 2; -2, -4; 0, 0; 0, 0; 1, 2; -2, -4; -4, -4; 4, 0]; \\let u2 = (1/4)*vad( sdot( [-3,-9],w1) , sdot( [10,6],w2) ); \\ = 0, = [-5,-7] u2 = [1, 1; 1, 1; 1, -3; -1, 7; 1, 1; 1, 1; 1, -3; -1, 7; 1, 1; 1, 1; 1, -3; -1, 7; 3, 9; -10, -6]; \\the sum of the 13 points up is obviously fixed by the action up = [-1, 1; -1, 1; 2, -2; -5, 5; -1, 1; -1, 1; 2, -2; -5, 5; -1, 1; -1, 1; 2, -2; -5, 5; 1, 9; -10, -10]; \\then gram{u1,u2} = 39, so its properly contained in the span of {u1,up} \\up == vad( sdot( [-3,1], u1), sdot( t, u2) ) =(-/t)*u1+t*u2; wp=[0, 0; 0, 0; 1, -1; -2, 2; 0, 0; 0, 0; 1, -1; -2, 2; 0, 0; 0, 0; 1, -1; -2, 2; 0, 4; -4, -4]; wl=[1, 0; 1, 0; 2, 0; -3, 0; 1, 0; 1, 0; 2, 0; -3, 0; 1, 0; 1, 0; 2, 0; -3, 0; -3, 2; -2, -4]; solvec(n)= { local(i1,i2,u,cc); u = matrix( matsize(u1)[1], matsize(u1)[2]); for( i1 = -n,n, for( i2 = -n, n, cc= [i1,i2]; u = vad( u2, sdot(cc,u1)); \ if( ip(u,u)[1] == 0, return(cc) ))); return(); } \\********************Some important words sp=md(ma(a),md(ma(b1),md(ma(c1),md(ma(a),md(ma(b2),md(ma(c2),md(ma(a),md(ma(b3),ma(c3)))))))));