A tutorial for the MAPLE ETA package
Frank Garvan

TL;DR
This paper provides a tutorial on using the ETA package in MAPLE for calculating and proving identities involving Dedekind's eta function, facilitating work with modular functions.
Contribution
It introduces the ETA package for MAPLE, enabling automated proofs of eta-product identities using the valence formula.
Findings
Simplifies proving eta-product identities.
Automates calculations with Dedekind's eta function.
Enhances research in modular forms.
Abstract
This is a tutorial for using ETA, a MAPLE package for calculating with Dedekind's eta function. The ETA package is designed for proving eta-product identities using the valence formula for modular functions.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Mathematical Identities · Analytic Number Theory Research · Mathematical functions and polynomials
A tutorial for the MAPLE ETA package
Frank Garvan
(Date: July 9, 2019)
Abstract.
This is a tutorial for using ETA, a MAPLE package for calculating with Dedekind’s eta function. The ETA package is designed for proving eta-product identities using the valence formula for modular functions.
Key words and phrases:
modular functions, eta functions, experimental math, maple, q-series, identities, congruences
2010 Mathematics Subject Classification:
05A30, 11F03, 11F20, 11F33
The author was supported in part by a grant from the Simon’s Foundation (#318714).
July 9, 2019
1. Introduction
The Dedekind eta-function is defined by
[TABLE]
where and .
The main goal of the ETA maple package is to automatically prove identities for eta-products.
1.1. Installation Instructions
First install the qseries package from
http://qseries.org/fgarvan/qmaple/qseries
and follow the directions on that page. Before proceeding it is advisable to become familiar with the functions in the qseries package. See [3] for a tutorial. Then go to
http://qseries.org/fgarvan/qmaple/ETA
to install the ETA package.
2. Modularity of eta-products
To prove a given eta-function identity one needs to basically do the following.
- (i)
Rewrite the identity in terms of generalized eta-functions. 2. (ii)
Check that each term in the identity is a modular function on some group . 3. (iii)
Determine the order at each cusp of of each term in the identity. 4. (iv)
Use the valence formula to determine up to which power of is needed to verify the identity. 5. (v)
Finally prove the identity by carrying out the verification.
In this section we explain how to carry out each of these steps in maple. Then we show how the whole process of proof can be automated.
2.1. Encoding eta-functions
We encode by eta(tau). We will consider eta-products of the form
[TABLE]
where is a positive integer and each and . We encode the product
[TABLE]
by the list
[, , , , …, ].
We call such a product an eta-product. Such a list is called a generalized permutation and usually written symbolically as
[TABLE]
We use the functions GPmake and gp2etaprod to convert between symbolic forms of eta-products.
GPmake(etaprod) — converts an eta-product to a generalized permutation.
gp2etaprod(gp) — converts the gneralized permutation gp to an eta-product.
EXAMPLE:
with(qseries):
with(ETA):
HM5:=qmul((1-q∧(5n))∧6/(1-q∧n)∧6,n=1..100):
ep:=etamake(HM5,q,50);
[TABLE]
gp:=GPmake(ep);
[TABLE]
gp2etaprod(gp);
[TABLE]
2.2. -Expansions
There are two functions to compute -expansions of eta-products.
etaprodtoqseries(etaprod) — returns the -expansion of the eta-product etaprod up to .
etaprodtoqseries2(etaprod) — a version of etaprodtoqseries that omits the factor in the -expansion of .
EXAMPLE:
with(qseries):
with(ETA):
gp:=[2,2,1,-1]:
ep:=gp2etaprod(gp);
[TABLE]
etaprodtoqseries(ep,50);
[TABLE]
etaprodtoqseries2(ep,50);
[TABLE]
2.3. Checking modularity
Newman [6] has found necessary and sufficient conditions under which an eta-product is a modular function on . Let be a fixed integer. Here an eta-product takes the form
[TABLE]
where each and .
Theorem 2.1** (Theorem 4.7, [6]).**
The function (given in (2.3)) is a modular function on if and only if
- (1)
, 2. (2)
, 3. (3)
, and 4. (4)
* is a square.*
By this theorem the eta-product (2.2) corresponding to the generalized permutation
[TABLE]
is a modular function on if the following five conditions hold:
- (1)
2. (2)
3. (3)
The integer is a square. 4. (4)
For each , and . 5. (5)
gammacheck(gp,N) — checks whether the eta-product corresponding to the generalized permutation gp is a modular function on . To see a test of each condition set the following global variable xprint := true.
EXAMPLE:
with(qseries):
with(ETA):
gp:=[1,2,2,-1,10,1,5,-2];
[TABLE]
ep:=gp2etaprod(gp);
[TABLE]
gammacheck(gp,10);
[TABLE]
ep2:=ep∧2;
[TABLE]
gp2:=GPmake(ep2);
[TABLE]
gammacheck(gp2,10);
[TABLE]
We considered two etaproducts:
[TABLE]
We see that is not a modular function on but its square is a modular function on . To see the reasons why failed we set the global variable xprint to true.
EXAMPLE:
xprint:=true:
gammacheck(gp,10);
Condition (1) holds
Condition (2) holds
Condition (3) does not hold
Condition (4) holds
Condition (5) does not hold
function is NOT invariant
[TABLE]
We see that is not a modular function on since it failed to satisfy Conditions (3) and (5).
To check whether an eta-product is a modular form with character use the following function.
gamma0FORMCHECK(gp,N) — checks whether the eta-product corresponding to the generalized permutation gp is a form on with character. See [7].
EXAMPLE:
with(qseries):
with(ETA):
gp2:=[1,4,2,4,4,-3,10,2,20,-1]:
ep2:=gp2etaprod(gp2);
[TABLE]
gamma0FORMCHECK(gp2,40);
[‘‘N=’’,40,‘‘weight=’’,3,‘‘character=’’,[,,]]
This means that the function
[TABLE]
is a modular form on of weight and character .
2.4. Cusps
Chua and Lang [2] have found a set of inequivalent cusps for .
Theorem 2.2** ([2](p.354)).**
Let N be a positive integer and foreach positive divisor of let . Then set
[TABLE]
is a complete set of inequivalent cusps of where
[TABLE]
cuspmake(N) — returns a complete set of inequivalent cusps of .
EXAMPLE:
cuspmake(40);
[TABLE]
Biagioli [1] has found the fan width of the cusps of .
Lemma 2.3** (Lemma 4.2, [1]).**
If , then the fan width of at is
[TABLE]
fanwidth(r,N) — returns the width of the cusp for the group .
EXAMPLE:
with(ETA):
fanwidth(1/8,40);
[TABLE]
2.5. Orders at cusps
Ligozat [5] has computed the order of an eta-product at the cusps of .
Theorem 2.4** (Theorem 4.8, [5]).**
If the eta-product (given in (2.3)) is a modular function on , then its order at the cusp (assuming ) is
[TABLE]
Following [1, p.275], [8, p.91] we consider the order of a function with respect to a congruence subgroup at the cusp and denote this by
[TABLE]
The following are functions for computing orders and invariant orders of eta-products at cusps.
cuspord(etaprod,cusp) — computes the invariant order at the given cusp of the given eta-product.
cuspORD(etaprod,N,cusp) — computes the order of the given eta-product at the given cusp with respect to the group .
cuspORDS(etaprod,CUSPS,N) — computes the order of the given eta-product at each cusp in a set respect to the group .
EXAMPLE:
with(ETA):
gp:=[20, -3, 10, 5, 5, -2, 4, 15, 2, -25, 1, 10]:
ep:=gp2etaprod(gp);
[TABLE]
gammacheck(gp,20);
[TABLE]
cuspord(ep,1/4);
[TABLE]
fanwidth(1/4,20);
[TABLE]
cuspORD(ep,20,1/4);
[TABLE]
cuspORDS(ep,cuspmake(20),20);
[TABLE]
Let
[TABLE]
We see that is a modular function on ,
[TABLE]
and
[TABLE]
3. Proving eta-function identities
3.1. Linear relations between eta-products
To prove a identity involving eta-products one needs to basically do the following.
- (i)
Rewrite the identity in terms of eta-functions. 2. (ii)
Check that each term in the identity is a modular function on some group . 3. (iii)
Determine the order at each cusp of of each term in the identity. 4. (iv)
Use the valence formula to determine up to which power of is needed to verify the identity. 5. (v)
Finally prove the identity by carrying out the verification.
In this section we explain how to carry out each of these steps in maple. Then we show how the whole process of proof can be automated.
Our method for proving eta-product identities depends on
Theorem 3.1** (The Valence Formula [8](p.98)).**
Let be a modular form of weight with respect to a subgroup of finite index in . Then
[TABLE]
where is the index of in ,
[TABLE]
* is a fundamental region for , and is given in equation (2.6).*
Remark 3.2*.*
For , is defined in terms of the invariant order , which is interpreted in the usual sense. See [8, p.91] for details of this and the notation used.
Since any modular function has weight and any eta-product has no zeros and no poles on the upper-half plane we have
Corollary 3.3**.**
Let , , …, be eta-products that are modular functions on . Let be a set of inequivalent cusps for . Define the constant
[TABLE]
and consider
[TABLE]
where each . Then
[TABLE]
if and only if
[TABLE]
To prove an alleged eta-product identity, we first rewrite it in the form
[TABLE]
where each and each is an eta-product of level . We use the following algorithm:
STEP 0. Write the identity in the form (3.5).
STEP 1. Use Theorem 2.1 to check that is a modular function on for each .
STEP 2. Use Theorem 2.2 to find a set of inequivalent cusps for and the fan width of each cusp.
STEP 3. Use Theorem 2.4 to calculate the order of each eta-product at each cusp of .
STEP 4. Calculate
[TABLE]
STEP 5. Show that
[TABLE]
where
[TABLE]
Corollary 3.3 then implies that and hence the eta-product identity (3.5).
To calculate the constant we use
mintotORDS(L,n) — returns the constant in equation (3.2) where is the array of ORDS:
[TABLE]
where
[TABLE]
and , , …, are the inequivalent cusps of apart from . Each is computed using getaprodcuspORDS.
EXAMPLE: As an example we prove Ramanujan’s Entry 3.1:
[TABLE]
where
[TABLE]
STEP 0. We rewrite the identity (3.6) in the form (3.5)
EXAMPLE:
gpP:=[1,2,3,-2]:
gpQ:=[2,2,6,-2]:
P:=gp2etaprod(gpP);
[TABLE]
Q:=gp2etaprod(gpQ);
[TABLE]
ETAid:=P*Q+9/P/Q - (Q/P)∧3 - (P/Q)∧3;
[TABLE]
ETAidn:=etanormalid(%);
[TABLE]
Thus identity (3.6) is equivalent to
[TABLE]
where
[TABLE]
[TABLE]
STEP 1. We check that each eta-product is a modular function on .
EXAMPLE:
f1:=op(2,ETAidn)/9;
[TABLE]
f2:=-op(3,ETAidn);
[TABLE]
f3:=-op(4,ETAidn);
[TABLE]
gpf1:=GPmake(f1): gpf2:=GPmake(f2): gpf3:=GPmake(f3):
gammacheck(gpf1,6),gammacheck(gpf2,6),gammacheck(gpf3,6);
[TABLE]
STEP 2. We find a set of inequivalent cusps for and their fan widths.
EXAMPLE:
C6:=cuspmake(6);
[TABLE]
seq([cusp,fanwidth(cusp,6)], cusp in C6);
[TABLE]
STEP 3. We compute for each and each cusp of apart from .
EXAMPLE:
C6:=cuspmake(6) minus {1/6};
[TABLE]
ORDS0:=cuspORDSnotoo(1,C6,6);
[TABLE]
ORDS1:=cuspORDSnotoo(f1,C6,6);
[TABLE]
ORDS2:=cuspORDSnotoo(f2,C6,6);
[TABLE]
ORDS3:=cuspORDSnotoo(f3,C6,6);
[TABLE]
STEP 4. We calculate the constant in (3.2).
EXAMPLE:
mintotGAMMA0ORDS([ORDS0,ORDS1,ORDS2,ORDS3],4);
[TABLE]
STEP 5. To prove the identity (3.6) we need to verify that
[TABLE]
EXAMPLE:
qetacombo(1+9*f1-f2-f3,100);
[TABLE]
This completes the proof of the identity (3.6). We only had to show that the coefficient of was zero in the -expansion of for . We actually did it for as a check.
STEPS 1–5 may be automated using the following function.
provemodfuncGAMMA0id(etaid,N) — returns the constant in equation (3.2) and prints details of the verification and proof of the identity corresponding to etaid, which is a linear combination of symbolic eta-products, and is the level. If xprint=true then more details of the verification are printed. When this function is called there is a query asking whether to verify the identity. Enter yes to carry out the verification.
EXAMPLE:
provemodfuncGAMMA0id(1+9*f1-f2-f3,6);
"TERM ", 1, "of ", 4, " *****************"
"TERM ", 2, "of ", 4, " *****************"
"TERM ", 3, "of ", 4, " *****************"
"TERM ", 4, "of ", 4, " *****************"
"mintotord = ", -2
"TO PROVE the identity we need to show that voo > ", 2
*** There were NO errors.
*** o Each term was modular function on
Gamma0(6).
*** o We also checked that the total order of
each term was zero.
"*** WARNING: some terms were constants. ***"
"See array CONTERMS."
To prove the identity we will need to verify if up to
q∧(3).
Do you want to prove the identity? (yes/no)
You entered yes.
We verify the identity to O(q∧(14)).
RESULT: The identity holds to O(q∧(14)).
CONCLUSION: This proves the identity since we had only
to show that voo > 2.
printETAIDORDStable — prints an ORDs table for the and lower bound for after provemodfuncGAMMA0id is run. Formatted output from our example is given below in Table 3.1. By summing the last column we see that , which confirms an earlier calculation using mintotORDS.
[TABLE]
Orders at the cusps of of the functions , , and in (3.7) needed in the proof of Ramanujan’s identity (3.6). This table was produced by printETAIDORDStable().
provemodfuncGAMMA0idBATCH(etaid,N) — is a version of provemodfuncGAMMA0id that prints less detail and does not query.
EXAMPLE:
provemodfuncGAMMA0idBATCH(1+9*f1-f2-f3,6);
*** There were NO errors.
*** o Each term was modular function on
Gamma0(6).
*** o We also checked that the total order of
each term was zero.
To prove the identity we will need to verify if up to
q∧(3).
*** The identity below is PROVED!
[TABLE]
Let . means the identity is proved. (the constant in equation (3.2)), and we see that . This confirms an earlier calculation using mintotORDS. To print out minimal information set noprint:=true.
EXAMPLE:
noprint:=true:
provemodfuncGAMMA0idBATCH(1+9*f1-f2-f3,6);
[TABLE]
3.2. identities
Let be prime and suppose
[TABLE]
is a modular function. We define
[TABLE]
In this section show how to modify out method to prove eta-product identities for when is also an eta-product.
It is known that if is a modular function on , where , then is a modular function on . Gordon and Hughes [4, Theorem 4, p.336] have found lower bounds for the invariant orders of at cusps. Let denote the -adic order of an integer ; i.e. the highest power of that divides .
Theorem 3.4** (Theorem 4, [4]).**
Suppose is a modular function on , where is prime and . Let be a cusp of , where and . Then
[TABLE]
EXAMPLE:
with(qseries):
with(ETA):
gpF:=[2,1,25,1,1,-1,50,-1]:
epF:=gp2etaprod(gpF);
[TABLE]
gammacheck(gpF,50);
[TABLE]
seq([cusp,UpLB(epF,cusp,50,5)],cusp in cuspmake(10));
[TABLE]
We see that
[TABLE]
is a modular function on . From Theorem 3.4 we have the following lower bounds for the orders of at the cusps of .
[TABLE]
This example is taken from [4, p.338]. It turns out that is an etaproduct.
EXAMPLE:
F:=etaprodtoqseries(epF,1000):
sf:=sift(F,q,5,0,1000):
epG:=etamake(sf,q,100);
[TABLE]
seq([cusp,cuspORD(epG,10,cusp)],cusp in cuspmake(10));
[TABLE]
We see that
[TABLE]
where
[TABLE]
We have the following exact values for the orders of at the cusps of .
[TABLE]
These values are consistent with the lower bounds that we found.
It is a simple matter to modify our method, from Section 3.1, for proving linear relations between eta-products, to proving eta-product identities. We wish to prove an identity of the form
[TABLE]
where is prime, , is an eta-product and a modular function on , and each is an eta-product and modular function on . We use the following algorithm:
STEP 0. Write the identity in the form (3.9).
STEP 1. Use Theorem 2.1 to check that is a modular function on for each , and is a modular function on .
STEP 2. Use Theorem 2.2 to find a set of inequivalent cusps for and the fan width of each cusp.
STEP 3a. We compute for each and each cusp of apart from .
STEP 3b. Use Theorem 3.4 to find a lower bound for
[TABLE]
for each cusp of . Call this lower bound .
STEP 4. Calculate
[TABLE]
STEP 5. Show that
[TABLE]
where
[TABLE]
Corollary 3.3 then implies that and hence the eta-product identity (3.9).
EXAMPLE: Let
[TABLE]
We prove that
[TABLE]
STEP 0. Write the identity in the form (3.9). The identity is
[TABLE]
where
[TABLE]
STEP 1. Use Theorem 2.1 to check that is a modular function on for each , and is a modular function on .
EXAMPLE:
with(qseries):
with(ETA):
gpg:=[100, -3, 50, 5, 25, -2, 10, -8, 5, 4, 4, 3, 2, 3, 1, -2]:
epg:=gp2etaprod(gpg);
[TABLE]
gammacheck(gpg,100);
[TABLE]
gpf1:=[10, 8, 5, -4, 2, -8, 1, 4]:
epf1:=gp2etaprod(gpf1);
[TABLE]
gpf2:=[20, -3, 10, 5, 5, -2, 4, -1, 2, -1, 1, 2]:
epf2:=gp2etaprod(gpf2);
[TABLE]
gammacheck(gpf1,20),gammacheck(gpf2,20);
[TABLE]
STEP 2. Use Theorem 2.2 to find a set of inequivalent cusps for and the fan width of each cusp.
EXAMPLE:
with(ETA):
C20:=cuspmake(20);
[TABLE]
seq([cusp,fanwidth(cusp,20)], cusp in C20);
[TABLE]
STEP 3a. We compute for each and each cusp of apart from .
EXAMPLE:
C20:=cuspmake(20) minus {1/20}:
ORDS1:=cuspORDSnotoo(epf1,C20,20);
[TABLE]
ORDS2:=cuspORDSnotoo(epf2,C20,20);
[TABLE]
STEP 3b. Use Theorem 3.4 to find a lower bound for
[TABLE]
for each cusp of .
EXAMPLE:
C20:=cuspmake(20) minus{1/20}:
ORDSg:=[seq([cusp,UpLB(epg,cusp,100,5)], cusp in C20)], ;
[TABLE]
STEP 4. Calculate the constant in (3.10).
EXAMPLE:
mintotGAMMA0ORDS([ORDSg,ORDS1,ORDS2], ,3);
[TABLE]
STEP 5. To prove the identity (3.11) we need to verify that
[TABLE]
where
[TABLE]
EXAMPLE:
U5g:=sift(etaprodtoqseries(epg,1010),q,5,0,1000):
h:=U5g - qetacombo(5epf1 + 2epf2,210):
series(h,q,201);
[TABLE]
This completes the proof of the identity (3.11). We only had to show that the coefficient of was zero in the -expansion of for . We actually did it for as a check.
STEPS 1–5 may be automated using the following function.
provemodfuncGAMMA0UpETAid(EP,p,etacombo,N) — attempts to prove the identity
[TABLE]
where EP is an eta-product and a modular function on , i sprime, , and etacombo is a linear combination of eta-products which are all modular functions on . It returns the constant in equation (3.10) and prints (if possible) the details of the verification and proof of the identity. If xprint=true then more details of the verification are printed. When this function is called there is a query asking whether to verify the identity. Enter yes to carry out the verification.
EXAMPLE:
etacombo:=5epf1 + 2epf2:
provemodfuncGAMMA0UpETAid(epg,5,etacombo,20);
*** There were NO errors.
*** o EP is an MF on Gamma0
*** o Each term in the etacombo is a modular function on
Gamma0(20).
*** o We also checked that the total order of
each term etacombo was zero.
*** To prove the identity U5=etacombo we need to show
that voo > 3 This means checking up to q∧(4).
Do you want to prove the identity? (yes/no)
You entered yes.
We verify the identity to O(q∧(43)).
We find that LHS - RHS is
[TABLE]
RESULT: The identity holds to O(q∧(43)).
CONCLUSION: This proves the identity since we had only
to show that voo > 3.
provemodfuncGAMMA0UpETAidBATCH(EP,p,etacombo,N) — is a version of
provemodfuncGAMMA0UpETAid that prints less detail and does not query.
EXAMPLE:
provemodfuncGAMMA0UpETAidBATCH(epg,5,etacombo,20);
*** There were NO errors.
*** o EP is an MF on Gamma0
*** o Each term in the etacombo is a modular function on
Gamma0(20).
*** o We also checked that the total order of
each term etacombo was zero.
*** To prove the identity U5=etacombo we need to show
that voo > 3 This means checking up to q∧(4).
We find that LHS - RHS is
[TABLE]
[TABLE]
Let . means the identity is proved. (the constant in equation (3.2)), and we see that . This confirms an earlier calculation using mintotORDS. mean the identity was checked up to . To print out minimal information set noprint:=true.
EXAMPLE:
noprint:=true:
provemodfuncGAMMA0UpETAidBATCH(epg,5,etacombo,20);
[TABLE]
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1[1] Anthony J. F. Biagioli, A proof of some identities of Ramanujan using modular forms , Glasgow Math. J. 31 (1989), no. 3, 271–295. MR 1021804
- 2[2] Kok Seng Chua and Mong Lung Lang, Congruence subgroups associated to the monster , Experiment. Math. 13 (2004), no. 3, 343–360. MR 2103332
- 3[3] Frank Garvan, A q 𝑞 q -product tutorial for a q 𝑞 q -series MAPLE package , Sém. Lothar. Combin. 42 (1999), Art. B 42d, 27, The Andrews Festschrift (Maratea, 1998). MR 1701583
- 4[4] B. Gordon and K. Hughes, Ramanujan congruences for q ( n ) 𝑞 𝑛 q(n) , Analytic number theory (Philadelphia, Pa., 1980), Lecture Notes in Math., vol. 899, Springer, Berlin-New York, 1981, pp. 333–359. MR 654539
- 5[5] Gérard Ligozat, Courbes modulaires de genre 1 1 1 , Société Mathématique de France, Paris, 1975, Bull. Soc. Math. France, Mém. 43, Supplément au Bull. Soc. Math. France Tome 103, no. 3. MR 0417060
- 6[6] Morris Newman, Construction and application of a class of modular functions. II , Proc. London Math. Soc. (3) 9 (1959), 373–387. MR 0107629
- 7[7] Ken Ono, The web of modularity: arithmetic of the coefficients of modular forms and q 𝑞 q -series , CBMS Regional Conference Series in Mathematics, vol. 102, Published for the Conference Board of the Mathematical Sciences, Washington, DC; by the American Mathematical Society, Providence, RI, 2004. MR 2020489
- 8[8] Robert A. Rankin, Modular forms and functions , Cambridge University Press, Cambridge, 1977. MR 0498390
