allocatemem(); allocatemem(); allocatemem(); allocatemem(); allocatemem(); allocatemem(); allocatemem(); allocatemem(); allocatemem(); n=3; Sn=vector(n!,X,matrix(n,n)); for(i=0,n!-1,for(j=1,n,Sn[n!-i][j,(numtoperm(n,i)[j])]=1)); base2(i)=concat(vector(n-#binary(i)),binary(i)); E=vector(2^n,X,matrix(n,n)); for(i=1,2^n, for(j=1,n, E[i][j,j]= (-1)^(base2(i-1)[j]) ) ); W=vector(#Sn*#E); for( j=1,#E, for(i=1,#Sn, W[((j-1)*#Sn)+i]=E[j]*Sn[i] )); R=[]; for(j=1,n, R=concat(R, [vectorv(n, i, i==j)] )); for(j=1,n-1, for(k=j+1,n, R=concat(R, [vectorv(n, i, (-1)^(i==k)* 0^(i!=j&& i!=k) )] ) )); for(j=1,n-1, for(k=j+1,n, R=concat(R, [vectorv(n, i, 0^(i!=j&& i!=k) )] ) )); rho=sum(k=1,#R, 1/2*(R[k]) ); cardG=1451520; cardConjG=27; G=vector(cardConjG); C=vector(cardConjG); A=vector(cardConjG); o=2520; z=Mod(x,polcyclo(2520)); C[1]=1; A[1]=[2520,2520,2520]; C[2]=672; A[2]=[o,o,o/3]; C[3]=945; A[3]=[o,o,o/2]; C[4]=48384; A[4]=[o,o/5,2*o/5]; C[5]=52920; A[5]=[o,o/2,o/4]; C[6]=13440; A[6]=[o,o/3,o/3]; C[7]=30240; A[7]=[o,o/2,o/3]; C[8]=4095; A[8]=[o,o/2,o/2]; C[9]=10080; A[9]=[o,o/2,o/6]; C[10]=3780; A[10]=[o,o/4,o/4]; C[11]=207360; A[11]=[o/7,2*o/7,3*o/7]; C[12]=161280;; A[12]=[o/2,o/6,o/3]; C[13]=96768; A[13]=[o/3,o/5,2*o/5]; C[14]=11340; A[14]=[o/2,o/4,o/4]; C[15]=60480; A[15]=[o/2,o/4,o/3]; C[16]=7560; A[16]=[o/4,o/2,o/2]; C[17]=2240; A[17]=[o/3,o/3,o/3]; C[18]=63; A[18]=[o/2,o/2,o/2]; C[19]=120960; A[19]=[o/3,o/12,5*o/12]; C[20]=145152; A[20]=[o/2,o/10,3*o/10]; C[21]=90720; A[21]=[o/2,o/8,3*o/8]; C[22]=10080; A[22]=[o/6,o/2,o/2]; C[23]=90720; A[23]=[o/4,o/8,3*o/8]; C[24]=40320; A[24]=[o/2,o/6,o/6]; C[25]=161280; A[25]=[o/9,2*o/9,4*o/9]; C[26]=20160; A[26]=[o/3,o/6,o/6]; C[27]=60480; A[27]=[o/2,o/4,o/6]; CardG=sum(i=1,cardConjG,C[i]); RM=vector(cardConjG); for(k=1,cardConjG, RM[k]=[]); SM=vector(cardConjG); for(k=1,cardConjG, SM[k]=[]); for(s=1,cardConjG, for(k=1, #R, if( Mod(A[s]*R[k],o), SM[s]=concat(SM[s],[R[k]]), RM[s]=concat(RM[s],[R[k]]) ))) ; rhoM=vector( cardConjG,s,sum(j=1,#RM[s],1/2*((RM[s]))[j])); WM=vector(cardConjG); for(s=1,cardConjG , WM[s]=[]); for(s=1, cardConjG, for(k=1,#W, if( prod(j=1,#RM[s], 0^( setminus( Set( [W[k]^(-1)*RM[s][j] ]), Set(R))!=[])) ==1, WM[s]=concat(WM[s], [k] ), ) )); D=vector(cardConjG); for(s=1,cardConjG,D[s]=prod(i=1,#SM[s], (1-z^(-A[s]*SM[s][i])) ) ); Q(s,lambda)= prod(j=1,#RM[s], lambda~* RM[s][j] ) ; Trace(s,lambda)= sum(i=1,#WM[s],matdet(W[WM[s][i]])*z^(A[s]*W[WM[s][i]]*lambda)*z^(A[s]*(W[WM[s][i]]*rho-rho))*Q(s,W[WM[s][i]]*(lambda+rho))*Q(s,rhoM[s])^(-1) )*D[s]^(-1) m(a,b,c)=lift( (CardG)^(-1)*sum(s=1,cardConjG,C[s]* Trace(s,[a,b,c]~)));