//----------------------------------------------------------------------------------------------------- //----------------------------------------Calculating the Picard-Fuchs equation------------------------ LIB "linalg.lib"; LIB "foliation.lib"; int nv=3; //dimension int d=nv+2; //degree //-----------Claculating the Picard-Fuchs equation------ ring r=(0,z),x(1..nv+1),dp; int i,j; poly hilf1, hilf2; hilf2=1; for (i=1; i<=nv+1; i=i+1){ hilf1=hilf1+x(i)^d; hilf2=hilf2*x(i);} poly f=-z-hilf1+d*hilf2; number disc=z^nv*(z-1); list aabb=infoof(f, disc, etaof(f, disc,z)[2]); vector vc=[1]; matrix pfe=PFequ(f, poly(1), vc, aabb); pfe=-pfe*(1/pfe[1,nv+2]); matrix gm[nv+1][nv+1]; for (i=1; i<=nv;i=i+1){gm[i,i+1]=1; gm[nv+1,i]=pfe[1,i];} gm[nv+1,nv+1]= pfe[1,nv+1]; //----------------------------------------End of Calculating the Picard-Fuchs equation------------------- //----------------------------------------Calculating the Gauss-Manin in t_0,t_4 parameter-------------- ring r1=(0,t(0..nv+1), z),x(0..nv+1),dp; //x(i) represents dt(i) matrix gm=imap(r,gm); poly zt=t(nv+1)/(t(0)^(nv+2)); gm=substpar(gm, z, zt); gm=gm*(x(nv+1)/t(nv+1)-(nv+2)*x(0)/t(0))*zt; //The bais is constructed by derivation of Omega with respect to t_0 matrix S[nv+1][nv+1]; S[1,1]=t(0); int i,j; for (i=2;i<=nv+1;i=i+1) { S[i,1]=(-t(0)^(nv+3)/(t(nv+1)*number(nv+2)))*diffpar(S[i-1,1],t(0)); for (j=2;j<=nv+1;j=j+1) { S[i,j]= (-t(0)^(nv+3)/(t(nv+1)*number(nv+2)))*(diffpar(S[i-1,j],t(0))+S[i-1,j-1]); } } S=inverse(S); matrix Sd[nv+1][nv+1]; for (i=0; i<=nv+1;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} gm=(Sd+S*gm)*inverse(S); //------------------------------------------------------- //------------------------------Calculating the intersection matrix in de Rham cohomology of the family W(t_0,t_4)------------ ring r2=(0,t(0..nv+1)),x(0..nv+1),dp; //We need just t_0,t_4 matrix gm=imap(r1,gm); gm=subst(gm, x(4),0); gm=subst(gm, x(0),1); number om14=(1/625)*(1/(t(4)-t(0)^5)); number om23=-om14; number om24=diffpar(om14, t(0))-number(gm[4,4])*om14; number om34=diffpar(om24, t(0))-number(gm[4,4])*om24-number(gm[4,3])*om23; matrix F[4][4]=0,0,0,om14,0,0,om23,om24,0,-om23,0,om34, -om14, -om24,-om34,0; //check print(gm*F+F*transpose(gm)-diffpar(F, t(0))); //This is the zero matrix; //----------------------------Calculating the Gauss-Manin in t_0,t_1,t_2,t_3,t_4 paramers---------- ring r25=(0,t(0..nv+1)),x(0..nv+1),dp; //x(i) represents dt(i) //Note that the basis of the de Rham cohomlogy is constructed from dx/df and not 5dx/df matrix F=imap(r2, F); poly disc=F[1,4]; matrix gm=imap(r1, gm); matrix S[4][4]; for (i=1; i<=nv+1;i=i+1){S[i,i]=1; S[nv+1,i]=t(i); } //The parameters S[nv+1,nv+1]=1/disc; matrix Sd[4][4]; for (i=0; i<=nv+1;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} gm=(Sd+S*gm)*inverse(S); //----Calculating the Gauss-Manin connection with a special form ideal Ra=gm[nv+1,1..nv+1]; Ra=std(Ra); matrix A[nv+1][nv+1]; int rw, cl; poly delta=(t(nv+1)-t(0)^(nv+2))*t(nv+1); poly alpha=(t(0)*x(nv+1)-(nv+2)*t(nv+1)*x(0))/(delta); //We assume that the reduce command gives only multiples of x(nv+1) poly alpha1=reduce(alpha,Ra); alpha1=subst(alpha1,x(nv+1),1); matrix Sb[nv+1][nv+1]; for (i=1; i<=nv+1;i=i+1){Sb[i,i]=1;} //base change matrix for (rw=1;rw<=nv-1;rw=rw+1) { for (i=1;i<=nv+1;i=i+1){ for (j=1;j<=nv+1;j=j+1) {A[i,j]=reduce(gm[i,j],Ra);}} A=subst(A,x(nv+1),1); S=0; for (i=1; i<=nv+1;i=i+1){S[i,i]=1;} S[rw+1,rw+1]=A[rw,rw+1]/number(alpha1); for (cl=1;cl<=rw;cl=cl+1) {S[rw+1, cl]=S[rw+1,rw+1]*A[rw,cl]/number(A[rw,rw+1]); } Sd=0; for (i=0; i<=nv+1;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} gm=(Sd+S*gm)*inverse(S); Sb=S*Sb; } //Sb is the base change matrix //--------Calculating the Ramanujan type vector field---------------------------- for (i=1;i<=nv+1;i=i+1){ for (j=1;j<=nv+1;j=j+1) {A[i,j]=reduce(gm[i,j],Ra);}} ideal Ra2=gm[nv+1,1..nv+1],gm[1,2]-1; //gm[1,2]=alpha Ra2=std(Ra2); matrix Ravec[1][nv+2]; for (i=0;i<=nv+1;i=i+1) {Ravec[1,i+1]=reduce(x(i),Ra2);} matrix gmRa=gm; for (i=0;i<=nv+1; i=i+1){ gmRa=subst(gmRa, x(i),Ravec[1,i+1]); } gmRa[3,4]-(t(0)^(nv+2)-t(nv+1))^2/(-5^7); //The result is zero //---------------------------------------------Introducing the parameters t_5 and t_6-------------------- //modifying omega_3 to get constant intersection matrix----------------------- ring r3=(0,t(0..nv+3)),x(0..nv+3),dp; //x(i) represents dt(i) matrix gm=imap(r25, gm); matrix gmRa=imap(r25, gmRa); number om2om3=(1/5^7)*(t(4)-t(0)^5)^2; //In the artilce this is the product of tilde omega_2 and omega_3 //It is calculated by knowing the matrix Sb in r1 and the product of omega_2 and omega_3. matrix S[4][4]=1,0,0,0,0,1/t(5),0,0,0,-t(6)/om2om3,t(5)/om2om3,0,0,0,0,1; matrix Sd[4][4]; for (i=0; i<=nv+3;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} gm=(Sd+S*gm)*inverse(S); poly b2=gmRa[3,2]; poly b3=gmRa[3,3]; ideal Ra2=gm[nv+1,1..nv+1],gm[1,1], gm[1,2]-1, gm[2,1],gm[2,2], gm[2,3]-om2om3/t(5)^3, gm[3,1], x(6)-(b2*t(5)+b3*t(6))/t(5); Ra2=std(Ra2); matrix Ravec[1][nv+4]; for (i=0;i<=nv+3;i=i+1) {Ravec[1,i+1]=reduce(x(i),Ra2);} matrix gmRa=gm; for (i=0;i<=nv+3; i=i+1){ gmRa=subst(gmRa, x(i),Ravec[1,i+1]); } //check matrix F[4][4]=0,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,0; print(gmRa*F+F*transpose(gmRa)); //This is the zero matrix //-------------------------------------------------Writing t_is in terms of periods----------------------------- LIB "linalg.lib"; LIB "foliation.lib"; ring r4=(0,p),(x_(1..4)(1..4)),dp; //p is the psi parameter in W_psi of Candelas and others matrix Psi[4][4]=0,25/6,0,5/6,-25/6,0,-5/2,0,0,5/2,0,0,-5/6,0,0,0; //The intersection matrix in the third cohomology with rational coefficients. //Its transpose(inverse) is the intersection matrix in a basis of the homology and periods of this basis is used. //matrix C[4][1]=1,0,0,0; //C=inverse(Psi)*C; poly con=6/5; //The periods of omega_4 are going to be 0,0,0,con //THE CORRECT CON AND PSI ARE -CON AND -PSI. HOWEVER, THE ABOVE ONES ALSO WORK?! Psi=-Psi; con=-con; number t(0)=p; number t(4)=1; matrix F[4][4]=0,0,0,(-1/625)/(t(0)^5-t(4)),0,0,(1/625)/(t(0)^5-t(4)),(-t(0)^4)/(125*t(0)^10-250*t(0)^5*t(4)+125*t(4)^2),0,(-1/625)/(t(0)^5-t(4)),0,(t(0)^3)/(125*t(0)^10-250*t(0)^5*t(4)+125*t(4)^2),(1/625)/(t(0)^5-t(4)),(t(0)^4)/(125*t(0)^10-250*t(0)^5*t(4)+125*t(4)^2),(-t(0)^3)/(125*t(0)^10-250*t(0)^5*t(4)+125*t(4)^2),0; //The intersection matrix in de Rham cohomology matrix gm[4][4]=0,1,0,0,0,0,1,0,0,0,0,1,(-t(0))/(t(0)^5-t(4)),(-15*t(0)^2)/(t(0)^5-t(4)),(-25*t(0)^3)/(t(0)^5-t(4)),(-10*t(0)^4)/(t(0)^5-t(4)); //The Gauss-Manin connection of W_psi matrix P[4][4]; //The period matrix int i,j; for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { P[i,j]=x_(i)(j); } } ideal II=F-transpose(P)*Psi*P; II=std(II); number detP=number(reduce(det(P), II)); //check detP^2*det(Psi)-det(F); //The result is zero; poly t_0,t_1,t_2,t_3,t_4,t_5,t_6;//parameters in terms of periods t_0=p*x_(1)(1); t_4=x_(1)(1)^5; t_1=con*(1/detP)*((-1)^(4+1))*x_(1)(1)*det(submat(P, 1..3, 2..4)); t_2=con*(1/detP)*((-1)^(4+2))*x_(1)(1)^2*det(submat(P, 1..3, intvec(1,3,4))); t_3=con*(1/detP)*((-1)^(4+3))*x_(1)(1)^3*det(submat(P, 1..3, intvec(1,2,4))); t_0=reduce(t_0, II); t_1=reduce(t_1, II); t_2=reduce(t_2, II); t_3=reduce(t_3, II); t_4=reduce(t_4, II); t_5=(-t_0^4-1/3125*t_3)*x_(2)(1)*x_(1)(1)+(1/5*t_0^5-1/5*t_4)*x_(2)(2); //In fact t_5 is this one devided by x_11^2 t_6=(-14/5*t_0^8+1/15625*t_0^5*t_2-1/625*t_0^4*t_3-1/5*t_0^3*t_4-1/15625*t_2*t_4-2/9765625*t_3^2)*x_(2)(1)*x_(1)(1)^2+(3/5*t_0^9+2/15625*t_0^5*t_3-3/5*t_0^4*t_4-2/15625*t_3*t_4)*x_(2)(2)*x_(1)(1)+(1/25*t_0^10-2/25*t_0^5*t_4+1/25*t_4^2)*x_(2)(3); //In fact t_5 is this one divided by x_11^3 //If we do bellow the expressions for t_5,t_6 become longer. //t_5=reduce(t_5, II); //t_6=reduce(t_6, II); //These are the actual t_5 and t_6 poly tt_5=t_5/x_(1)(1)^2; t_5-x_(1)(1)^2*tt_5; t_5=tt_5; poly tt_6=t_6/x_(1)(1)^3; t_6-x_(1)(1)^3*tt_6; t_6=tt_6; //The monodromy matrix keeps the intersection forms //matrix M[4][4]=1,0,0,0,1,1,0,0,1,2,1,0,1,3,3,1; //M*inverse(transpose(Psi))*transpose(M)-inverse(transpose(Psi)); //The result is the zero matrix. list params=t_0,t_1,t_2,t_3,t_4,t_5,t_6; //The list of of t_0,t_1,... in terms of periods. //Check reduce(625*(t_4-t_0^5)-con*(1/detP)*x_(1)(1)^4*det(submat(P, 1..3, 1..3)), II); //The result is zero //From here on we check that the expressions of t_i's in terms of periods satisfy the Ramanujan type differential equation. poly b32=(-72/5*t_0^8-24/3125*t_0^4*t_3-3/5*t_0^3*t_4-2/1953125*t_3^2); poly b33=(12*t_0^4+2/625*t_3); poly b34=(-1/78125*t_0^10+2/78125*t_0^5*t_4-1/78125*t_4^2); list Ram=(6/5*t_0^5+1/3125*t_0*t_3-1/5*t_4), (-125*t_0^6+t_0^4*t_1+125*t_0*t_4+1/3125*t_1*t_3), (-1875*t_0^7-1/5*t_0^5*t_1+2*t_0^4*t_2+1875*t_0^2*t_4+1/5*t_1*t_4+2/3125*t_2*t_3), (-3125*t_0^8-1/5*t_0^5*t_2+3*t_0^4*t_3+3125*t_0^3*t_4+1/5*t_2*t_4+3/3125*t_3^2), (5*t_0^4*t_4+1/625*t_3*t_4), t_6, t_5*b32+t_6*b33; //This is the Ramanujan type vector field multiplied with t_5 //Reduce does not change the expression or increase its length in Ram[6] and Ram[7]. //b32=reduce(b32,II); //b33=reduce(b33,II); //b34=reduce(b34,II); //for (i=1;i<=7;i=i+1){Ram[i]=reduce(Ram[i],II);} int k; matrix difpar[7][16+1]; //derivation of t_is with respect to x_(i)(j)s and p for (k=1;k<=7;k=k+1) { difpar[k,1]=diffpar(params[k],p); //Derivation with repect to p for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { difpar[k,1+(i-1)*4+j]=diff(params[k],x_(i)(j)); } } } matrix dP=P*transpose(gm); //the derivative of the period matrix with respect to p. matrix dP1[1][16+1]; dP1[1,1]=1; //Derivation of p with repect to p is one for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { dP1[1,(i-1)*4+j+1]=dP[i,j]; } } list dparams; //derivation of t_is with respect to p for (i=1;i<=7;i=i+1) { dparams=insert(dparams,dP1*transpose(submat(difpar, i,1..16+1)), size(dparams)); dparams[i]=dparams[i][1,1]; } for (i=1;i<=7;i=i+1) { dparams[i]=dparams[i]*t_5*x_(1)(1)^2; } for (i=1;i<=7;i=i+1) { Ram[i]=Ram[i]*(x_(2)(2)*x_(1)(1)-x_(2)(1)*x_(1)(2)); } for (i=1;i<=7;i=i+1) { //Ram[i]-dparams[i]; reduce(Ram[i]-dparams[i], II); } //Only Ram[7]-dparams[7] needs to be reduced //----------------------------------------------------The proof of algebraic independence of t_i's------------------ ring r5=(0,p,s(0..7)),(x_(1..4)(1..4)),dp; ideal II=imap(r4, II); list params=imap(r4,params); II=II,params[1]-s(0),params[2]-s(1),params[3]-s(2),params[4]-s(3),params[6]-s(5),params[7]-s(6); ideal III=std(II); dim(III); list irr=facstd(III);//only one irreducible component of dimension 4. //-----------------------Finish od t_is in terms of periods----------------------------------------- //----------------------------------------------------------------------qexpansion----------------------- LIB "linalg.lib"; LIB "foliation.lib"; ring r6=0,(t(0..9),q),dp; //The Gauss-Manin connection in the basis tilde omega_i composed with Ra contains these bi's poly b2=(-72/5*t(0)^8-24/3125*t(0)^4*t(3)-3/5*t(0)^3*t(4)-2/1953125*t(3)^2); poly b3=(12*t(0)^4+2/625*t(3)); poly b4=(-1/78125*t(0)^10+2/78125*t(0)^5*t(4)-1/78125*t(4)^2); matrix vecfield[1][10]=(6/5*t(0)^5+1/3125*t(0)*t(3)-1/5*t(4)), (-125*t(0)^6+t(0)^4*t(1)+125*t(0)*t(4)+1/3125*t(1)*t(3)), (-1875*t(0)^7-1/5*t(0)^5*t(1)+2*t(0)^4*t(2)+1875*t(0)^2*t(4)+1/5*t(1)*t(4)+2/3125*t(2)*t(3)), (-3125*t(0)^8-1/5*t(0)^5*t(2)+3*t(0)^4*t(3)+3125*t(0)^3*t(4)+1/5*t(2)*t(4)+3/3125*t(3)^2), (5*t(0)^4*t(4)+1/625*t(3)*t(4)), t(6), t(5)*b2+t(6)*b3, t(8), -t(5)^2+t(9), t(8)*b2+t(9)*b3-t(5)*t(6); //We have considered the vector field in t(0..4),t(5)=q22,t(6)=q23,t(7)=q31,t(8)=q32,t(9)=q33. //We have considered t(5)*5*der(t)=vecfield. int until=50; //Until which power we are going to calculate the q-expansion matrix firstcoef[1][10]=1/5,-25,-35,-6,0,-1/5^5, 0,0,0,1/5^10; int i; list coli; for (i=1; i<=10;i=i+1){coli=insert(coli,list(firstcoef[1,i],t(i-1)),size(coli));} coli[1][2]=24; coli[1]=insert(coli[1],t(0), size(coli[1])); int j; ideal modq; ideal linea; int initial; int nth;//nth-1 power series is calculated matrix vecfield1[1][10]; matrix vecfield2[1][10]; matrix zero[1][10]; matrix pose[1][10]; for (nth=1; nth<=until;nth=nth+1) { pose=0; for (i=1; i<=10;i=i+1) { for (j=1; j<=nth+1;j=j+1){pose[1,i]=pose[1,i]+coli[i][j]*q^(j-1);} } vecfield1=vecfield; for (i=1; i<=10;i=i+1) { for (j=1; j<=10;j=j+1){ vecfield1[1,j]=subst(vecfield1[1,j], t(i-1),pose[1,i]);} } vecfield1=pose[1,6]*5*q*diff(pose,q)-vecfield1; modq=q^(nth+1); modq=std(modq); for (j=1; j<=10;j=j+1){ vecfield1[1,j]=reduce(vecfield1[1,j], modq);} vecfield2=vecfield1/(q^(nth)); if (vecfield1-vecfield2*q^(nth)<>zero){"Error";} linea=vecfield2[1,1..10]; linea=std(linea); if(nth==1){initial=2;}else{initial=1;} for (i=initial; i<=10;i=i+1){coli[i]=insert(coli[i], reduce(t(i-1), linea), size(coli[i])-1);} } //From now on we wirk with the q-expansions of t_0 till t_6 list second=1, 3,107, 71, -1,15, -15;// The coefficients of q such that all others //qi has integer positive coefficients. list coli1=coli; for (i=1; i<=7;i=i+1) { for (j=1; j<=until+1;j=j+1){coli1[i][j]=second[i]*coli[i][j]/coli[i][2];} } //----------------------------------------------------------------------- //-------------------------Yukawa coupling-------------------------------------------- pose=0; for (i=1; i<=10;i=i+1) { for (j=1; j<=until+1;j=j+1){pose[1,i]=pose[1,i]+coli[i][j]*q^(j-1);} } //We want to calculate the Yukawa coupling and the j-function. ring rr=0, (q,x(0..until)),dp; poly xxx; matrix pose=imap(r6, pose); int i; for (i=0; i<=until;i=i+1){xxx=xxx+x(i)*q^i;} //The Yukawa coupling poly difer; difer=pose[1,6]^3*xxx-(pose[1,5]-pose[1,1]^5)^2; ideal ddd; poly difer2=difer; for (i=0; i<=until;i=i+1){ddd=ddd, subst(difer2,q,0); difer2=diff(difer2,q);} ddd=std(ddd); matrix jf[1][until+1]; for (i=1; i<=until+1;i=i+1){ jf[1,i]=reduce(x(i-1), ddd)/(-5^4);} //Lambert series form for powers less than 10 matrix jf2=jf; jf2[1,1+1]=(jf[1,1+1]); jf2[1,2+1]=(jf[1, 2+1]-jf[1,1+1])/(2^3); jf2[1,3+1]=(jf[1,3+1]-jf[1,1+1])/(3^3); jf2[1,4+1]=(jf[1, 4+1]-jf[1,2+1])/(4^3); jf2[1,5+1]=(jf[1,5+1]-jf[1,1+1])/(5^3); jf2[1, 6+1]=(jf[1,6+1]-jf[1,3+1]-jf[1,2+1]+jf[1,1+1])/(6^3); jf2[1, 7+1]=(jf[1,7+1]-jf[1,1+1])/(7^3); jf2[1, 8+1]=(jf[1,8+1]-jf[1,4+1])/(8^3); jf2[1, 9+1]=(jf[1,9+1]-jf[1,3+1])/(9^3); jf2[1, 10+1]=(jf[1,10+1]-jf[1,5+1]-jf[1,2+1]+jf[1,1+1])/(10^3); //----------------------------The j-function----------------------- poly difer=0; difer=(pose[1,5]/q)*xxx-pose[1,1]^5; ideal ddd; poly difer2=difer; for (i=0; i<=until;i=i+1){ddd=ddd, subst(difer2,q,0); difer2=diff(difer2,q);} ddd=std(ddd); matrix jfun[1][until+1]; for (i=1; i<=until+1;i=i+1){ jfun[1,i]=reduce(x(i-1), ddd);} jfun=jfun*3125; //----------------------Writting in the Lambert series form //list coli2=coli1; // for (i=1; i<=7;i=i+1) // { // coli2[i][1+1]=(coli1[i][1+1]); // coli2[i][2+1]=(coli1[i][2+1]-coli1[i][1+1]); // coli2[i][3+1]=(coli1[i][3+1]-coli1[i][1+1]); // coli2[i][4+1]=(coli1[i][4+1]-coli1[i][2+1]); // coli2[i][5+1]=(coli1[i][5+1]-coli1[i][1+1]); // coli2[i][6+1]=(coli1[i][6+1]-coli1[i][3+1]-coli1[i][2+1]+coli1[i][1+1]); // coli2[i][7+1]=(coli1[i][7+1]-coli1[i][1+1]); // coli2[i][8+1]=(coli1[i][8+1]-coli1[i][4+1]); // coli2[i][9+1]=(coli1[i][9+1]-coli1[i][3+1]); // coli2[i][10+1]=(coli1[i][10+1]-coli1[i][5+1]-coli1[i][2+1]+coli1[i][1+1]); } //----------------------------------------------------------------------------- //----------------------Basis of the homology group---------------------------- LIB "linalg.lib"; ring r7=0,(x_(1..4)(1..4)),dp; //the basis in Van Straten-Van Enckevort article poly c=50/12; poly d=5; matrix Psi[4][4]=0,c,0,d,-c,0,-d,0,0,d,0,0,-d,0,0,0; matrix T[4][4]=1,1,1/2,1/6, 0,1,1,1/2,0,0,1,1,0,0,0,1; matrix S[4][4]=1,0,0,0,-c,1,0,0,0,0,1,0,-d,0,0,1; matrix C1=inverse(Psi); matrix Psi1=C1*Psi*transpose(C1); matrix T1=C1*T*inverse(C1); matrix S1=C1*S*inverse(C1); matrix C2[4][4]=-1,0,0,0,0,1,0,0,0,0,-2,0,0,0,0,6; matrix Psi2=C2*Psi1*transpose(C2); matrix T2=C2*T1*inverse(C2); matrix S2=C2*S1*inverse(C2); //Psi2, T2, S2 are written in the basis of my article. matrix Psisym[4][4]=0,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,0; matrix Tsym[4][4]=1,1,0,0,0,1,0,0,5,5,1,0,0,-5,-1,1; matrix Ssym[4][4]=1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1; //From this point on we want to calculate the base change from the basis in my article to the symplectic basis matrix P[4][4]; int i,j; for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { P[i,j]=x_(i)(j); } } ideal II=P*Psi2*transpose(P)-Psisym, P*T2-Tsym*P, P*S2-Ssym*P; II=std(II); C=0; for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { C[i,j]=reduce(x_(i)(j),II); } } //We find out that this C is our matrix C=1/((6/5)*p)*C; //-------------------writing in the symplectic basis------------------------------------------------ LIB "linalg.lib"; ring r7=(0,p),x,dp; //These Psi, T, S are used in my article matrix C[4][4]=0,-1,0,0,-1,0,0,0,0,-5/2,-5/2,0,0,25/6,0,5/6; matrix Psi[4][4]=0,0,0,-6/5,0,0,2/5,0,0,-2/5,0,2,6/5,0,-2,0; matrix T[4][4]=1,0,0,0,1,1,0,0,1,2,1,0,1,3,3,1; matrix S[4][4]=1,-25/6,0,-5/6,0,1,0,0,0,0,1,0,0,0,0,1; matrix Psi1=C*Psi*transpose(C); matrix T1=C*T*inverse(C); matrix S1=C*S*inverse(C); print(C); print(Psi1); print(T1); print(S1); //------------------------------------------------------------------------- //--------------------------Calculating the algebraic group-------------------- ring r9=(0, g_(1..4)(1..4)),x,dp; matrix G[4][4]=g_(1)(1),g_(1)(2),g_(1)(3),g_(1)(4),0,g_(2)(2),g_(2)(3),g_(2)(4),0,0,g_(3)(3),g_(3)(4),0,0,0,g_(4)(4); matrix F0[4][4]=0,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,0; matrix dif=transpose(G)*F0*G-F0; //------------------------Restricting the period map in the basis used in my article------------------------------------------------ LIB "linalg.lib"; ring r10=0,(x_(1..4)(1..4),y_(1..4)(1..4)) ,dp; matrix P[4][4];//period matrix matrix dP[4][4];//differential of the period matrix int i,j; for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { P[i,j]=x_(i)(j); } } for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { dP[i,j]=y_(i)(j); } } P[1,1]=1; P[1,2]=0; P[1,3]=0; P[1,4]=0; P[2,2]=1; P[2,3]=0; P[2,4]=0; P[3,4]=0; P[4,4]=-6/5; matrix Psi[4][4]=0,0,0,-6/5,0,0,2/5,0,0,-2/5,0,2,6/5,0,-2,0; //The intersection matrix in the basis of my article matrix F0[4][4]=0,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,0; matrix dif1=F0-transpose(P)*transpose(inverse(Psi))*P; ideal II=dif1; II=std(II); for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { P[i,j]=reduce(P[i,j],II); } } poly detP=reduce(det(P),II); //print(P); P[2,1]=x_(2)(1); P[4,3]=(6/5)*P[2,1]; //print(P); F0-transpose(P)*transpose(inverse(Psi))*P; P[4,2]=3*x_(2)(1)*x_(3)(2)-3*x_(3)(1)-5; print(F0-transpose(P)*transpose(inverse(Psi))*P); //The connection matrix dP[1,1]=0; dP[1,2]=0; dP[1,3]=0; dP[1,4]=0; dP[2,2]=0; dP[2,3]=0; dP[2,4]=0; dP[3,4]=0; dP[4,4]=0; dP[2,1]=1; dP[3,3]=0; dP[4,3]=6/5; matrix gm=transpose(dP)*transpose(adjoint(P))/number(detP); print(gm);gm[1,3];gm[1,4];gm[2,4]; //To do the calculations in the syplectic basis we have to do: matrix C[4][4]=0,-1,0,0,-1,0,0,0,0,-5/2,-5/2,0,0,25/6,0,5/6; matrix Psym=C*P; //The connection does not depend on the change base. //------------------------------------------------------------------------------------------ //------------------------Restricting the period map in the symplectic basis---------------- LIB "linalg.lib"; ring r10=0,(x_(1..4)(1..4),y_(1..4)(1..4)) ,dp; int i,j; matrix P[4][4]=x_(1)(1), 1, 0, 0, 1,0,0,0, x_(3)(1), x_(3)(2), 1,0, x_(4)(1), -x_(1)(1)*x_(3)(2)+x_(3)(1), -x_(1)(1), 1; matrix Psi[4][4]=0,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,0; matrix F0[4][4]=0,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,0; print(F0-transpose(P)*transpose(inverse(Psi))*P); matrix dP[4][4]=y_(1)(1), 0, 0, 0, 0,0,0,0, y_(3)(1), y_(3)(2), 0,0, y_(4)(1), -x_(1)(1)*y_(3)(2)-y_(1)(1)*x_(3)(2)+y_(3)(1), -y_(1)(1), 0; poly detP=det(P); matrix gm=transpose(dP)*transpose(adjoint(P))/number(detP); print(gm);gm[1,3];gm[1,4];gm[2,4]; //----------------Action of an arithmetic group-algebraic group-------------------------- LIB "linalg.lib"; ring r=(0,x_(1..4)(1..4)),(y_(2)(1), y_(3)(1..2), y_(4)(1), g_(1..4)(1..4)) ,dp; int i,j; matrix P[4][4];//period matrix matrix tau[4][4]=1,0,0,0,y_(2)(1),1,0,0, y_(3)(1),y_(3)(2),2/5,0,y_(4)(1),3*y_(2)(1)*y_(3)(2)-3*y_(3)(1)-5,(6/5)*y_(2)(1),-6/5; matrix G[4][4]=g_(1)(1),g_(1)(2),g_(1)(3),g_(1)(4),0,g_(2)(2),g_(2)(3),g_(2)(4),0,0,g_(3)(3),g_(3)(4),0,0,0,g_(4)(4); for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { P[i,j]=x_(i)(j); } } matrix F0[4][4]=0,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,0; matrix Psi[4][4]=0,0,0,-6/5,0,0,2/5,0,0,-2/5,0,2,6/5,0,-2,0; matrix D=tau*G-P; ideal II=D[1,1],D[1,2],D[1,3],D[1,4],D[2,1],D[2,2],D[2,3],D[2,4], D[3,1],D[3,2], D[3,3], D[3,4], D[4,1]; //transpose(G)*F0*G-F0, II=std(II); dim(II); for (i=1;i<=4;i=i+1) { for ( j=1;j<=4;j=j+1) { G[i,j]=reduce(G[i,j], II); tau[i,j]=reduce(tau[i,j], II); } } //------------------------------------------------------------------------------------------------ //-----------------------New moduli parameters---------------------------------------------------- LIB "linalg.lib"; LIB "foliation.lib"; int nv=3; //dimension int d=nv+2; //degree ring r=(0,z),x(1..nv+1),dp; int i,j; poly hilf1, hilf2; hilf2=1; for (i=1; i<=nv+1; i=i+1){ hilf1=hilf1+x(i)^d; hilf2=hilf2*x(i);} poly f=-z-hilf1+d*hilf2; number disc=z^nv*(z-1); list aabb=infoof(f, disc, etaof(f, disc,z)[2]); vector vc=[1]; matrix pfe=PFequ(f, poly(1), vc, aabb); pfe=-pfe*(1/pfe[1,nv+2]); matrix gm[nv+1][nv+1]; for (i=1; i<=nv;i=i+1){gm[i,i+1]=1; gm[nv+1,i]=pfe[1,i];} gm[nv+1,nv+1]= pfe[1,nv+1]; //-----Calculating Gauss-Manin in t_0 and t_4 parameters------------------------------------- ring r1=(0,t(0..nv+1), z, a),x(0..nv+1),dp; //x(i) represents dt(i) matrix gm=imap(r,gm); poly zt=t(nv+1)/(t(0)^(nv+2)); gm=substpar(gm, z, zt); gm=gm*(x(nv+1)/t(nv+1)-(nv+2)*x(0)/t(0))*zt; matrix S[nv+1][nv+1]; S[1,1]=t(0); int i,j; for (i=2;i<=nv+1;i=i+1) { S[i,1]=(-t(0)^(nv+3)/(t(nv+1)*number(nv+2)))*diffpar(S[i-1,1],t(0)); for (j=2;j<=nv+1;j=j+1) { S[i,j]= (-t(0)^(nv+3)/(t(nv+1)*number(nv+2)))*(diffpar(S[i-1,j],t(0))+S[i-1,j-1]); } } S=inverse(S); matrix Sd[nv+1][nv+1]; for (i=0; i<=nv+1;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} gm=(Sd+S*gm)*inverse(S); //------Calculating the intersection matrix in de Rham cohomology------------------------------------- ring r2=(0,t(0..nv+1)),x(0..nv+1),dp; matrix gm=imap(r1,gm); gm=subst(gm, x(4),0); gm=subst(gm, x(0),1); number om14=(1/625)*(1/(t(4)-t(0)^5)); number om23=-om14; number om24=diffpar(om14, t(0))-number(gm[4,4])*om14; number om34=diffpar(om24, t(0))-number(gm[4,4])*om24-number(gm[4,3])*om23; matrix F[4][4]=0,0,0,om14,0,0,om23,om24,0,-om23,0,om34, -om14, -om24,-om34,0; //check gm*F+F*transpose(gm)-diffpar(F, t(0)); //----------------Gauss-Manin in seven parameters ring r3=(0,t(0..nv+1),v_2,v_3), (x(0..nv+1), y_2,y_3),dp; matrix F=imap(r2,F); matrix gm=imap(r1, gm); poly u_2=1/(v_3*F[2,3]); poly u_1=-u_2*(t(3)*F[2,3]+F[2,4]/F[1,4]); poly v_1=-v_2*(t(3)*F[2,3]+F[2,4]/F[1,4])-v_3*(-t(2)*F[2,3]+F[2,4]/F[1,4]); matrix S[4][4]=1,0,0,0,u_1,u_2,0,0,v_1,v_2,v_3,0,t(1),t(2),t(3),1/number(F[1,4]); matrix Sd[4][4]; for (i=0; i<=nv+1;i=i+1){Sd=Sd+diffpar(S,t(i))*x(i);} Sd=Sd+diffpar(S,v_2)*y_2; Sd=Sd+diffpar(S,v_3)*y_3; gm=(Sd+S*gm)*inverse(S); ideal Ra=gm[nv+1,1..nv+1], gm[1,1], gm[1,2]-1, gm[2,2], gm[3,2]; Ra=std(Ra); matrix Ravec[1][nv+4]; for (i=0;i<=nv+1;i=i+1) {Ravec[1,i+1]=reduce(x(i),Ra);} Ravec[1,6]=reduce(y_3,Ra); Ravec[1,7]=reduce(y_2,Ra); matrix gmRa=gm; for (i=0;i<=nv+1; i=i+1){ gmRa=subst(gmRa, x(i),Ravec[1,i+1]); } gmRa=subst(gmRa, y_3,Ravec[1,6]); gmRa=subst(gmRa, y_2,Ravec[1,7]); division(gm[2,1],Ra)[2]; matrix A[nv+1][nv+1]; int rw, cl; poly delta=(t(nv+1)-t(0)^(nv+2))*t(nv+1); poly alpha=(t(0)^(nv+2)*x(nv+1)-(nv+2)*t(0)^(nv+1)*t(nv+1)*x(0))/(delta* t(0)^(nv+1)); //We assume that the reduce command gives only multiples of x(nv+1) poly alpha1=reduce(alpha,Ra); alpha1=subst(alpha1,x(nv+1),1);