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]; 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); //Note that the basis of the de Rham cohomlogy is constructed from dx/df and not 5dx/df poly disc=(-nv-2)^nv/(a*(t(nv+1)-t(0)^(nv+2))); disc=substpar(disc, a, -5^7); //just for nv=3 S=0; 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; 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); 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)^(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); matrix Sb[nv+1][nv+1]; for (i=1; i<=nv+1;i=i+1){Sb[i,i]=1;} //base change 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; } 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]=alpja 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]); } substpar(gmRa[3,4]-(t(0)^(nv+2)-t(nv+1))^2/a, a, -5^7); //The result is zero //--------------------------qexpansion=-------------------------------------------- LIB "linalg.lib"; LIB "foliation.lib"; ring r=0,(t(0..9),q),dp; poly alpha32=(-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 alpha33=(12*t(0)^4+2/625*t(3)); poly alpha34=(-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)*alpha32+t(6)*alpha33, t(8), -t(5)^2+t(9), t(8)*alpha32+t(9)*alpha33-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. 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<=10;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);} } //We use only the first seven coordinate of the vector field. 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<=nth+1;j=j+1){coli1[i][j]=second[i]*coli[i][j]/coli[i][2];} } //----------------------------------------------------------------------- //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]); } //-------------------------------------------------------------------------- pose=0; for (i=1; i<=10;i=i+1) { for (j=1; j<=nth;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..10)),dp; poly xxx; matrix pose=imap(r, pose); int i; for (i=0; i<=10;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<=10;i=i+1){ddd=ddd, subst(difer2,q,0); difer2=diff(difer2,q);} ddd=std(ddd); matrix jf[1][11]; for (i=1; i<=11;i=i+1){ jf[1,i]=reduce(x(i-1), ddd)/(-5^4);} //Lambert series form 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; pose[1,5]=pose[1,5]/q; difer=pose[1,5]*xxx-pose[1,1]^5; ideal ddd; poly difer2=difer; for (i=0; i<=10;i=i+1){ddd=ddd, subst(difer2,q,0); difer2=diff(difer2,q);} ddd=std(ddd); matrix jfun[1][11]; for (i=1; i<=11;i=i+1){ jfun[1,i]=reduce(x(i-1), ddd);} jfun=jfun*3125;