FUNCTION : provemodfuncid - prove theta-function identity CALLING SEQUENCE : provemodfuncid(jacid,N) PARAMETERS : jacid - sum of modular functions on Gamma[1](N) Each term in the sum is a JAC-quotient to base N. N - positive integer GLOBAL VARIABLES : qcheck, modfunccheck, totcheck, _ORDS, jptmp, jpqd, eptmp, gltmp, EPRODL, GETAL, COFS, conpres, CONTERMS, mintottmp, overrideproofq SYNOPSIS : (I) First we compute a complete set of inequivalent cusps and corresponids widths for Gamma1(N). (II) 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. (III) 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. **NOTE**: To overide this query set global variable overrideproofq to true: EXAMPLES : > with(qseries): > with(thetaids): > provemodfuncid(); ------------------------------------------------------------- provemodfuncid(jacid,N) 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 vars (can be used for error-checking): qcheck, modfunccheck, totcheck, _ORDS, jptmp, jpqd, eptmp, gltmp, EPRODL, GETAL, COFS, conpres, CONTERMS, mintottmp ** Do you want a DETAILED DESCRIPTION of this proc? (yes/no) ------------------------------------------------------------- > 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; /749\ |---| \24 / 3 CHOIID1 := q JAC(0, 10, infinity) JAC(0, 120, infinity) JAC(0, 360, infinity) JAC(1, 3, infinity) JAC(2, 6, infinity) 749 --- 3 24 JAC(3, 10, infinity) JAC(4, 12, infinity) JAC(8, 20, infinity) - q 2 JAC(0, 1, infinity) JAC(0, 2, infinity) JAC(0, 5, infinity) JAC(0, 8, infinity) JAC(0, 360, infinity) JAC(4, 10, infinity) JAC(6, 20, infinity) JAC(8, 20, infinity) JAC(16, 40, infinity) /821\ |---| 3 \24 / JAC(120, 360, infinity) /JAC(0, 10, infinity) + q JAC(0, 1, infinity) JAC(0, 2, infinity) JAC(0, 8, infinity) JAC(0, 360, infinity) 2 JAC(2, 5, infinity) JAC(6, 20, infinity) JAC(8, 20, infinity) 3 JAC(4, 40, infinity) JAC(120, 360, infinity) > NCHOIID1:=processjacid(CHOIID1); 2 2 NCHOIID1 := 1 - JAC(5, 40, infinity) JAC(6, 40, infinity) 2 2 2 / JAC(14, 40, infinity) JAC(15, 40, infinity) JAC(16, 40, infinity) / ( / 2 JAC(3, 40, infinity) JAC(7, 40, infinity) JAC(8, 40, infinity) 3 JAC(12, 40, infinity) JAC(13, 40, infinity) JAC(17, 40, infinity) 3 2 JAC(20, 40, infinity)) + q JAC(2, 40, infinity) JAC(3, 40, infinity) 2 JAC(5, 40, infinity) JAC(6, 40, infinity) JAC(7, 40, infinity) 2 JAC(13, 40, infinity) JAC(14, 40, infinity) JAC(15, 40, infinity) 2 / 12 JAC(17, 40, infinity) JAC(18, 40, infinity) / (JAC(0, 40, infinity) / JAC(12, 40, infinity) JAC(20, 40, infinity)) > jcombobase(NCHOIID1); 40 > overrideproofq:=true: > provemodfuncid(NCHOIID1,40); "TERM ", 1, "of ", 3, " *****************" "TERM ", 2, "of ", 3, " *****************" "TERM ", 3, "of ", 3, " *****************" "mintotord = ", -24 "TO PROVE the identity we need to show that v[oo](ID) > ", 24 *** There were NO errors. *** o Each term was modular function on Gamma1(40). *** o We also checked that the total order of each term was zero. *** o We also checked that the power of q was correct in each term. "*** 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) You entered yes. We verify the identity to O(q^(104)). RESULT: The identity holds to O(q^(104)). CONCLUSION: This proves the identity since we had only to show that v[oo](ID) > 24. 24 > xprint:=true; xprint := true > provemodfuncid(NCHOIID1,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)) Cusp ords: [[oo, 0], [0, 0], [1/2, 0], [1/3, 0], [1/4, -2], [1/5, 3], [1/6, 0], [1/7, 0], [1/8, 1], [1/9, 0], [1/10, -4], [1/11, 0], [1/12, -2], [1/13, 0], [1/14, 0], [1/15, 3], [1/16, 1], [1/17, 0], [1/18, 0], [1/19, 0], [1/20, 0], [2/5, 0], [3/4, -2], [3/5, 0], [3/8, 1], [3/10, -2], [3/16, 1], [3/20, -2], [3/40, 1], [4/5, 3], [4/15, 3], [5/8, 1], [7/8, 1], [7/10, -2], [7/12, -2], [7/15, 0], 11 [7/16, 1], [7/20, -2], [7/40, 1], [9/10, -4], [9/20, 0], [9/40, 0], [--, 0], 40 13 13 13 17 19 [--, 0], [--, 1], [--, 1], [--, 1], [--, 0]] 15 16 40 40 40 TOTAL ORD = 0 "POWER of q CORRECT" * starting Gamma1ModFunc with L=[[40, 3, -1], [40, 5, 2], [40, 6, 2], [40, 7, -1], [40, 8, -2], [40, 12, -3], [40, 13, -1], [40, 14, 2], [40, 15, 2], [40, 16, 2], [40, 17, -1], [40, 20, -1]] and N=40 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)) Cusp ords: [[oo, 3], [0, 1], [1/2, 0], [1/3, 1], [1/4, -2], [1/5, 0], [1/6, 0], [1/7, 1], [1/8, 0], [1/9, 1], [1/10, -4], [1/11, 1], [1/12, -2], [1/13, 1], [1/14, 0], [1/15, 0], [1/16, 0], [1/17, 1], [1/18, 0], [1/19, 1], [1/20, 0], [2/5, 1], [3/4, -2], [3/5, 1], [3/8, 0], [3/10, -2], [3/16, 0], [3/20, -2], [3/40, 0], [4/5, 0], [4/15, 0], [5/8, 0], [7/8, 0], [7/10, -2], [7/12, -2], [7/15, 1], 11 [7/16, 0], [7/20, -2], [7/40, 0], [9/10, -4], [9/20, 0], [9/40, 3], [--, 3], 40 13 13 13 17 19 [--, 1], [--, 0], [--, 0], [--, 0], [--, 3]] 15 16 40 40 40 TOTAL ORD = 0 "POWER of q CORRECT" * starting Gamma1ModFunc with L=[[40, 2, 2], [40, 3, 1], [40, 5, 2], [40, 6, 1], [40, 7, 1], [40, 12, -1], [40, 13, 1], [40, 14, 1], [40, 15, 2], [40, 17, 1], [40, 18, 2], [40, 20, -1]] and N=40 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. *** o Each term was modular function on Gamma1(40). *** o We also checked that the total order of each term was zero. *** o We also checked that the power of q was correct in each term. "*** 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) You entered yes. We verify the identity to O(q^(104)). RESULT: The identity holds to O(q^(104)). CONCLUSION: This proves the identity since we had only to show that v[oo](ID) > 24. 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 : provemodfuncidBATCH