FUNCTION : provemodfuncid - prove theta-function identity
CALLING SEQUENCE : provemodfuncid(jacid,CUSPS,WIDS,N)
PARAMETERS : jacid - sum of modular functions on Gamma[1](N)
Each term in the sum is a JAC-quotient to base N.
CUSPS - Set of inequivalent cusps for Gamma[1](N).
WIDS - List of corresponding widths.
GLOBAL VARIABLES :
qcheck, modfunccheck, totcheck, _ORDS, jptmp, jpqd, eptmp,
gltmp, EPRODL, GETAL, COFS, conpres, CONTERMS, mintottmp
SYNOPSIS :
(I) We cycle through the terms of jacid.
Let j be term number.
(1) Test if term is a constant.
If constant then conpres=1, j added to CONTERMS
list, EPROD[j]=1, GETAL[j]=[], and
_ORDS[j]=[0,0..].
(2) Assuming term is not a constant.
Let jpqd = power of q in jacterm.
Use jac2eprod to convert jacterm to GETA-prod.
Use GETAP2getalist to convert eprod to getalist.
Use getaprodcuspORDS to calculate ORDS of jacterm.
Result is stored in the array _ORDS as _ORDS[j].
(3) Check that the power of q matches ORD at oo.
If not, j is added to qcheck list.
(4) Use Gamma1ModFunc to check whether GETA-prod is a
modular function on Gamma[1](N).
If not, j is added to modfunccheck list.
(II) We now should have a complete array _ORDS.
(5) Final error check made. Each of the arrays qcheck,
modfunccheck, and totcheck should be empty. If not
an error message is returned which terminates the
proc.
(6) A WARNING is printed if any terms were constants.
(7) We use mintotORDS to min power of q to check
identity.
A query is made whether to check now.
If not (suggested), this min power is returned.
EXAMPLES :
> ETAnm:=(n,m)->JAC(m,n,infinity)*q^(QP2(m/n)*n/2)/JAC(0,n,infinity);
> ETAn:=n->q^(n/24)*JAC(0,n,infinity);
> CHOIID1:=ETAn(3)*ETAn(6)*ETAn(10)^2*ETAn(12)*ETAn(20)^3*ETAn(120)^3*ETAn(360)*
ETAnm(3,1)*ETAnm(6,2)*ETAnm(10,3)*ETAnm(12,4)*ETAnm(20,8)^3
-ETAn(1)*ETAn(2)*ETAn(5)^2*ETAn(8)*ETAn(20)^2*ETAn(40)*ETAn(360)^4
*ETAnm(10,4)*ETAnm(20,6)*ETAnm(20,8)*ETAnm(40,16)*ETAnm(360,120)^3
+ETAn(1)*ETAn(2)*ETAn(5)^2*ETAn(8)*ETAn(20)^2*ETAn(40)*ETAn(360)^4
*ETAnm(5,2)^2*ETAnm(20,6)*ETAnm(20,8)*ETAnm(40,4)*ETAnm(360,120)^3;
> choiid1:=expand(CHOIID1/op(1,CHOIID1));
> Nchoiid1:=mixedjac2jac(choiid1,360);
> cusps40:=cuspmake1(40);
> cusps40:=cusps40 minus {[1,0]};
> cusps40:=convert(cusps40,list);
> wids40:=map(x->cuspwid1(x[1],x[2],40),cusps40);
> wids40:=[1,op(wids40)];
> CUSPS40:=map(x->x[1]/x[2],cusps40);
> CUSPS40:=[oo,op(CUSPS40)];
> provemodfuncid(Nchoiid1,CUSPS40,wids40,40);
%TERM %, 1, %of %, 3,
% ******************************************************************%
%XX=%, 1
%TERM %, 2, %of %, 3,
% ******************************************************************%
2 2 2
%XX=%, - JAC(5, 40, infinity) JAC(6, 40, infinity) JAC(14, 40, infinity)
2 2 /
JAC(15, 40, infinity) JAC(16, 40, infinity) / (JAC(3, 40, infinity)
/
2 3
JAC(7, 40, infinity) JAC(8, 40, infinity) JAC(12, 40, infinity)
JAC(13, 40, infinity) JAC(17, 40, infinity) JAC(20, 40, infinity))
bytes used=87576612, alloc=7862880, time=32.93
bytes used=91577024, alloc=7862880, time=33.80
%Cusp ords: %
[[oo, 0], [1/10, -4], [3/10, -2], [7/10, -2], [9/10, -4], [1/20, 0], [3/20, -2],
[7/20, -2], [9/20, 0], [0, 0], [1/3, 0], [1/7, 0], [1/9, 0], [1/11, 0], [1/13, 0],
[1/17, 0], [1/19, 0], [1/2, 0], [1/6, 0], [1/14, 0], [1/18, 0], [4/15, 3], [1/8, 1],
13
[3/8, 1], [7/8, 1], [5/8, 1], [1/16, 1], [3/16, 1], [7/16, 1], [--, 1], [1/4, -2],
16
[3/4, -2], [1/12, -2], [7/12, -2], [1/5, 3], [3/5, 0], [2/5, 0], [4/5, 3], [1/15, 3],
13 11 13 17
[--, 0], [7/15, 0], [3/40, 1], [7/40, 1], [9/40, 0], [--, 0], [--, 1], [--, 1],
15 40 40 40
19
[--, 0]]
40
%TOTAL ORD = %, 0
%POWER of q CORRECT%
%All n are divisors of %, 40
%val0=%, 0
%which is even.%
%valinf=%, 0
%which is even.%
%It IS a modfunc on Gamma1(%, 40, %)%
%TERM %, 3, %of %, 3,
% ******************************************************************%
3 2 2
%XX=%, q JAC(2, 40, infinity) JAC(3, 40, infinity) JAC(5, 40, infinity)
JAC(6, 40, infinity) JAC(7, 40, infinity) JAC(13, 40, infinity)
2
JAC(14, 40, infinity) JAC(15, 40, infinity) JAC(17, 40, infinity)
2 / 12
JAC(18, 40, infinity) / (JAC(0, 40, infinity) JAC(12, 40, infinity)
/
JAC(20, 40, infinity))
bytes used=95577488, alloc=7862880, time=34.66
bytes used=99577648, alloc=7862880, time=35.53
%Cusp ords: %
[[oo, 3], [1/10, -4], [3/10, -2], [7/10, -2], [9/10, -4], [1/20, 0], [3/20, -2],
[7/20, -2], [9/20, 0], [0, 1], [1/3, 1], [1/7, 1], [1/9, 1], [1/11, 1], [1/13, 1],
[1/17, 1], [1/19, 1], [1/2, 0], [1/6, 0], [1/14, 0], [1/18, 0], [4/15, 0], [1/8, 0],
13
[3/8, 0], [7/8, 0], [5/8, 0], [1/16, 0], [3/16, 0], [7/16, 0], [--, 0], [1/4, -2],
16
[3/4, -2], [1/12, -2], [7/12, -2], [1/5, 0], [3/5, 1], [2/5, 1], [4/5, 0], [1/15, 0],
13 11 13 17
[--, 1], [7/15, 1], [3/40, 0], [7/40, 0], [9/40, 3], [--, 3], [--, 0], [--, 0],
15 40 40 40
19
[--, 3]]
40
%TOTAL ORD = %, 0
%POWER of q CORRECT%
%All n are divisors of %, 40
%val0=%, 2
%which is even.%
%valinf=%, 6
%which is even.%
%It IS a modfunc on Gamma1(%, 40, %)%
%min inf ord=%, 0
%mintotord = %, -24
%TO PROVE the identity we need to show that v[oo](ID) > %, 24
%*** There were NO errors. ***%
%*** WARNING: some terms were constants. ***%
%See array CONTERMS.%
To prove the identity we will need to verify if up to
q^(24).
Do you want to prove the identity? (yes/no)
yes
You entered yes.
We verify the identity to O(q^(104)).
104
O(q )
24
DISCUSSION : Choi's identity has three terms (including constant 1).
Each term is confirmed to be a modular function on Gamma[1](40).
mintotord = -24 so need only confirm identity up to q^24.
Identity is confirmed up to q^104.
SEE ALSO :