$ \newcommand{\setC}{\mathbb{C}} \newcommand{\setH}{\mathbb{H}} \newcommand{\setN}{\mathbb{N}} \newcommand{\setQ}{\mathbb{Q}} \newcommand{\setZ}{\mathbb{Z}} \newcommand{\modularOrbit}[1]{\mathcal{O}_{#1}} \newcommand{\qPochhammer}[3][\infty]{\left( #2;#3 \right)_{#1}} $ Via jupytext this file can be shown as a jupyter notebook.

In [1]:
)read /home/hemmecke/g/qeta/input/jfricas-test-support.input )quiet

QEta Tutorial

This file contains a short tutorial of the features of QEta. Follow the instructions on the QEta website in order to install it.

This notebook itself is available in a text form as QEtaTutorial.input-test. You just have to rename the file extension to .input in order to run it through the computer algebra system FriCAS.

In order to test the commands appearing here, the tutorial contains a number of commands like assertTrue or assertEquals, that can be run automatically as a testsuite check.

Init

In [2]:
-------------------------------------------------------------------
--setup
-------------------------------------------------------------------

To work with QEta, you first have to compile and load it. Compilation must only be done once from a terminal, inside the directory where the QEta source code resides. In the following we assume that the QEta source code lives in the fricas/qeta subdirectory of your home directory.

cd $HOME/fricas/qeta
make compile-spad

That will compile everything into fricas/qeta/tmp.

To load QEta, do the following inside a Jupyter notebook (running the FriCAS kernel).

)cd
)cd fricas/qeta/tmp
)set messaget time off
)set message type off
)read projectlibs.input )quiet
)read qetamacros.input )quiet

If you want the output look nicer in the Jupyter notebook, then issue the following commands.

)set output algebra off
setFormat!(FormatMathJax)$JFriCASSupport

In qetamacros.input quite a number of macros are defined that make working with QEta functions a bit simpler. Inside this notebook, we use the abbreviations defined there.

In addition to these macros, we define here some abbreviations for some numbers so that it is clearer what the output option is.

In [3]:
C ==> QQ
RKI ==> QEtaRamanujanKolbergIdentity(C)
oo ==> infinity()$Cusp
qIdentity     ==> 2^0
expand        ==> 2^1
nonModular    ==> 2^2
asExpression  ==> 2^3
withSubscript ==> 2^4
)set stream calc 2
In [4]:
-------------------------------------------------------------------
--endsetup
-------------------------------------------------------------------

The following cell should only be evaluated, if you want the traditional 2D ASCII output of FriCAS.

In [ ]:
)set output formatted off
)set output algebra on

Ramanujan congruences

In [5]:
-------------------------------------------------------------------
--test:RamanujanCongruences
-------------------------------------------------------------------

Ramanujan discovered that \begin{align} p(5n+4) &\equiv 0 \pmod{5}\label{eq:p5}\\ p(7n+5) &\equiv 0 \pmod{7}\label{eq:p7}\\ p(11n+6) &\equiv 0 \pmod{11}\label{eq:p11} \end{align} for all natural numbers $n\in\setN$ where $p(n)$ denotes the number of partitions of $n$. See https://en.wikipedia.org/wiki/Ramanujan%27s_congruences.

In QEta a sequence $(a(n))_{n\geq0}$ given by its generating series as \begin{align*} \sum_{n=0}^\infty a(n)q^n &= \prod_{\delta|M} \qPochhammer{q^\delta}{q^\delta}^{r_\delta} \end{align*} can be specified by the $(\delta, r_\delta)$ pairs.

For the partition function we have $M=1$ and $r_1=-1$, so we specify the following.

In [6]:
mm := 1; rspec := eqSPEC [[1,-1]]
Out[6]:
\[ \left[\left[1, -1\right]\right] \]

In the following, we always use that $q=\exp(2\pi i \tau)$.

$p(5n+4) \equiv 0 \pmod{5}$

We want an expansion in terms of eta-functions $\eta(\tau)$ and $\eta(5\tau)$.

In [7]:
idxs := [[1],[5]];

We compute an identities for \begin{gather*} \sum_{n=0}^\infty a(mn+t)q^n \end{gather*} in terms of eta-quotients. This identity is an identity of modular functions for $\Gamma_0(5)$.

In [8]:
id := findIdM0(5, rspec, 5, 4, idxs);
-- numOfGaps:=[0, 0]
In [9]:
pretty(id, expand + asExpression)
Out[9]:
\[ {q}^{\frac{19}{24}}\, \frac{{η\left(τ\right)}^{6}}{{η\left(5\, τ\right)}^{5}}\, \left(\sum_{n=0}^{\infty }{a\left(5\, n+4\right)\, {q}^{n}}\right)=5 \]

$p(7n+5) \equiv 0 \pmod{7}$

We can do similar steps for the Ramanujan congruence modulo 7.

In [10]:
idxs := [[1],[7]];
id := findIdM0(7, rspec, 7, 5, idxs);
pretty(id, expand + asExpression)
-- numOfGaps:=[0, 0]
Out[10]:
\[ \frac{1}{49}\, {q}^{\frac{17}{24}}\, \frac{{η\left(τ\right)}^{8}}{{η\left(7\, τ\right)}^{7}}\, \left(\sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}\right)=\frac{1}{7}\, \frac{{η\left(τ\right)}^{4}}{{η\left(7\, τ\right)}^{4}}+1 \]

The variable id, in fact, contains all the data to show the identity in different formats.

For example, adding the nonModular option, brings the cofactor of the generating function to the right-hand side.

In [11]:
pretty(id, expand + asExpression + nonModular)
Out[11]:
\[ \sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}=7\, {q}^{-\frac{17}{24}}\, \frac{{η\left(7\, τ\right)}^{3}}{{η\left(τ\right)}^{4}}+49\, {q}^{-\frac{17}{24}}\, \frac{{η\left(7\, τ\right)}^{7}}{{η\left(τ\right)}^{8}} \]

The option qIdentity shows $q$-Pochhammer symbols instead of Dedekind eta-functions.

In [12]:
pretty(id, expand + asExpression + nonModular + qIdentity)
Out[12]:
\[ \sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}=7\, \frac{{{\left({q}^{7}; {q}^{7}\right)}_{\infty }}^{3}}{{{\left(q, q\right)}_{\infty }}^{4}}+49\, q\, \frac{{{\left({q}^{7}; {q}^{7}\right)}_{\infty }}^{7}}{{{\left(q, q\right)}_{\infty }}^{8}} \]

Since this might sometimes be a too lengthy expression, we can remove the asExpression option and show the identity with variables where $u_k$ stands for $\qPochhammer{q^k}{q^k}$.

In [13]:
pretty(id, expand + nonModular + qIdentity)
Out[13]:
\[ \sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}=7\, \frac{{u7}^{3}}{{u1}^{4}}+49\, q\, \frac{{u7}^{7}}{{u1}^{8}} \]
In [14]:
pretty(id, expand + nonModular + qIdentity + withSubscript)
Out[14]:
\[ \sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}=7\, \frac{{{u}_{7}}^{3}}{{{u}_{1}}^{4}}+49\, q\, \frac{{{u}_{7}}^{7}}{{{u}_{1}}^{8}} \]

Of course, any combination of these options work.

In [15]:
pretty(id, expand + nonModular + withSubscript)
Out[15]:
\[ \sum_{n=0}^{\infty }{a\left(7\, n+5\right)\, {q}^{n}}=7\, {q}^{-\frac{17}{24}}\, \frac{{{E}_{7}}^{3}}{{{E}_{1}}^{4}}+49\, {q}^{-\frac{17}{24}}\, \frac{{{E}_{7}}^{7}}{{{E}_{1}}^{8}} \]

In the above formula, $E_\delta$ stands for $\eta(\delta\tau)$.

If you need the output for further computation in another system, you can temporarily switch to one-dimensional output.

In [16]:
setFormat!(Format1D)$JFriCASSupport
pretty(id, expand + nonModular)
setDefault!(defaultPrologue$Format1D,defaultEpilogue$Format1D)$Formatter(Format1D);
setFormat!(FormatMathJax)$JFriCASSupport
Out[16]:
sum(a(7*n+5)*q^n, n=0 .. %Infinity)=7*q^(-17/24)*E7^3/E1^4+49*q^(-17/24)*E7^7/E1^8

Or you can define a macro and then use it.

In [17]:
print1D x ==> display((x::OutputForm)::Formatter(Format1D))
print1D pretty(id, expand + nonModular)
sum(a(7*n+5)*q^n, n=0 .. %Infinity)=7*q^(-17/24)*E7^3/E1^4+49*q^(-17/24)*E7^7/E1^8

$p(11n+6) \equiv 0 \pmod{11}$ (with $\Gamma_0(22)$)

The modulo 11 case is a bit more complicated, since for $\Gamma_0(11)$ we cannot find an identity.

In [18]:
idxs := [[1],[11]];
id := findIdM0(11, rspec, 11, 6, idxs);
-- numOfGaps:=[28, 1]
-- numOfGaps:=[28, 1]

This fact is encoded in QEta by returning the trivial identity $0=0$.

In [19]:
pretty(id, qIdentity + expand + nonModular + withSubscript)
assertEquals(identityPolynomial id, 0);
Out[19]:
\[ 0\, \left(\sum_{n=0}^{\infty }{a\left(11\, n+6\right)\, {q}^{n}}\right)=0 \]

If one needs this in another procedure, one can ask for the idenityPolynomial(id). If this is 0, then there is no identity for the respective parameter, i.e. here for $\Gamma_0(11)$ and in terms of eta-functions $\eta(\tau)$ and $\eta(11\tau)$.

We can, however, resort to level 22 and then an identity can be found.

In [20]:
idxs := [[1],[2],[11],[22]];
id := findIdM0(22, rspec, 11, 6, idxs);
-- numOfGaps:=[192, 2]
-- numOfGaps:=[144, 2]
-- numOfGaps:=[96, 2]
-- numOfGaps:=[96, 2]
-- numOfGaps:=[49, 2]
-- numOfGaps:=[49, 2]
-- numOfGaps:=[2, 2]
In [21]:
pretty(id, expand + asExpression + qIdentity + nonModular)
Out[21]:
\[ \sum_{n=0}^{\infty }{a\left(11\, n+6\right)\, {q}^{n}}=11\, {q}^{-1}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{22}\, {\left({q}^{11}; {q}^{11}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{22}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{2}}-33\, {q}^{4}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{14}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{6}}{{{\left(q, q\right)}_{\infty }}^{18}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{3}}+1573\, {q}^{9}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{6}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{14}}{{{\left(q, q\right)}_{\infty }}^{14}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{7}}+14641\, {q}^{14}\, \frac{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{22}}{{{\left(q, q\right)}_{\infty }}^{10}\, {{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{2}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{11}}-\frac{55}{4}\, {q}^{-1}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{15}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{8}}{{{\left(q, q\right)}_{\infty }}^{19}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{5}}+\frac{5929}{8}\, {q}^{4}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{7}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{4}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{3}}{{{\left(q, q\right)}_{\infty }}^{15}}-\frac{161051}{8}\, {q}^{9}\, \frac{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{11}}{{{\left(q, q\right)}_{\infty }}^{11}\, {\left({q}^{2}; {q}^{2}\right)}_{\infty }}+\frac{11}{4}\, {q}^{-1}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{11}}{{{\left(q, q\right)}_{\infty }}^{11}\, {\left({q}^{22}; {q}^{22}\right)}_{\infty }}+\frac{2695}{8}\, {q}^{4}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{3}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{7}}{{{\left(q, q\right)}_{\infty }}^{7}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{4}}+\frac{1331}{8}\, {q}^{9}\, \frac{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{15}}{{{\left(q, q\right)}_{\infty }}^{3}\, {{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{5}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{8}}-33\, {q}^{3}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{12}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{16}\, {\left({q}^{11}; {q}^{11}\right)}_{\infty }}-6655\, {q}^{8}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{4}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{12}}{{{\left(q, q\right)}_{\infty }}^{12}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{5}}-11\, {q}^{2}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{10}\, {\left({q}^{11}; {q}^{11}\right)}_{\infty }\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{14}}-9317\, {q}^{7}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{2}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{10}}{{{\left(q, q\right)}_{\infty }}^{10}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{3}} \]

Even though there are denominators of 4 and 8 in this representation, it clearly shows that the left-hand side is divisible by 11.

In fact, the original generating series multiplied by some cofactor gives a modular function for $\Gamma_0(22)$. (left-hand side).

It can be represented by a linear combination of eta-quotients with coefficients in $\setQ$, (right-hand side).

In [22]:
pretty(id, expand + withSubscript)
Out[22]:
\[ \frac{1}{14641}\, {q}^{\frac{13}{24}}\, \frac{{{E}_{1}}^{10}\, {{E}_{2}}^{2}\, {{E}_{11}}^{11}}{{{E}_{22}}^{22}}\, \left(\sum_{n=0}^{\infty }{a\left(11\, n+6\right)\, {q}^{n}}\right)=\frac{1}{1331}\, \frac{{{E}_{2}}^{24}\, {{E}_{11}}^{12}}{{{E}_{1}}^{12}\, {{E}_{22}}^{24}}-\frac{3}{1331}\, \frac{{{E}_{2}}^{16}\, {{E}_{11}}^{8}}{{{E}_{1}}^{8}\, {{E}_{22}}^{16}}+\frac{13}{121}\, \frac{{{E}_{2}}^{8}\, {{E}_{11}}^{4}}{{{E}_{1}}^{4}\, {{E}_{22}}^{8}}+1-\frac{5}{5324}\, \frac{{{E}_{2}}^{17}\, {{E}_{11}}^{19}}{{{E}_{1}}^{9}\, {{E}_{22}}^{27}}+\frac{49}{968}\, \frac{{{E}_{2}}^{9}\, {{E}_{11}}^{15}}{{{E}_{1}}^{5}\, {{E}_{22}}^{19}}-\frac{11}{8}\, \frac{{E}_{2}\, {{E}_{11}}^{11}}{{E}_{1}\, {{E}_{22}}^{11}}+\frac{1}{5324}\, \frac{{{E}_{2}}^{13}\, {{E}_{11}}^{11}}{{E}_{1}\, {{E}_{22}}^{23}}+\frac{245}{10648}\, \frac{{{E}_{1}}^{3}\, {{E}_{2}}^{5}\, {{E}_{11}}^{7}}{{{E}_{22}}^{15}}+\frac{1}{88}\, \frac{{{E}_{1}}^{7}\, {{E}_{11}}^{3}}{{{E}_{2}}^{3}\, {{E}_{22}}^{7}}-\frac{3}{1331}\, \frac{{{E}_{2}}^{14}\, {{E}_{11}}^{10}}{{{E}_{1}}^{6}\, {{E}_{22}}^{18}}-\frac{5}{11}\, \frac{{{E}_{2}}^{6}\, {{E}_{11}}^{6}}{{{E}_{1}}^{2}\, {{E}_{22}}^{10}}-\frac{1}{1331}\, \frac{{{E}_{2}}^{12}\, {{E}_{11}}^{12}}{{{E}_{1}}^{4}\, {{E}_{22}}^{20}}-\frac{7}{11}\, \frac{{{E}_{2}}^{4}\, {{E}_{11}}^{8}}{{{E}_{22}}^{12}} \]

In fact, Radu's original algorithm AB, as well as the samba algorithm) (which is implemented in QEta) return a representation as a linear combination of finitely many eta-quotients over $\setQ[t]$ where $t$ itself is an eta-quotient.

In [23]:
pretty(id, withSubscript)
Out[23]:
\[ \frac{1}{14641}\, {q}^{\frac{13}{24}}\, \frac{{{E}_{1}}^{10}\, {{E}_{2}}^{2}\, {{E}_{11}}^{11}}{{{E}_{22}}^{22}}\, \left(\sum_{n=0}^{\infty }{a\left(11\, n+6\right)\, {q}^{n}}\right)=\frac{1}{1331}\, {t}^{3}-\frac{3}{1331}\, {t}^{2}+\frac{13}{121}\, t+1+\left(-\frac{5}{5324}\, {t}^{2}+\frac{49}{968}\, t-\frac{11}{8}\right)\, \frac{{E}_{2}\, {{E}_{11}}^{11}}{{E}_{1}\, {{E}_{22}}^{11}}+\left(\frac{1}{5324}\, {t}^{2}+\frac{245}{10648}\, t+\frac{1}{88}\right)\, \frac{{{E}_{1}}^{7}\, {{E}_{11}}^{3}}{{{E}_{2}}^{3}\, {{E}_{22}}^{7}}+\left(-\frac{3}{1331}\, t-\frac{5}{11}\right)\, \frac{{{E}_{2}}^{6}\, {{E}_{11}}^{6}}{{{E}_{1}}^{2}\, {{E}_{22}}^{10}}+\left(-\frac{1}{1331}\, t-\frac{7}{11}\right)\, \frac{{{E}_{2}}^{4}\, {{E}_{11}}^{8}}{{{E}_{22}}^{12}} \]

From the "identity polynomial", we see that $p(11n+6)$ is divisible by 11, i.e. all terms not involving $F$ are divisible by 11.

Here $F$ corresponds to the left-hand side from above.

In [24]:
11^4*identityPolynomial(id)=0
Out[24]:
\[ \left(11\, M1+9317\right)\, M5+\left(33\, M1+6655\right)\, M4+\left(-\frac{11}{4}\, {M1}^{2}-\frac{2695}{8}\, M1-\frac{1331}{8}\right)\, M3+\left(\frac{55}{4}\, {M1}^{2}-\frac{5929}{8}\, M1+\frac{161051}{8}\right)\, M2-11\, {M1}^{3}+33\, {M1}^{2}-1573\, M1+F-14641=0 \]

$M_1$ corresponds to the $t$ and the $M_i$ are eta-quotients with the following specifications.

In [25]:
mspecs := monoidSpecifications id
Out[25]:
\[ \left[\left[\left[1, -4\right], \left[2, 8\right], \left[11, 4\right], \left[22, -8\right]\right], \left[\left[1, -1\right], \left[2, 1\right], \left[11, 11\right], \left[22, -11\right]\right], \left[\left[1, 7\right], \left[2, -3\right], \left[11, 3\right], \left[22, -7\right]\right], \left[\left[1, -2\right], \left[2, 6\right], \left[11, 6\right], \left[22, -10\right]\right], \left[\left[2, 4\right], \left[11, 8\right], \left[22, -12\right]\right], \left[\left[1, 2\right], \left[2, 2\right], \left[11, 10\right], \left[22, -14\right]\right], \left[\left[1, 4\right], \left[11, 12\right], \left[22, -16\right]\right]\right] \]

So $M_1=t$ stands for $\frac{\eta(2\tau)^8 \eta(11\tau)^4}{\eta(\tau)\eta(22\tau)^8}$, etc. It can be shown easily by functions from QEta.

In [26]:
[etaQuotient(x, varEta$RKI) for x in mspecs]
[qEtaQuotient(x, varPochhammer$RKI) for x in mspecs]
Out[26]:
\[ \left[\frac{{η\left(2\, τ\right)}^{8}\, {η\left(11\, τ\right)}^{4}}{{η\left(τ\right)}^{4}\, {η\left(22\, τ\right)}^{8}}, \frac{η\left(2\, τ\right)\, {η\left(11\, τ\right)}^{11}}{η\left(τ\right)\, {η\left(22\, τ\right)}^{11}}, \frac{{η\left(τ\right)}^{7}\, {η\left(11\, τ\right)}^{3}}{{η\left(2\, τ\right)}^{3}\, {η\left(22\, τ\right)}^{7}}, \frac{{η\left(2\, τ\right)}^{6}\, {η\left(11\, τ\right)}^{6}}{{η\left(τ\right)}^{2}\, {η\left(22\, τ\right)}^{10}}, \frac{{η\left(2\, τ\right)}^{4}\, {η\left(11\, τ\right)}^{8}}{{η\left(22\, τ\right)}^{12}}, \frac{{η\left(τ\right)}^{2}\, {η\left(2\, τ\right)}^{2}\, {η\left(11\, τ\right)}^{10}}{{η\left(22\, τ\right)}^{14}}, \frac{{η\left(τ\right)}^{4}\, {η\left(11\, τ\right)}^{12}}{{η\left(22\, τ\right)}^{16}}\right] \]
Out[26]:
\[ \left[{q}^{-5}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{8}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{4}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{8}}, {q}^{-5}\, \frac{{\left({q}^{2}; {q}^{2}\right)}_{\infty }\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{11}}{{\left(q, q\right)}_{\infty }\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{11}}, {q}^{-5}\, \frac{{{\left(q, q\right)}_{\infty }}^{7}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{3}}{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{3}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{7}}, {q}^{-6}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{6}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{6}}{{{\left(q, q\right)}_{\infty }}^{2}\, {{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{10}}, {q}^{-7}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{4}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{8}}{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{12}}, {q}^{-8}\, \frac{{{\left(q, q\right)}_{\infty }}^{2}\, {{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{2}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{10}}{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{14}}, {q}^{-9}\, \frac{{{\left(q, q\right)}_{\infty }}^{4}\, {{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{12}}{{{\left({q}^{22}; {q}^{22}\right)}_{\infty }}^{16}}\right] \]

$p(11n+6) \equiv 0 \pmod{11}$ (with $\Gamma_1(11)$)

QEta allows to find an identity for the generating function of $p(11n+6)$ in term of generalized eta-quotients by an implementation of ideas of Chen, Du, and Zhao. This also yields a witness identity for the divisibility by 11.

In [27]:
idxs := [[1],[11],[11,1],[11,2],[11,3],[11,4]];
id := findIdM1(11, rspec, 11, 6, idxs);
pretty(id, expand + asExpression + qIdentity + nonModular)
-- numOfGaps:=[214, 1]
-- numOfGaps:=[214, 1]
-- numOfGaps:=[214, 1]
-- numOfGaps:=[1, 1]
Out[27]:
\[ \sum_{n=0}^{\infty }{a\left(11\, n+6\right)\, {q}^{n}}=11\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{3}}{{{\left(q, q\right)}_{\infty }}^{4}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{4}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{18}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{6}}+319\, {q}^{2}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{5}}{{{\left(q, q\right)}_{\infty }}^{6}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{8}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{2}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{15}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{5}}+1991\, {q}^{4}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{7}}{{{\left(q, q\right)}_{\infty }}^{8}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{4}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{4}}+5588\, {q}^{6}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{9}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{10}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{9}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{3}}+8866\, {q}^{8}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{11}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{4}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{12}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{6}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{2}}+8217\, {q}^{10}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{13}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{8}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{6}}{{{\left(q, q\right)}_{\infty }}^{14}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{3}\, {\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}+4279\, {q}^{12}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{15}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{8}}{{{\left(q, q\right)}_{\infty }}^{16}}+1034\, {q}^{14}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{17}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{16}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{3}\, {\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{18}}-22\, {q}^{16}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{19}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{20}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{6}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{20}}-33\, {q}^{18}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{21}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{24}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{14}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{9}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{3}}{{{\left(q, q\right)}_{\infty }}^{22}}+11\, {q}^{20}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{23}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{28}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{16}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{24}}+121\, q\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{5}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{4}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{14}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{7}}+484\, {q}^{3}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{6}}{{{\left(q, q\right)}_{\infty }}^{7}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{6}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{2}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{11}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{6}}+484\, {q}^{5}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{8}}{{{\left(q, q\right)}_{\infty }}^{9}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{2}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{8}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{5}}-968\, {q}^{7}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{2}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{11}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{5}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{4}}-2541\, {q}^{9}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{6}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{13}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{2}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{3}}-2420\, {q}^{11}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{14}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{6}\, {\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{15}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{2}}-1210\, {q}^{13}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{16}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{14}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{8}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{17}\, {\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}-242\, {q}^{15}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{18}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{18}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{7}}{{{\left(q, q\right)}_{\infty }}^{19}} \]
In [28]:
identityPolynomial id
Out[28]:
\[ \left(-11\, {M1}^{8}-44\, {M1}^{7}-44\, {M1}^{6}+88\, {M1}^{5}+231\, {M1}^{4}+220\, {M1}^{3}+110\, {M1}^{2}+22\, M1\right)\, M5-{M1}^{10}-29\, {M1}^{9}-181\, {M1}^{8}-508\, {M1}^{7}-806\, {M1}^{6}-747\, {M1}^{5}-389\, {M1}^{4}-94\, {M1}^{3}+2\, {M1}^{2}+3\, M1+\frac{1}{11}\, F-1 \]
In [29]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Kolberg identity for $p(5n+1)$

In [30]:
-------------------------------------------------------------------
--test:KolbergIdentity
-------------------------------------------------------------------

Kolberg (1957) found an identity for the generating function of $p(5n+1)$. That, however, also involves the generating function for $p(5n+2)$.

In [31]:
mm := 1; rspec := eqSPEC [[1,-1]];
In [32]:
idxs := [[1],[5]];
id := findIdM0(5, rspec, 5, 1, idxs);
pretty(id, expand + asExpression + qIdentity + nonModular)
-- numOfGaps:=[0, 0]
Out[32]:
\[ \left(\sum_{n=0}^{\infty }{a\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{a\left(5\, n+2\right)\, {q}^{n}}\right)=2\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{6}}+25\, q\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{10}}{{{\left(q, q\right)}_{\infty }}^{12}} \]

The above identity is based on transformations with respect to $\Gamma_0(5)$. In such transformations $\sum_{n=0}^\infty a(5n+1)q^n$ and $\sum_{n=0}^\infty a(5n+2)q^n$ cannot be considered separately. Since they lie in the same orbit with respect to $\Gamma_0(5)$, only their product can be turned into a modular function for $\Gamma_0(5)$.

If we consider $\Gamma_1(5)$ and allow generalized eta-quotients, we get the following identity.

In [33]:
id1 := findIdM1(5, rspec, 5, 1, [[1],[5],[5,1]]);
pretty(id1, expand + asExpression + qIdentity + nonModular)
-- numOfGaps:=[0, 0]
Out[33]:
\[ \sum_{n=0}^{\infty }{a\left(5\, n+1\right)\, {q}^{n}}=\frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{3}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{6}}+2\, q\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{7}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{4}}{{{\left(q, q\right)}_{\infty }}^{8}} \]

Let us take this example for an explanation of what the variable id actually contains.

In [34]:
id
pretty(id,0)
Out[34]:
\[ \begin{array}[t]{c}coSpecification(x)=\left[\left[1, 12\right], \left[5, -10\right]\right]\\definingSpecification(x)=\left[\left[1, -1\right]\right]\\multiplier(x)=5\\orbit(x)=\left[2, 1\right]\\monoidSpecifications(x)=\left[\left[\left[1, 6\right], \left[5, -6\right]\right]\right]\\identityPolynomial(x)=-\frac{2}{25}\, M1+\frac{1}{25}\, F-1\\coefficient(x)=\frac{1}{25}\\alphaInfinity(x)=-1\end{array} \]
Out[34]:
\[ \frac{1}{25}\, {q}^{\frac{7}{12}}\, \frac{{E1}^{12}}{{E5}^{10}}\, \left(\sum_{n=0}^{\infty }{a\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{a\left(5\, n+2\right)\, {q}^{n}}\right)=\frac{2}{25}\, t+1 \]

We can extract that information also individually from the id variable.

In [35]:
coSpecification id
definingSpecification id
multiplier id
orbit id
monoidSpecifications id
identityPolynomial id
coefficient id
alphaInfinity id
alphaOrbitInfinity id
Out[35]:
\[ \left[\left[1, 12\right], \left[5, -10\right]\right] \]
Out[35]:
\[ \left[\left[1, -1\right]\right] \]
Out[35]:
\[ 5 \]
Out[35]:
\[ \left[2, 1\right] \]
Out[35]:
\[ \left[\left[\left[1, 6\right], \left[5, -6\right]\right]\right] \]
Out[35]:
\[ -\frac{2}{25}\, M1+\frac{1}{25}\, F-1 \]
Out[35]:
\[ \frac{1}{25} \]
Out[35]:
\[ -1 \]
Out[35]:
\[ \frac{7}{12} \]

There are more function available that you can apply to the id variable.

For example, we can transform the identity into an equation of FriCAS expressions that can then be manipulated further.

In [36]:
)set message type on
eexpr1 := equationX(id, 'p)
uexpr1 := qequationX(id, 'p)
)set message type off
Out[36]:
\[ \frac{\frac{1}{25}\, {{E}_{1}}^{12}\, {\sqrt[12]{q}}^{7}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)}{{{E}_{5}}^{10}}=\frac{2}{25}\, M1+1 \]
Out[36]:
\[ \frac{\frac{1}{25}\, {{u}_{1}}^{12}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)}{{{u}_{5}}^{10}\, q}=\frac{2}{25}\, M1+1 \]

We can do the same for the generating series of $p(5n+3)$.

In [37]:
id3 := findIdM0(5, rspec, 5, 3, idxs);
eexpr3 := equationX(id3, 'p)
uexpr3 := qequationX(id3, 'p)
-- numOfGaps:=[0, 0]
Out[37]:
\[ \frac{\frac{1}{25}\, {{E}_{1}}^{12}\, {\sqrt[12]{q}}^{7}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}{{{E}_{5}}^{10}}=\frac{3}{25}\, M1+1 \]
Out[37]:
\[ \frac{\frac{1}{25}\, {{u}_{1}}^{12}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}{{{u}_{5}}^{10}\, q}=\frac{3}{25}\, M1+1 \]

From looking at the right-hand side we easily see that we can eliminate the $M1$ variable.

In [38]:
eq1 := 25*q*u[5]^10/u[1]^12 * (3*uexpr1 - 2*uexpr3)
Out[38]:
\[ -2\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)+3\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)=\frac{25\, {{u}_{5}}^{10}\, q}{{{u}_{1}}^{12}} \]

Let us compare this with the identity for the generating series of $p(5n+4)$.

In [39]:
id4 := findIdM0(5, rspec, 5, 4, idxs);
uexpr4 := qequationX(id4, 'p)
-- numOfGaps:=[0, 0]
Out[39]:
\[ \frac{{{u}_{1}}^{6}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}{{{u}_{5}}^{5}}=5 \]

With a few manipulation we find an identity that already appears as equation (4.4) in Kolberg (1957).

In [40]:
eq1 - q*((u[5]^5/u[1]^6)*uexpr4)^2
Out[40]:
\[ -q\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{2}-2\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)+3\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)=0 \]
In [41]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Relations among 5-dissections of $p(n)$

In [42]:
-------------------------------------------------------------------
--test:RelationsAmong5Dissections
-------------------------------------------------------------------

Setting up

The above relation can also be found automatically by QEta. The idea is to find a relation for the involved generating functions in terms of eta-quotients.

Whereas the relation given in the previous section can be computed while working with ordinary Dedekind eta-functions, for other relations of this type, we must employ generalized eta-functions and their transformations with respect to $\Gamma_1(N)$.

Let us first setup a few helpers, i.e. compute the identities for the generating functions of $p(5n+t)$ into the variable id.

In [43]:
idxs := [[1],[5],[5,1]]; rspec := eqSPEC [[1,-1]];
id := findIdM1(5, idxs, rspec, 5, 0, idxs);
ids := [findIdM1(5, idxs, rspec, 5, t, id) for t in 0..4];
-- numOfGaps:=[0, 0]

Generators for relations ideal

In [44]:
QEtaIdeal ==> QEtaIdealHemmeckeCached
QI1 ==> QEtaIdeal(C,QMOD1)
idpol(id: RKI, f:Symbol): Pol C == (_
  sspec := coSpecification id;_
  mon: Pol(C) := f*etaQuotientMonomial(sspec,char"E",char"Y")$QI1;_
  ipol: Pol(C) := inv coefficient id * identityPolynomial id - 'F::Pol(C);_
  mon+ipol)
Function declaration idpol : (QEtaRamanujanKolbergIdentity(Fraction(Integer))
, Symbol) -> Polynomial(Fraction(Integer)) has been added to workspace.

In the following relations we can replace $M1$ by its corresponding eta-quotient.

In [45]:
[equationX(ids.i,'p) for i in 1..5]
Out[45]:
\[ \left[-\frac{\frac{1}{3}\, {{E}_{1}}^{7}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)}{{{E}_{5}}^{6}\, {{E}_{5, 1}}^{2}\, \sqrt[120]{q}}=-\frac{1}{3}\, M1+1, \frac{\frac{1}{2}\, {{E}_{1}}^{8}\, {\sqrt[120]{q}}^{23}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)}{{{E}_{5}}^{7}\, {{E}_{5, 1}}^{4}}=\frac{1}{2}\, M1+1, -\frac{{{E}_{1}}^{9}\, {\sqrt[120]{q}}^{47}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)}{{{E}_{5}}^{8}\, {{E}_{5, 1}}^{6}}=-2\, M1+1, \frac{{{E}_{1}}^{10}\, {\sqrt[120]{q}}^{71}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}{{{E}_{5}}^{9}\, {{E}_{5, 1}}^{8}}=3\, M1+1, \frac{{{E}_{1}}^{6}\, {\sqrt[24]{q}}^{19}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}{{{E}_{5}}^{5}}=5\right] \]

We have

In [46]:
mspecs := monoidSpecifications ids.1
[etaQuotient(x, varEta$RKI) for x in mspecs]
Out[46]:
\[ \left[\left[\left[1, 5\right], \left[5, -5\right], \left[5, 1, -10\right]\right], \left[\left[1, 11\right], \left[5, -11\right], \left[5, 1, -10\right]\right]\right] \]
Out[46]:
\[ \left[\frac{{η\left(τ\right)}^{5}}{{η\left(5\, τ\right)}^{5}\, {{η}_{5, 1}\left(τ\right)}^{10}}, \frac{{η\left(τ\right)}^{11}}{{η\left(5\, τ\right)}^{11}\, {{η}_{5, 1}\left(τ\right)}^{10}}\right] \]

Then we introduce $Y_k$ to replace $1/E_k$ and replace the (fractional) $q$-factor together with the generating series for $p(5n+k)$ by the variable $f_k$.

In [47]:
fs := [concat("f",string(i-1))::Symbol_
       = q^alphaOrbitInfinity(ids.i) * orbitProductX(ids.i,'p)_
           for i in 1..5]
Out[47]:
\[ \left[f0=\frac{\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}}{\sqrt[120]{q}}, f1={\sqrt[120]{q}}^{23}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right), f2={\sqrt[120]{q}}^{47}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right), f3={\sqrt[120]{q}}^{71}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right), f4={\sqrt[24]{q}}^{19}\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)\right] \]

With that substitution and bringing everything to one side. we obtain the following set of polynomials that represent the relations among the $f_k$ and eta-functions.

In [48]:
fsyms := [lhs x for x in fs];
mps := [idpol(id,f) for id in ids for f in fsyms]
Compiling function idpol with type (QEtaRamanujanKolbergIdentity(Fraction(
Integer)), Symbol) -> Polynomial(Fraction(Integer))
Out[48]:
\[ \left[{E1}^{7}\, {Y5}^{6}\, {Y5\_1}^{2}\, f0-M1+3, {E1}^{8}\, {Y5}^{7}\, {Y5\_1}^{4}\, f1-M1-2, {E1}^{9}\, {Y5}^{8}\, {Y5\_1}^{6}\, f2-2\, M1+1, {E1}^{10}\, {Y5}^{9}\, {Y5\_1}^{8}\, f3-3\, M1-1, {E1}^{6}\, {Y5}^{5}\, f4-5\right] \]
In [49]:
mspecs := monoidSpecifications first ids;
eqrels := etaLaurentIdealGenerators(idxs, mspecs, mps)$QI1
Out[49]:
\[ \left[E1\, Y1-1, E5\, Y5-1, E5\_1\, Y5\_1-1, -{E1}^{7}\, {Y5}^{6}\, {Y5\_1}^{2}\, f0+{E1}^{5}\, {Y5}^{5}\, {Y5\_1}^{10}-3, -{E1}^{8}\, {Y5}^{7}\, {Y5\_1}^{4}\, f1+{E1}^{5}\, {Y5}^{5}\, {Y5\_1}^{10}+2, -\frac{1}{2}\, {E1}^{9}\, {Y5}^{8}\, {Y5\_1}^{6}\, f2+{E1}^{5}\, {Y5}^{5}\, {Y5\_1}^{10}-\frac{1}{2}, {E1}^{10}\, {Y5}^{9}\, {Y5\_1}^{8}\, f3-3\, {E1}^{5}\, {Y5}^{5}\, {Y5\_1}^{10}-1, {E1}^{6}\, {Y5}^{5}\, f4-5\right] \]
In [50]:
assertEquals(eqrels, [_
  E1*Y1-1, E5*Y5-1, E5_1*Y5_1-1,_
  -E1^7*Y5^6*Y5_1^2*f0+E1^5*Y5^5*Y5_1^10-3,_
  -E1^8*Y5^7*Y5_1^4*f1+E1^5*Y5^5*Y5_1^10+2,_
  -1/2*E1^9*Y5^8*Y5_1^6*f2+E1^5*Y5^5*Y5_1^10-1/2,_
  E1^10*Y5^9*Y5_1^8*f3-3*E1^5*Y5^5*Y5_1^10-1,_
  E1^6*Y5^5*f4-5])
Out[50]:
\[ \texttt{true} \]

Eliminate generalized eta-quotients

The following computation takes about 200 sec and eliminates the variables $E_k$ and $Y_k$ so that only the relations among the $f_k$ survive.

In [51]:
)set message time on
algrels := algebraicRelations(idxs, eqrels, char "f")$QI1;
)set message time off
galgrels := [clearDenominator x for x in algrels]
assertEquals(galgrels, [_
  4*f4^4+4*f0*f3*f4^2+(-9*f1*f3^2-9*f0^2*f2)*f4+10*f0^2*f3^2,_
  4*f1*f4^2+(-6*f2*f3-3*f0^2)*f4+5*f0*f1*f3,_
  4*f2*f4^2+(-3*f3^2-6*f0*f1)*f4+5*f0*f2*f3,_
  -f3*f4-f0*f2+2*f1^2, -f4^2-2*f0*f3+3*f1*f2, -f0*f4-f1*f3+2*f2^2])
Out[51]:
Time: 0 (IN) + 163.73 (EV) + 0.01 (OT) = 163.74 sec
Out[51]:
\[ \left[4\, {f4}^{4}+4\, f0\, f3\, {f4}^{2}+\left(-9\, f1\, {f3}^{2}-9\, {f0}^{2}\, f2\right)\, f4+10\, {f0}^{2}\, {f3}^{2}, 4\, f1\, {f4}^{2}+\left(-6\, f2\, f3-3\, {f0}^{2}\right)\, f4+5\, f0\, f1\, f3, 4\, f2\, {f4}^{2}+\left(-3\, {f3}^{2}-6\, f0\, f1\right)\, f4+5\, f0\, f2\, f3, -f3\, f4-f0\, f2+2\, {f1}^{2}, -{f4}^{2}-2\, f0\, f3+3\, f1\, f2, -f0\, f4-f1\, f3+2\, {f2}^{2}\right] \]
Out[51]:
\[ \texttt{true} \]

Selected results

Among the relations is relation (4.4) of a paper of Kolberg (1957) that we have found manually in the previous section.

In [52]:
galgrels.5
Out[52]:
\[ -{f4}^{2}-2\, f0\, f3+3\, f1\, f2 \]

Shown as a relation among the generating series, it is as follows.

In [53]:
simplify(eval(galgrels.5, fs)) * q^(-7/12)
Out[53]:
\[ -q\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{2}-2\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)+3\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right) \]

The following identities involve other pairs. See congruence at bottom of page 86 in Kolberg (1957).

In [54]:
simplify(eval(galgrels.4, fs)) * q^(-23/60)
Out[54]:
\[ -q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)-\left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)+2\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)}^{2} \]
In [55]:
simplify(eval(galgrels.6, fs)) * q^(-47/60)
Out[55]:
\[ -\left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)-\left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)+2\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)}^{2} \]
In [56]:
simplify(eval(galgrels.3, fs)) * q^(-39/40)
simplify(eval(galgrels.2, fs)) * q^(-31/40)
simplify(eval(galgrels.1, fs)) * q^(-7/6)
Out[56]:
\[ 4\, q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{2}+\left(-3\, q\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}^{2}-6\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)+5\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right) \]
Out[56]:
\[ 4\, q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{2}+\left(-6\, q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)-3\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)}^{2}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)+5\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right) \]
Out[56]:
\[ 4\, {q}^{2}\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{4}+4\, q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)}^{2}+\left(-9\, q\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+1\right)\, {q}^{n}}\right)\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}^{2}-9\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+2\right)\, {q}^{n}}\right)\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)}^{2}\right)\, \left(\sum_{n=0}^{\infty }{p\left(5\, n+4\right)\, {q}^{n}}\right)+10\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n\right)\, {q}^{n}}\right)}^{2}\, {\left(\sum_{n=0}^{\infty }{p\left(5\, n+3\right)\, {q}^{n}}\right)}^{2} \]

Altogether, galgrels is a Gröbner basis for the ideal of all relations among these generating series.

In [57]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Ideal of relations among eta-functions

In [58]:
-------------------------------------------------------------------
--test:EtaRelations
-------------------------------------------------------------------

With similar ideas as above, we can also compute the ideal of all relations among eta-functions. The corresponding theory is described in “Construction of all Polynomial Relations among Dedekind Eta Functions of Level N”.

In QEta there exists the functions etaRelations to do the computation.

In [59]:
idxs := etaFunctionIndices 6;
er := etaRelations(idxs) $ QEtaIdealHemmeckeCached(QQ, QMOD0);
dens := [lcm [denom leadingCoefficient m_
         for m in monomials r] for r in er];
[d*r for d in dens for r in er]
Out[59]:
\[ \left[-46656\, {E2}^{12}\, {E3}^{2}\, {E6}^{14}+52488\, E1\, {E2}^{7}\, {E3}^{7}\, {E6}^{13}+1215\, {E1}^{14}\, {E2}^{2}\, {E6}^{12}+54\, {E1}^{19}\, E2\, E3\, {E6}^{7}+\left(-64\, {E2}^{24}-{E1}^{24}\right)\, {E3}^{2}\, {E6}^{2}+{E1}^{14}\, {E2}^{14}, 64\, {E1}^{2}\, {E2}^{2}\, {E6}^{24}+33\, {E1}^{7}\, E2\, E3\, {E6}^{19}+\left(-9\, {E3}^{14}+3\, {E1}^{12}\, {E3}^{2}\right)\, {E6}^{14}-8\, {E1}^{2}\, {E2}^{14}\, {E6}^{12}-{E1}^{7}\, {E2}^{13}\, E3\, {E6}^{7}+{E1}^{2}\, {E2}^{2}\, {E3}^{24}, -81\, {E1}^{5}\, {E2}^{2}\, E3\, {E6}^{12}-18\, {E1}^{10}\, E2\, {E3}^{2}\, {E6}^{7}+8\, {E2}^{15}\, {E6}^{5}-{E1}^{15}\, {E3}^{3}\, {E6}^{2}+{E1}^{5}\, {E2}^{14}\, E3, -648\, {E1}^{5}\, {E2}^{2}\, {E3}^{3}\, {E6}^{10}-63\, {E1}^{10}\, E2\, {E3}^{4}\, {E6}^{5}+64\, {E2}^{15}\, {E3}^{2}\, {E6}^{3}-{E1}^{14}\, {E2}^{5}\, E6+{E1}^{15}\, {E3}^{5}, -64\, {E1}^{2}\, {E2}^{3}\, {E6}^{15}-16\, {E1}^{7}\, {E2}^{2}\, E3\, {E6}^{10}+\left(9\, E2\, {E3}^{14}-{E1}^{12}\, E2\, {E3}^{2}\right)\, {E6}^{5}+{E1}^{5}\, {E3}^{15}, 8\, {E2}^{5}\, {E6}^{15}-9\, E1\, {E3}^{5}\, {E6}^{14}-7\, {E1}^{5}\, {E2}^{4}\, E3\, {E6}^{10}-{E1}^{10}\, {E2}^{3}\, {E3}^{2}\, {E6}^{5}+{E1}^{3}\, {E2}^{2}\, {E3}^{15}, 72\, {E2}^{10}\, {E3}^{2}\, {E6}^{5}-81\, E1\, {E2}^{5}\, {E3}^{7}\, {E6}^{4}-{E1}^{14}\, {E6}^{3}+{E1}^{5}\, {E2}^{9}\, {E3}^{3}, -81\, {E1}^{5}\, E2\, {E3}^{4}\, {E6}^{7}+{E1}^{9}\, {E2}^{5}\, {E6}^{3}-9\, {E1}^{10}\, {E3}^{5}\, {E6}^{2}+8\, {E2}^{14}\, {E3}^{3}, -8\, {E1}^{3}\, {E6}^{14}+{E2}^{3}\, {E3}^{9}\, {E6}^{5}-{E1}^{4}\, {E2}^{7}\, {E3}^{5}\, E6+{E1}^{5}\, {E2}^{2}\, {E3}^{10}, -8\, {E1}^{2}\, {E2}^{5}\, {E6}^{10}+{E1}^{3}\, {E3}^{5}\, {E6}^{9}-{E1}^{7}\, {E2}^{4}\, E3\, {E6}^{5}+{E2}^{3}\, {E3}^{14}, -9\, {E1}^{4}\, E2\, {E6}^{8}-{E1}^{9}\, E3\, {E6}^{3}+{E2}^{9}\, {E3}^{4}, -{E1}^{9}\, {E6}^{4}-8\, {E2}^{9}\, {E3}^{3}\, E6+9\, E1\, {E2}^{4}\, {E3}^{8}, {E1}^{4}\, {E6}^{9}-{E2}^{8}\, {E3}^{4}\, E6+E1\, {E2}^{3}\, {E3}^{9}, -8\, {E1}^{3}\, E2\, {E6}^{9}-{E1}^{8}\, E3\, {E6}^{4}+{E2}^{4}\, {E3}^{9}, -8\, {E2}^{6}\, {E6}^{6}+9\, E1\, E2\, {E3}^{5}\, {E6}^{5}-{E1}^{5}\, {E2}^{5}\, E3\, E6+{E1}^{6}\, {E3}^{6}\right] \]

For bigger levels $N$ the computation becomes increasingly more involved since it is based on

  • computing a monoid basis for the monoid of all eta-quotients with the help of the program 4ti2,
  • setting up relations in variables $E_\delta$ and $Y_\delta$ ($\delta$ ranging over all divisors of $N$, and $E_\delta$ and $Y_\delta$ representing $\eta(\delta\tau)$ and $1/\eta(\delta\tau)$, respectively),
  • eliminating the $Y_\delta$ variables from the system.

Let us consider the case $N=16$.

We first compute the the monoid basis.

In [60]:
nn := 16
idxs := etaFunctionIndices nn
mspecs := mSPECSInfM0(nn, idxs);
[etaQuotient(x, varEta$RKI) for x in mspecs]
Out[60]:
\[ 16 \]
Out[60]:
\[ \left[\left[1\right], \left[2\right], \left[4\right], \left[8\right], \left[16\right]\right] \]
Out[60]:
\[ \left[\frac{{η\left(2\, τ\right)}^{5}\, η\left(8\, τ\right)}{{η\left(τ\right)}^{2}\, {η\left(4\, τ\right)}^{2}\, {η\left(16\, τ\right)}^{2}}, \frac{{η\left(8\, τ\right)}^{6}}{{η\left(4\, τ\right)}^{2}\, {η\left(16\, τ\right)}^{4}}, \frac{{η\left(τ\right)}^{2}\, η\left(8\, τ\right)}{η\left(2\, τ\right)\, {η\left(16\, τ\right)}^{2}}, \frac{{η\left(4\, τ\right)}^{10}}{{η\left(2\, τ\right)}^{4}\, {η\left(8\, τ\right)}^{2}\, {η\left(16\, τ\right)}^{4}}\right] \]

These eta-quotients have the following $q$-expansion.

In [61]:
)set stream calc 4
[specM0A1(QQ)(x) for x in mspecs]
Out[61]:
\[ \left[{q}^{-1}+2+2\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+2\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}-2+2\, {q}^{3}+O\left({q}^{4}\right), {q}^{-2}+4+4\, {q}^{2}+O\left({q}^{3}\right)\right] \]

From these expansions the samba algorithm (see “Dancing Samba with Ramanujan Partition Congruences”) is used to compute an algebra basis of $\setQ[M_1,\ldots,M_4]$ where the $M_k$ represent the eta-quotients above.

In [62]:
QEtaIdeal ==> QEtaIdealHemmeckeCached
QI0 ==> QEtaIdeal(QQ,QMOD0)
eqigens := etaQuotientIdealGenerators(mspecs)$QI0
Out[62]:
\[ \left[-\frac{1}{2}\, M2+\frac{1}{2}\, M1-1, -\frac{1}{4}\, M3+\frac{1}{4}\, M1-1, \frac{1}{8}\, M4-\frac{1}{8}\, {M1}^{2}+\frac{1}{2}\, M1-1\right] \]

Let the elements in the above list be denoted by $z_1,z_2,z_3$. In terms of the $q$-series we have \begin{gather*} \setQ[M_1,\ldots,M_4] = \{p_0 + p_1 z_1 + p_2 z_2 + p_3 z_3 \mid p_0,p_1,p_2,p_3\in \setQ[M_1] \} \end{gather*}

By substituting the $M_k$ variables with the respective eta-functions $E_\delta$, and their inverses $Y_\delta$, we arrive at the following system.

In [63]:
eligens := etaLaurentIdealGenerators(idxs, mspecs, eqigens)$QI0
Out[63]:
\[ \left[E1\, Y1-1, E2\, Y2-1, E4\, Y4-1, E8\, Y8-1, E16\, Y16-1, \left(-{E8}^{6}\, {Y16}^{4}+{E2}^{5}\, E8\, {Y1}^{2}\, {Y16}^{2}\right)\, {Y4}^{2}-2, {E2}^{5}\, E8\, {Y1}^{2}\, {Y16}^{2}\, {Y4}^{2}-{E1}^{2}\, E8\, {Y16}^{2}\, Y2-4, -{E4}^{10}\, {Y16}^{4}\, {Y2}^{4}\, {Y8}^{2}+{E2}^{10}\, {E8}^{2}\, {Y1}^{4}\, {Y16}^{4}\, {Y4}^{4}-4\, {E2}^{5}\, E8\, {Y1}^{2}\, {Y16}^{2}\, {Y4}^{2}+8\right] \]

Now, we must "only" eliminate the $Y_\delta$ variables. For that we can use the QEta interface to the built-in Gröbner engine of FriCAS.

The following code, basically constructs the domain $EE$ of exponent vectors that are sorted via degrevlex among the $Y_\delta$ and $E_\delta$ variables and with anything in the $Y$-block being bigger than anything in the $E$-block.

In [64]:
ysyms := indexedSymbols("Y", idxs)$QAuxiliaryTools;
esyms := indexedSymbols("E", idxs)$QAuxiliaryTools;
syms := concat [ysyms, esyms];
dim: NN := # syms;
dim1: NN := # ysyms; -- want to eliminate those
EE ==> SplitHomogeneousDirectProduct(dim, dim1, NN)

We compute the Gröbner basis for that order.

In [65]:
gb := groebner(eligens, syms)$QEtaGroebner(QQ, EE);

And eventually only take the polynomials that do not have any $Y_\delta$ in them.

In [66]:
xPolynomials(gb, char "E")$PolynomialTool(C)
Out[66]:
\[ \left[8388608\, {E16}^{20}\, {E4}^{6}\, {E8}^{6}+\left(-131072\, {E1}^{4}\, {E16}^{16}+512\, {E1}^{12}\, {E16}^{8}-4\, {E1}^{20}\right)\, {E2}^{2}\, {E4}^{6}\, {E8}^{4}+\left(524288\, {E1}^{2}\, {E16}^{18}-2048\, {E1}^{10}\, {E16}^{10}+8\, {E1}^{18}\, {E16}^{2}\right)\, {E2}^{3}\, {E4}^{6}\, {E8}^{3}+\left(-2097152\, {E16}^{20}+4096\, {E1}^{8}\, {E16}^{12}-16\, {E1}^{16}\, {E16}^{4}\right)\, {E2}^{4}\, {E4}^{6}\, {E8}^{2}+64\, {E1}^{14}\, {E16}^{6}\, {E2}^{5}\, {E4}^{6}\, E8+\left(-16777216\, {E16}^{24}-65536\, {E1}^{8}\, {E16}^{16}-384\, {E1}^{16}\, {E16}^{8}-{E1}^{24}\right)\, {E4}^{8}+\left(32768\, {E1}^{4}\, {E16}^{16}+{E1}^{20}\right)\, {E2}^{6}\, {E4}^{6}-2097152\, {E1}^{8}\, {E16}^{24}-32\, {E1}^{24}\, {E16}^{8}, 256\, {E16}^{6}\, {E2}^{2}\, {E4}^{6}\, {E8}^{5}-4\, {E1}^{6}\, {E2}^{3}\, {E4}^{6}\, {E8}^{4}+8\, {E1}^{4}\, {E16}^{2}\, {E2}^{4}\, {E4}^{6}\, {E8}^{3}-32\, {E1}^{2}\, {E16}^{4}\, {E2}^{5}\, {E4}^{6}\, {E8}^{2}+\left(192\, {E1}^{4}\, {E16}^{6}\, {E4}^{8}-4096\, {E1}^{4}\, {E16}^{14}+16\, {E1}^{12}\, {E16}^{6}\right)\, E8+\left(-512\, {E1}^{2}\, {E16}^{8}-{E1}^{10}\right)\, E2\, {E4}^{8}+{E1}^{6}\, {E2}^{7}\, {E4}^{6}-16384\, {E1}^{2}\, {E16}^{16}\, E2, 512\, {E16}^{6}\, {E4}^{6}\, {E8}^{7}+32\, {E1}^{2}\, {E16}^{4}\, {E2}^{3}\, {E4}^{6}\, {E8}^{4}-128\, {E16}^{6}\, {E2}^{4}\, {E4}^{6}\, {E8}^{3}+{E1}^{6}\, {E2}^{5}\, {E4}^{6}\, {E8}^{2}+\left(\left(-1024\, {E16}^{10}-8\, {E1}^{8}\, {E16}^{2}\right)\, {E4}^{8}-{E1}^{16}\, {E16}^{2}\right)\, E8+16\, {E1}^{6}\, {E16}^{4}\, E2\, {E4}^{8}-8\, {E1}^{2}\, {E16}^{4}\, {E2}^{7}\, {E4}^{6}+\left(512\, {E1}^{6}\, {E16}^{12}-2\, {E1}^{14}\, {E16}^{4}\right)\, E2, -32\, {E16}^{4}\, {E2}^{3}\, {E4}^{6}\, {E8}^{5}+{E1}^{4}\, {E2}^{5}\, {E4}^{6}\, {E8}^{3}+\left(-256\, {E1}^{6}\, {E16}^{10}-{E1}^{14}\, {E16}^{2}\right)\, {E8}^{2}+\left(-24\, {E1}^{4}\, {E16}^{4}\, E2\, {E4}^{8}+\left(-512\, {E1}^{4}\, {E16}^{12}-10\, {E1}^{12}\, {E16}^{4}\right)\, E2\right)\, E8+96\, {E1}^{2}\, {E16}^{6}\, {E2}^{2}\, {E4}^{8}+\left(2048\, {E1}^{2}\, {E16}^{14}-16\, {E1}^{10}\, {E16}^{6}\right)\, {E2}^{2}, {E2}^{5}\, {E4}^{6}\, {E8}^{4}+\left(-4\, {E1}^{2}\, {E16}^{2}\, {E4}^{8}-{E1}^{10}\, {E16}^{2}\right)\, {E8}^{3}-6\, {E1}^{8}\, {E16}^{4}\, E2\, {E8}^{2}-16\, {E1}^{6}\, {E16}^{6}\, {E2}^{2}\, E8-16\, {E1}^{4}\, {E16}^{8}\, {E2}^{3}, {E2}^{4}\, {E4}^{6}\, {E8}^{5}-2\, {E1}^{8}\, {E16}^{4}\, {E8}^{3}-16\, {E1}^{6}\, {E16}^{6}\, E2\, {E8}^{2}-48\, {E1}^{4}\, {E16}^{8}\, {E2}^{2}\, E8-{E1}^{2}\, {E16}^{2}\, {E2}^{3}\, {E4}^{8}-64\, {E1}^{2}\, {E16}^{10}\, {E2}^{3}, {E4}^{6}\, {E8}^{9}+\left(-2\, {E16}^{4}\, {E4}^{8}-{E1}^{8}\, {E16}^{4}\right)\, {E8}^{3}-6\, {E1}^{6}\, {E16}^{6}\, E2\, {E8}^{2}-16\, {E1}^{4}\, {E16}^{8}\, {E2}^{2}\, E8-16\, {E1}^{2}\, {E16}^{10}\, {E2}^{3}, 16\, {E4}^{6}\, {E8}^{8}-4\, {E2}^{4}\, {E4}^{6}\, {E8}^{4}+\left(-32\, {E16}^{4}\, {E4}^{8}-8\, {E1}^{8}\, {E16}^{4}\right)\, {E8}^{2}-32\, {E1}^{6}\, {E16}^{6}\, E2\, E8-{E1}^{4}\, {E2}^{2}\, {E4}^{8}+{E2}^{8}\, {E4}^{6}-64\, {E1}^{4}\, {E16}^{8}\, {E2}^{2}, \left({E1}^{4}\, {E4}^{8}-64\, {E1}^{4}\, {E16}^{8}\right)\, {E8}^{2}+\left(-4\, {E1}^{2}\, {E16}^{2}\, E2\, {E4}^{8}+\left(-256\, {E1}^{2}\, {E16}^{10}-{E1}^{10}\, {E16}^{2}\right)\, E2\right)\, E8+8\, {E16}^{4}\, {E2}^{2}\, {E4}^{8}-2\, {E1}^{8}\, {E16}^{4}\, {E2}^{2}, 8\, {E1}^{6}\, {E16}^{4}\, {E8}^{4}+64\, {E1}^{4}\, {E16}^{6}\, E2\, {E8}^{3}+\left({E1}^{2}\, {E2}^{2}\, {E4}^{8}+128\, {E1}^{2}\, {E16}^{8}\, {E2}^{2}\right)\, {E8}^{2}+\left(-4\, {E16}^{2}\, {E2}^{3}\, {E4}^{8}-{E1}^{8}\, {E16}^{2}\, {E2}^{3}\right)\, E8-2\, {E1}^{6}\, {E16}^{4}\, {E2}^{4}, 16\, {E1}^{4}\, {E16}^{6}\, {E8}^{4}+\left({E1}^{2}\, E2\, {E4}^{8}+64\, {E1}^{2}\, {E16}^{8}\, E2\right)\, {E8}^{3}+\left(-2\, {E16}^{2}\, {E2}^{2}\, {E4}^{8}-{E1}^{8}\, {E16}^{2}\, {E2}^{2}\right)\, {E8}^{2}-4\, {E1}^{6}\, {E16}^{4}\, {E2}^{3}\, E8-4\, {E1}^{4}\, {E16}^{6}\, {E2}^{4}, -4\, {E1}^{6}\, {E16}^{2}\, {E8}^{5}-24\, {E1}^{4}\, {E16}^{4}\, E2\, {E8}^{4}-32\, {E1}^{2}\, {E16}^{6}\, {E2}^{2}\, {E8}^{3}+{E2}^{3}\, {E4}^{8}\, {E8}^{2}-{E1}^{6}\, {E16}^{2}\, {E2}^{4}\, E8-2\, {E1}^{4}\, {E16}^{4}\, {E2}^{5}, -8\, {E1}^{4}\, {E16}^{4}\, {E8}^{5}-32\, {E1}^{2}\, {E16}^{6}\, E2\, {E8}^{4}+{E2}^{2}\, {E4}^{8}\, {E8}^{3}-{E1}^{6}\, {E16}^{2}\, {E2}^{3}\, {E8}^{2}-6\, {E1}^{4}\, {E16}^{4}\, {E2}^{4}\, E8-8\, {E1}^{2}\, {E16}^{6}\, {E2}^{5}, {E1}^{6}\, {E4}^{2}\, {E8}^{5}+4\, {E1}^{4}\, {E16}^{2}\, E2\, {E4}^{2}\, {E8}^{4}-\frac{1}{2}\, {E1}^{4}\, {E16}^{2}\, {E2}^{5}\, {E4}^{2}-\frac{1}{2}\, {E16}^{2}\, {E2}^{11}, -8\, {E1}^{4}\, {E2}^{2}\, {E4}^{2}\, {E8}^{4}-{E1}^{8}\, {E4}^{4}+{E2}^{12}, -{E1}^{8}\, {E8}^{4}-8\, {E1}^{6}\, {E16}^{2}\, E2\, {E8}^{3}-24\, {E1}^{4}\, {E16}^{4}\, {E2}^{2}\, {E8}^{2}-32\, {E1}^{2}\, {E16}^{6}\, {E2}^{3}\, E8+{E2}^{4}\, {E4}^{8}, {E4}^{8}\, {E8}^{4}-{E1}^{6}\, {E16}^{2}\, E2\, {E8}^{3}-6\, {E1}^{4}\, {E16}^{4}\, {E2}^{2}\, {E8}^{2}-16\, {E1}^{2}\, {E16}^{6}\, {E2}^{3}\, E8-16\, {E16}^{8}\, {E2}^{4}, {E8}^{12}-{E16}^{4}\, {E2}^{4}\, {E4}^{2}\, {E8}^{2}-4\, {E16}^{8}\, {E4}^{4}, -{E1}^{4}\, {E2}^{2}\, {E8}^{4}-4\, {E1}^{2}\, {E16}^{2}\, {E2}^{3}\, {E8}^{3}-8\, {E16}^{4}\, {E2}^{4}\, {E8}^{2}+{E4}^{10}, {E1}^{2}\, E2\, {E8}^{5}-\frac{1}{2}\, {E1}^{4}\, {E16}^{2}\, {E4}^{2}-\frac{1}{2}\, {E16}^{2}\, {E2}^{6}, {E1}^{2}\, {E8}^{6}-{E16}^{2}\, {E2}^{5}\, E8+2\, {E1}^{2}\, {E16}^{4}\, {E4}^{2}, \left(-{E1}^{4}\, {E4}^{2}+{E2}^{6}\right)\, E8-4\, {E1}^{2}\, {E16}^{2}\, E2\, {E4}^{2}, E2\, {E8}^{6}-{E1}^{2}\, {E16}^{2}\, {E4}^{2}\, E8-2\, {E16}^{4}\, E2\, {E4}^{2}\right] \]

Admittedly, the Gröbner engine of FriCAS is not the fastest on the market. To do the elimination, it might make sense to output the generators of the ideal in a format that can easily be read by other computer algebra systems.

In [67]:
print1D x ==> display((x::OutputForm)::Formatter(Format1D))
print1D eligens
[E1*Y1-1, E2*Y2-1, E4*Y4-1, E8*Y8-1, E16*Y16-1, (-E8^6*Y16^4+E2^5*E8*Y1^2*Y16^2)*Y4^2-2, E2^5*E8*Y1^2*Y16^2*Y4^2-E1^2*E8*Y16^2*Y2-4, -E4^10*Y16^4*Y2^4*Y8^2+E2^10*E8^2*Y1^4*Y16^4*Y4^4-4*E2^5*E8*Y1^2*Y16^2*Y4^2+8]

Clearly, we are not restricted to pure Dedekind eta-functions, but can also consider relations among generalized eta-functions.

For simplicity, let us consider level 5.

In [68]:
idxs := generalizedEtaFunctionIndices 5
Out[68]:
\[ \left[\left[1\right], \left[5\right], \left[5, 1\right], \left[5, 2\right]\right] \]
In [69]:
ger := etaRelations(idxs) $ QEtaIdealHemmeckeCached(QQ, QMOD1);
In [70]:
dens := [lcm [denom leadingCoefficient m_
         for m in monomials r] for r in ger];
rels := [d*r for d in dens for r in ger]
Out[70]:
\[ \left[{E5\_1}^{11}\, {E5\_2}^{11}-{E5\_2}^{10}+11\, {E5\_1}^{5}\, {E5\_2}^{5}+{E5\_1}^{10}, \left(E1\, {E5\_1}^{10}-E5\right)\, {E5\_2}^{10}+11\, E1\, {E5\_1}^{4}\, {E5\_2}^{4}+E5\, {E5\_1}^{10}, -{E5}^{2}\, {E5\_2}^{10}+{E1}^{2}\, {E5\_1}^{9}\, {E5\_2}^{9}+11\, {E1}^{2}\, {E5\_1}^{3}\, {E5\_2}^{3}+{E5}^{2}\, {E5\_1}^{10}, -{E5}^{3}\, {E5\_2}^{10}+{E1}^{3}\, {E5\_1}^{8}\, {E5\_2}^{8}+11\, {E1}^{3}\, {E5\_1}^{2}\, {E5\_2}^{2}+{E5}^{3}\, {E5\_1}^{10}, -{E5}^{4}\, {E5\_2}^{10}+{E1}^{4}\, {E5\_1}^{7}\, {E5\_2}^{7}+11\, {E1}^{4}\, E5\_1\, E5\_2+{E5}^{4}\, {E5\_1}^{10}, {E5}^{7}\, {E5\_2}^{11}-{E1}^{7}\, {E5\_1}^{4}\, {E5\_2}^{5}-11\, {E1}^{5}\, {E5}^{2}\, E5\_2-E1\, {E5}^{6}\, {E5\_1}^{9}, -{E5}^{6}\, {E5\_2}^{11}+{E1}^{6}\, {E5\_1}^{5}\, {E5\_2}^{6}+11\, {E1}^{5}\, E5\, E5\_2+E1\, {E5}^{5}\, {E5\_1}^{9}, -{E5}^{5}\, {E5\_2}^{10}+{E1}^{5}\, {E5\_1}^{6}\, {E5\_2}^{6}+{E5}^{5}\, {E5\_1}^{10}+11\, {E1}^{5}, -{E5}^{6}\, {E5\_2}^{10}+{E1}^{6}\, {E5\_1}^{5}\, {E5\_2}^{5}+{E5}^{6}\, {E5\_1}^{10}+11\, {E1}^{5}\, E5, E5\, E5\_1\, E5\_2-E1\right] \]

Naturally, we find the relation \begin{align*} \eta(\tau) = \eta(5\tau) \, \eta_{5,1}(\tau) \, \eta_{5,2}(\tau) \end{align*} as the last expression in the above list.

If we take the last-but-one polynomial from the above list and divide every term by $E_{5,1}^5 E_{5,2}^5 E_5^6$ we get the following list of terms.

In [71]:
[x/E5_1^5/E5_2^5/E5^6 for x in monomials(rels(#rels-1))]
Out[71]:
\[ \left[-\frac{{E5\_2}^{5}}{{E5\_1}^{5}}, \frac{{E1}^{6}}{{E5}^{6}}, \frac{{E5\_1}^{5}}{{E5\_2}^{5}}, \frac{11\, {E1}^{5}}{{E5}^{5}\, {E5\_1}^{5}\, {E5\_2}^{5}}\right] \]

By the relation, we have presented before, the last element in the above list is equal to 11.

In fact, we have computed, the relation for the Rogers-Ramanujan continued fraction.

\begin{align*} \frac{1}{R(q)^5} - R(q)^5 = \frac{\eta_{5;2}(\tau)^5}{\eta_{5;1}(\tau)^5} - \frac{\eta_{5;1}(\tau)^5}{\eta_{5;2}(\tau)^5} &= 11 + \frac{\eta(\tau)^6}{\eta(5\tau)^6} %\tag{1.5} \end{align*}
In [72]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Rogers-Ramanujan Continued Fraction

In [73]:
-------------------------------------------------------------------
--test:RogersRamanujanContinuedFraction
-------------------------------------------------------------------

Define \begin{align} G(q) &= \sum_{n=0}^\infty \frac{q^{n^2}}{(q;q)_n} = \prod_{n=0}^\infty \frac{1}{(1-q^{5n+1})(1-q^{5n+4})} = \frac{1}{\qPochhammer{q,q^4}{q^5}} \\ H(q) &= \sum_{n=0}^\infty \frac{q^{n(n+1)}}{(q;q)_n} = \prod_{n=0}^\infty \frac{1}{(1-q^{5n+2})(1-q^{5n+3})} = \frac{1}{\qPochhammer{q^2,q^3}{q^5}} \end{align}

and Rogers-Ramanujan continued fraction. \begin{gather*} R(q) = q^{\frac15} \dfrac{1}{1+\dfrac{q}{1+\dfrac{q^2}{1+\dfrac{q^3}{1+\ddots}}}} = q^{\frac15} \frac{\qPochhammer{q,q^4}{q^5}} {\qPochhammer{q^2,q^3}{q^5}} = \frac{\eta_{5,1}(\tau)}{\eta_{5,2}(\tau)} \end{gather*}

Let us consider 5-dissections of $\frac{R(q)^5}{q} = \frac{H(q)^5}{G(q)^5} = \frac{\qPochhammer{q,q^4}{q^5}^5} {\qPochhammer{q^2,q^3}{q^5}^5}$ and $\frac{q}{R(q)^5} = \frac{G(q)^5}{H(q)^5} = \frac{\qPochhammer{q^2,q^3}{q^5}^5} {\qPochhammer{q,q^4}{q^5}^5}$.

For the input into the algorithms of QEta they are specified as follows.

In [74]:
idxs := [[5,1],[5,2]];
rrspec := eqSPEC [[5,1,1],[5,2,-1]];
r5spec := rrspec^5
ir5spec := inv r5spec

idrp := findIdM1(5,r5spec,5,0,idxs);
e1 := inv(coefficient idrp)*qequationX(idrp,a[1])

idrn := findIdM1(5,ir5spec,5,0,idxs);
e2 := inv(coefficient idrn)*qequationX(idrn,a[2])
Out[74]:
\[ \left[\left[5, 1, 5\right], \left[5, 2, -5\right]\right] \]
Out[74]:
\[ \left[\left[5, 1, -5\right], \left[5, 2, 5\right]\right] \]
-- numOfGaps:=[0, 0]
Out[74]:
\[ \frac{{{u}_{5, 2}}^{12}\, \left(\sum_{n=0}^{\infty }{{a}_{1}\left(5\, n\right)\, {q}^{n}}\right)}{{q}^{2}}={M1}^{2}-36\, M1-1 \]
-- numOfGaps:=[0, 0]
Out[74]:
\[ \frac{{{u}_{5, 1}}^{2}\, {{u}_{5, 2}}^{10}\, \left(\sum_{n=0}^{\infty }{{a}_{2}\left(5\, n\right)\, {q}^{n}}\right)}{{q}^{2}}={M1}^{2}-36\, M1-1 \]

Interestingly, the right-hand side of the above equations look equal. However, since they were done by different computations, the $M_1$ could stand for different eta-quotients. It turns out, they are same.

In [75]:
(monoidSpecifications(idrp) = monoidSpecifications(idrn))@Boolean
Out[75]:
\[ \texttt{true} \]

Thus, both left-hand sides must be equal. Note that in QEta $u_{5,1}$ and $u_{5,2}$ stand for the $q$-Pochhammer symbols $\qPochhammer{q,q^4}{q^5}$ and $\qPochhammer{q^2,q^3}{q^5}$.

Therefore, after multiplying with some variables we get the following.

In [76]:
rhs(e1-e2)
q^2 * u[5,1]^(-1) * u[5,2]^(-11) * (lhs(e1)=lhs(e2))
Out[76]:
\[ 0 \]
Compiling function G2211 with type Integer -> Boolean
Out[76]:
\[ \frac{{u}_{5, 2}\, \left(\sum_{n=0}^{\infty }{{a}_{1}\left(5\, n\right)\, {q}^{n}}\right)}{{u}_{5, 1}}=\frac{{u}_{5, 1}\, \left(\sum_{n=0}^{\infty }{{a}_{2}\left(5\, n\right)\, {q}^{n}}\right)}{{u}_{5, 2}} \]

It says that \begin{align*} \frac{G(q)}{H(q)} \, U_5\!\left(\frac{H(q)^5}{G(q)^5}\right) &= \frac{H(q)}{G(q)} \, U_5\!\left(\frac{G(q)^5}{H(q)^5}\right) \end{align*} or \begin{align*} U_5\!\left(\frac{R(q)^5}{R(q^5)}\right) &= U_5\!\left(\frac{R(q^5)}{R(q)^5}\right) \end{align*}

where $U_5$ is the operator that acts as follows: \begin{gather*} U_5\left(\sum_{n=k}^\infty a(n)q^n\right) = \sum_{n=\lceil k/5 \rceil}^\infty a(5n)q^n. \end{gather*}

In [77]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Further functions

In [78]:
-------------------------------------------------------------------
--test:Specification
-------------------------------------------------------------------

Specification of eta-quotients

Let $M$ be a positive integer and $\delta$ be a positive divisor of $M$.

The Dedekind eta-function is defined as \begin{align*} \eta: \setH \to \setC, \quad \tau \mapsto q^{\frac{1}{24}} \prod_{n=1}^{\infty}(1-q^n) &= q^{\frac{1}{24}} \qPochhammer{q}{q} \end{align*} where $\setH=\{\tau\in \setC \mid \mathrm{Im}(\tau)>0 \}$ denotes the complex upper half-plane and $q=\exp(2\pi i\tau)$.

Furthermore let $0 \le g \le \delta$.

With $P_2(x) = \{x\}^2 - \{x\} + \frac{1}{6}$ (where $\{x\}= x-\lfloor x \rfloor$ is the fractional part of x) define the generalized eta-function \begin{align*} \eta_{\delta,g}(\tau) &:= q^{\frac{\delta}{2}P_2(\frac{g}{\delta})} % \prod_{\substack{n>0\\n\equiv g\ (\mathrm{mod}\ \delta)}} (1-q^n) \prod_{\substack{n>0\\n\equiv -g\ (\mathrm{mod}\ \delta)}} (1-q^n) \end{align*} For $0<g<\delta$ we have \begin{align} \eta_{\delta,g}(\tau) &= q^{\frac{\delta}{2}P_2(\frac{g}{\delta})} % \prod_{n=1}^\infty (1-q^{\delta (n-1)+g})(1-q^{\delta n-g}) \notag\\ &= q^{\frac{\delta}{2}P_2(\frac{g}{\delta})} % \qPochhammer{q^{g}}{q^\delta} \qPochhammer{q^{\delta-g}}{q^\delta} = q^{\frac{\delta}{2}P_2(\frac{g}{\delta})} % \qPochhammer{q^{g},q^{\delta-g}}{q^\delta}. \end{align}

Note that \begin{gather} \eta_{\delta,0}(\tau) = \eta_{\delta,\delta}(\tau) = \eta(\delta\tau)^2 \qquad\text{and}\qquad \eta_{\delta,\frac{\delta}{2}}(\tau) = \frac{\eta(\frac{\delta}{2}\tau)^2}{\eta(\delta\tau)^2}. \label{eq:purify-eta} \end{gather}

Let a generating series be defined as follows. \begin{gather*} \sum_{n=0}^\infty a(n)q^n = \prod_{\delta|M} \qPochhammer{q^\delta}{q^\delta}^{r_\delta} \prod_{\substack{\delta | M \\ 0 < g < \delta/2}} \qPochhammer{q^g, q^{\delta-g}}{q^\delta}^{r_{\delta,g}} \end{gather*}

QEta finds an identities for \begin{gather*} \sum_{n=0}^\infty a(mn+t)q^n \end{gather*} in terms of generalized eta-quotients.

In QEta such a sequence $(a(n))_{n\geq0}$ is specified by the respective list of pairs $(\delta, r_\delta)$ and triples $(\delta,g,r_{\delta,g})$.

In fact, such a list is called an "eta-specification" and actually specifices a product of eta functions as \begin{align*} g_r(\tau) &= \prod_{i\in I} \eta_i(\tau)^{r_i} = \prod_{\delta\in I^{(1)}} \eta(\delta\tau)^{r_\delta} \prod_{(\delta,g)\in I^{(2)}} \eta_{\delta,g}(\tau)^{r_{\delta,g}} % \label{eq:g_r(tau)} \end{align*} where $I$, $I^{(1)}$ and $I^{(2)}$ denote the respective "index part" from the pairs and triples of the above list.

To simplify input in QEta, whenever a series like \begin{gather*} \sum_{n=0}^\infty a(mn+t)q^n \end{gather*} is to be specified, then it is done by (rspec, m, t) where rspec is an eta-specification and $t<m$ are natural numbers. QEta takes care of the additional fractional $q$-powers that are actually also involved.

So, the specification [[1,-5],[3,7],[5,1,-2],[15,3,1]] means the following.

In [79]:
rspec := eqSPEC [[1,-5],[3,7],[5,1,-2],[15,3,1]]
Out[79]:
\[ \left[\left[1, -5\right], \left[3, 7\right], \left[5, 1, -2\right], \left[15, 3, 1\right]\right] \]
In [80]:
level rspec
Out[80]:
\[ 15 \]
In [81]:
etaQuotient(rspec, varEta$RKI) =_
  qEtaQuotient(rspec, varPochhammer$RKI)
Out[81]:
\[ \frac{{η\left(3\, τ\right)}^{7}\, {η}_{15, 3}\left(τ\right)}{{η\left(τ\right)}^{5}\, {{η}_{5, 1}\left(τ\right)}^{2}}={q}^{\frac{41}{60}}\, \frac{{{\left({q}^{3}; {q}^{3}\right)}_{\infty }}^{7}\, {\left({q}^{3}, {q}^{12}; {q}^{15}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{5}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{2}} \]

We can check whether this eta-quotient is actually a modular function.

Since that specification involves generalize eta-functions, QEta refuses to check for modularity with respect to $\Gamma_0(15)$, i.e. if we uncomment the following line and evaluate, we get an error.

In [82]:
-- modular?(rspec)$QMOD0

It is also not a modular function for $\Gamma_1(15)$.

In [83]:
modular?(rspec)$QMOD1
Out[83]:
\[ \texttt{false} \]

QEta can find a cofactor eta-quotient that (when multiplied to rspec, the result is a modular function for $\Gamma_1(15)$.

In [84]:
sspec:=cofactInfM1(15,rspec,1,0,[[1],[3],[5],[15],[15,1],[15,2],[15,3]])
Out[84]:
\[ \left[\left[1, 7\right], \left[3, -6\right], \left[5, -2\right], \left[15, -1\right], \left[15, 1, -1\right], \left[15, 2, -3\right], \left[15, 3, -5\right]\right] \]

Note that in QEta the specifications themselves form a (multiplicative) group, just like the corresponding eta-quotients do. Thus, we can multiply and divide them.

In [85]:
spec := sspec * rspec
etaQuotient(spec, varEta$RKI)
modular?(spec)$QMOD1
Out[85]:
\[ \left[\left[1, 2\right], \left[3, 1\right], \left[5, -2\right], \left[15, -1\right], \left[5, 1, -2\right], \left[15, 1, -1\right], \left[15, 2, -3\right], \left[15, 3, -4\right]\right] \]
Out[85]:
\[ \frac{{η\left(τ\right)}^{2}\, η\left(3\, τ\right)}{{η\left(5\, τ\right)}^{2}\, η\left(15\, τ\right)\, {{η}_{5, 1}\left(τ\right)}^{2}\, {η}_{15, 1}\left(τ\right)\, {{η}_{15, 2}\left(τ\right)}^{3}\, {{η}_{15, 3}\left(τ\right)}^{4}} \]
Out[85]:
\[ \texttt{true} \]

In particular when dealing with dissections we should expect that we must consider eta-functions with bigger indices. QEta suggests that to find an eta-quotient cofactor $c$ (and a certain fractional $q$-power) to make \begin{gather*} q^\beta c \sum_{n=0}^\infty a(mn+t)q^n \end{gather*} modular for $\Gamma_1(N)$ where \begin{align*} \sum_{n=0}^\infty a(n)q^n &= \qPochhammer{q^2,q^5}{q^7}^{-1} \qPochhammer{q^3, q^4}{q^7}^{-2}, \end{align*} we need at least $N=21$. See Section 2 of Chen, Du, Zhao: "Finding Modular Functions for Ramanujan-Type Identities".

In [86]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
m := 9; t := 5;
nn := minLevelM1(rspec, m, t)
Out[86]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[86]:
\[ 21 \]

However, even if we find a cofactor eta-quotient so that we arrive at a modular function, there might not be enough eta-quotients in that level to find a $\setQ$-linear combination of those for this modular function.

In [87]:
rspec := eqSPEC [[1,-1]]; m := 11; t := 6;
nn := minLevelM1(rspec, m, t)
idxs := etaFunctionIndices nn
sspec := cofactInfM0(nn, rspec, m, t, idxs)
Out[87]:
\[ 11 \]
Out[87]:
\[ \left[\left[1\right], \left[11\right]\right] \]
Out[87]:
\[ \left[\left[1, 12\right], \left[11, -11\right]\right] \]

At least, we know that this is a modular function for $\Gamma_0(11)$ with only a pole at $\infty$.

In [88]:
sump := sum('p(11*n+6)*q^n,n=0,%Infinity);
ai := alphaInfinity(sspec,rspec,m,[t]);
e := ai-rhoInfinity(sspec);
qQuotient(sspec, varEta$RKI, e) * sump =_
  qQuotient(sspec, varPochhammer$RKI, ai) * sump
Out[88]:
\[ {q}^{\frac{13}{24}}\, \frac{{η\left(τ\right)}^{12}}{{η\left(11\, τ\right)}^{11}}\, \left(\sum_{n=0}^{\infty }{p\left(\texttt{11}\, n+\texttt{6}\right)\, {q}^{n}}\right)={q}^{-4}\, \frac{{{\left(q, q\right)}_{\infty }}^{12}}{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{11}}\, \left(\sum_{n=0}^{\infty }{p\left(\texttt{11}\, n+\texttt{6}\right)\, {q}^{n}}\right) \]

As a $q$-expansion it looks like this.

In [89]:
specM0A1(QQ)(sspec, rspec, m, t)
Out[89]:
\[ 11\, {q}^{-4}+165\, {q}^{-3}+748\, {q}^{-2}+1639\, {q}^{-1}+3553+O\left({q}^{1}\right) \]

The monoid of modular eta-quotients of level 11 having at most a pole at $\infty$ is generated by only one element with the following expansion.

In [90]:
mspecs := mSPECSInfM0(level sspec, idxs)
[etaQuotient(x, varEta$RKI) for x in mspecs]
[specM0A1(QQ)(x) for x in mspecs]
Out[90]:
\[ \left[\left[\left[1, 12\right], \left[11, -12\right]\right]\right] \]
Out[90]:
\[ \left[\frac{{η\left(τ\right)}^{12}}{{η\left(11\, τ\right)}^{12}}\right] \]
Out[90]:
\[ \left[{q}^{-5}-12\, {q}^{-4}+54\, {q}^{-3}-88\, {q}^{-2}-99\, {q}^{-1}+O\left({q}^{0}\right)\right] \]

From that is clear that we are not able to represent a function with a 4-fold pole by a function with a 5-fold pole at infinity.

In [91]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Expansion into $q$-series

In [92]:
-------------------------------------------------------------------
--test:qseries-expansion
-------------------------------------------------------------------

Any specification of a (generalized) eta-quotient can be expanded (at $\infty$) into a $q$-series (with possibly fractional exponents according to the definition of the (generalized) Dedekind eta-function given in the previous section.

In [93]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
specEQI(QQ)(rspec)
Out[93]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[93]:
\[ {q}^{\frac{19}{28}}\, \left(1+{q}^{2}+2\, {q}^{3}+3\, {q}^{4}+O\left({q}^{5}\right)\right) \]
In [94]:
rspec := eqSPEC [[1,-1]]
specEQI(QQ)(rspec)
Out[94]:
\[ \left[\left[1, -1\right]\right] \]
Out[94]:
\[ {q}^{-\frac{1}{24}}\, \left(1+q+2\, {q}^{2}+3\, {q}^{3}+5\, {q}^{4}+O\left({q}^{5}\right)\right) \]

QEta can also deal with $q$-Pochhammer symbols, since it just means to ignore the respective fractional $q$-power prefactor of an eta-quotient.

In [95]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
qQuotient(rspec, varPochhammer$RKI, 0) =_
  eulerExpansion specEQI(QQ)(rspec)
Out[95]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[95]:
\[ \frac{1}{{\left({q}^{2}, {q}^{5}; {q}^{7}\right)}_{\infty }\, {{\left({q}^{3}, {q}^{4}; {q}^{7}\right)}_{\infty }}^{2}}=1+{q}^{2}+2\, {q}^{3}+3\, {q}^{4}+O\left({q}^{5}\right) \]

To arrive at the $q$ expansion of the generating series for $p(7n+5)$, we can enter the following.

In [96]:
rspec := eqSPEC [[1,-1]]; m := 7; t := 5;
sump := sum('p(7*n+5)*q^n,n=0,%Infinity);
sump = choose(m, t, eulerExpansion specEQI(QQ)(rspec))
Out[96]:
\[ \sum_{n=0}^{\infty }{p\left(\texttt{7}\, n+\texttt{5}\right)\, {q}^{n}}=7+77\, q+490\, {q}^{2}+2436\, {q}^{3}+10143\, {q}^{4}+O\left({q}^{5}\right) \]

If the specification happens to be a modular function, then QEta offers another way to compute the series expansion at $\infty$.

In [97]:
rspec := eqSPEC [[5,1,-1],[5,2,-11]];
etaQuotient(rspec, varEta$RKI)
modular?(rspec)$QMOD1
specM1A1(QQ)(rspec)
specEQI(QQ)(rspec)
Out[97]:
\[ \frac{1}{{η}_{5, 1}\left(τ\right)\, {{η}_{5, 2}\left(τ\right)}^{11}} \]
Out[97]:
\[ \texttt{true} \]
Out[97]:
\[ {q}^{2}+{q}^{3}+12\, {q}^{4}+23\, {q}^{5}+90\, {q}^{6}+O\left({q}^{7}\right) \]
Out[97]:
\[ {q}^{2}\, \left(1+q+12\, {q}^{2}+23\, {q}^{3}+90\, {q}^{4}+O\left({q}^{5}\right)\right) \]

Note that this function, obviously must have poles at cusps different from $\infty$, i.e. at $0$.

In [98]:
cusps(5)$QMOD0
Out[98]:
\[ \left[0, \infty \right] \]

If we want to investigate \begin{gather*} \sum_{n=0}^\infty a(mn+t)q^n \end{gather*} for the sequence $(a(n))_{n\in\setN}$ given by \begin{gather*} \sum_{n=0}^\infty a(n)q^n = \qPochhammer{q,q^4}{q^5}^{-1} \qPochhammer{q^2, q^3}{q^5}^{-11}, \end{gather*} we first compute an eta-quotient cofactor to turn the product into a modular function for $\Gamma_1(5)$ with only a pole at $\infty$.

As said above the tuple (sspec, rspec, m, t) actually (implicityly) involves a certian factor $q^\beta$ that is determined by (rspec,m,t). Details can be found in equation labelled eq:beta in the file qeta.tex. It is describe by the second term in the definition of $\alpha$ in the abstract of Radu's article or the $q$-factor in equation (10.4) of the article of Chen, Du, and Zhao.

In [99]:
idxs := [[5,1],[5,2]]
sspec := cofactInfM1(5, rspec, 5, 4, idxs)
modular?(sspec,rspec,5,4)$QMOD1
Out[99]:
\[ \left[\left[5, 1\right], \left[5, 2\right]\right] \]
Out[99]:
\[ \left[\left[5, 1, 9\right], \left[5, 2, 51\right]\right] \]
Out[99]:
\[ \texttt{true} \]

In fact, (sspec,rspec,5,4) represents the followin expression.

In [100]:
ai := alphaInfinity(sspec,rspec,5,[4])$SPEC;
beta := ai-rhoInfinity(sspec);
qQuotient(sspec, varEta$RKI, beta) * sum('a(5*n+4)*q^n,n=0,%Infinity)
Out[100]:
\[ {q}^{\frac{6}{5}}\, {{η}_{5, 1}\left(τ\right)}^{9}\, {{η}_{5, 2}\left(τ\right)}^{51}\, \left(\sum_{n=0}^{\infty }{a\left(\texttt{5}\, n+\texttt{4}\right)\, {q}^{n}}\right) \]

The expansion can then be done like this.

In [101]:
specM1A1(QQ)(sspec,rspec,5,4)
Out[101]:
\[ 90\, {q}^{-8}+6015\, {q}^{-7}+180205\, {q}^{-6}+2978895\, {q}^{-5}+32874450\, {q}^{-4}+O\left({q}^{-3}\right) \]

That expansion suggests that there is a congruence modulo 5 hidden in the coefficients. And indeed, here is a corresponding witness identity.

In [102]:
id := findIdM1(5, rspec, 5, 4, idxs);
pretty(id, qIdentity + asExpression + expand + nonModular)
-- numOfGaps:=[0, 0]
Out[102]:
\[ \sum_{n=0}^{\infty }{a\left(5\, n+4\right)\, {q}^{n}}=90\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{49}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{11}}+2415\, q\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{44}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{16}}+25480\, {q}^{2}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{39}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{21}}-108030\, {q}^{3}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{34}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{26}}+685050\, {q}^{4}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{29}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{31}}-1797095\, {q}^{5}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{24}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{36}}+1198980\, {q}^{6}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{19}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{41}}-110040\, {q}^{7}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{14}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{46}}+1090\, {q}^{8}\, \frac{1}{{{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{9}\, {{\left({q}^{2}, {q}^{3}; {q}^{5}\right)}_{\infty }}^{51}} \]

Choosing other index sets, one can also get an identity with eta-quotients with those indices.

In [103]:
id := findIdM1(5, rspec, 5, 4, [[1],[5],[5,1]]);
pretty(id, qIdentity + asExpression + expand + nonModular)
-- numOfGaps:=[0, 0]
Out[103]:
\[ \sum_{n=0}^{\infty }{a\left(5\, n+4\right)\, {q}^{n}}=90\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{11}}{{{\left(q, q\right)}_{\infty }}^{11}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{38}}+2415\, q\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{16}}{{{\left(q, q\right)}_{\infty }}^{16}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{28}}+25480\, {q}^{2}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{21}}{{{\left(q, q\right)}_{\infty }}^{21}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{18}}-108030\, {q}^{3}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{26}}{{{\left(q, q\right)}_{\infty }}^{26}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{8}}+685050\, {q}^{4}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{31}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{31}}-1797095\, {q}^{5}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{36}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{12}}{{{\left(q, q\right)}_{\infty }}^{36}}+1198980\, {q}^{6}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{41}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{22}}{{{\left(q, q\right)}_{\infty }}^{41}}-110040\, {q}^{7}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{46}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{32}}{{{\left(q, q\right)}_{\infty }}^{46}}+1090\, {q}^{8}\, \frac{{{\left({q}^{5}; {q}^{5}\right)}_{\infty }}^{51}\, {{\left(q, {q}^{4}; {q}^{5}\right)}_{\infty }}^{42}}{{{\left(q, q\right)}_{\infty }}^{51}} \]
In [104]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

$\Gamma_0(N)$, $\Gamma_1(N)$, cusps and more

In [105]:
-------------------------------------------------------------------
--test:Gamma
-------------------------------------------------------------------

QEta provides the domains CongruenceSubgroupGamma0 and CongruenceSubgroupGamma1 for a number of functions connected to $\Gamma_0(N)$ and $\Gamma_1(N)$. These domains are abbreviated by GAMMA0 and GAMMA1, respectively through qetamacros.input.

In [106]:
nn := 22
genus()$GAMMA0(nn)
numberOfCusps()$GAMMA0(nn)
spitzen := cusps()$GAMMA0(nn)
Out[106]:
\[ 22 \]
Out[106]:
\[ 2 \]
Out[106]:
\[ 4 \]
Out[106]:
\[ \left[0, \frac{1}{11}, \frac{1}{2}, \infty \right] \]
In [107]:
ws := [width(c)$GAMMA0(nn) for c in spitzen]
assertEquals(ws, [22,2,11,1])
Out[107]:
\[ \left[22, 2, 11, 1\right] \]
Out[107]:
\[ \texttt{true} \]
In [108]:
[cuspToMatrix(c)$GAMMA0(nn) for c in spitzen]
Out[108]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&1\\11&12\end{bmatrix}, \begin{bmatrix}1&5\\2&11\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
In [109]:
doubleCosetRepresentatives()$GAMMA0(nn)
Out[109]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&1\\11&12\end{bmatrix}, \begin{bmatrix}1&5\\2&11\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]

We can do similar things for $\Gamma_1(22)$.

In [110]:
nn := 22
genus()$GAMMA1(nn)
numberOfCusps()$GAMMA1(nn)
spitzen := cusps()$GAMMA1(nn)
Out[110]:
\[ 22 \]
Out[110]:
\[ 6 \]
Out[110]:
\[ 20 \]
Out[110]:
\[ \left[0, \frac{1}{11}, \frac{1}{10}, \frac{1}{9}, \frac{1}{8}, \frac{3}{22}, \frac{1}{7}, \frac{1}{6}, \frac{2}{11}, \frac{1}{5}, \frac{5}{22}, \frac{1}{4}, \frac{3}{11}, \frac{7}{22}, \frac{1}{3}, \frac{4}{11}, \frac{9}{22}, \frac{5}{11}, \frac{1}{2}, \infty \right] \]
In [111]:
[width(c)$GAMMA1(nn) for c in spitzen]
Out[111]:
\[ \left[22, 2, 11, 22, 11, 1, 22, 11, 2, 22, 1, 11, 2, 1, 22, 2, 1, 2, 11, 1\right] \]
In [112]:
[cuspToMatrix(c)$GAMMA1(nn) for c in spitzen]
Out[112]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&0\\11&1\end{bmatrix}, \begin{bmatrix}1&0\\10&1\end{bmatrix}, \begin{bmatrix}1&0\\9&1\end{bmatrix}, \begin{bmatrix}1&0\\8&1\end{bmatrix}, \begin{bmatrix}3&-1\\22&-7\end{bmatrix}, \begin{bmatrix}1&0\\7&1\end{bmatrix}, \begin{bmatrix}1&0\\6&1\end{bmatrix}, \begin{bmatrix}2&-1\\11&-5\end{bmatrix}, \begin{bmatrix}1&0\\5&1\end{bmatrix}, \begin{bmatrix}5&2\\22&9\end{bmatrix}, \begin{bmatrix}1&0\\4&1\end{bmatrix}, \begin{bmatrix}3&1\\11&4\end{bmatrix}, \begin{bmatrix}7&-1\\22&-3\end{bmatrix}, \begin{bmatrix}1&0\\3&1\end{bmatrix}, \begin{bmatrix}4&1\\11&3\end{bmatrix}, \begin{bmatrix}9&2\\22&5\end{bmatrix}, \begin{bmatrix}5&-1\\11&-2\end{bmatrix}, \begin{bmatrix}1&0\\2&1\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
In [113]:
doubleCosetRepresentatives()$GAMMA1(nn)
Out[113]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&0\\11&1\end{bmatrix}, \begin{bmatrix}1&0\\10&1\end{bmatrix}, \begin{bmatrix}1&0\\9&1\end{bmatrix}, \begin{bmatrix}1&0\\8&1\end{bmatrix}, \begin{bmatrix}3&-1\\22&-7\end{bmatrix}, \begin{bmatrix}1&0\\7&1\end{bmatrix}, \begin{bmatrix}1&0\\6&1\end{bmatrix}, \begin{bmatrix}2&-1\\11&-5\end{bmatrix}, \begin{bmatrix}1&0\\5&1\end{bmatrix}, \begin{bmatrix}5&2\\22&9\end{bmatrix}, \begin{bmatrix}1&0\\4&1\end{bmatrix}, \begin{bmatrix}3&1\\11&4\end{bmatrix}, \begin{bmatrix}7&-1\\22&-3\end{bmatrix}, \begin{bmatrix}1&0\\3&1\end{bmatrix}, \begin{bmatrix}4&1\\11&3\end{bmatrix}, \begin{bmatrix}9&2\\22&5\end{bmatrix}, \begin{bmatrix}5&-1\\11&-2\end{bmatrix}, \begin{bmatrix}1&0\\2&1\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]

Which of the cusps of $\Gamma_1(22)$ are $\Gamma_0(22)$-equivalent to $\infty$.

In [114]:
cs := [c for c in spitzen | equivalentCusps?(oo, c)$GAMMA0(nn)]
assertEquals(cs, [cusp(3,22),cusp(5,22),cusp(7,22),cusp(9,22),oo])
Out[114]:
\[ \left[\frac{3}{22}, \frac{5}{22}, \frac{7}{22}, \frac{9}{22}, \infty \right] \]
Out[114]:
\[ \texttt{true} \]

So when we "normalize" these cusps, they should all look the same. When we do this over all cusps of $\Gamma_1(22)$, they collapse to the cusps of $\Gamma_0(22)$.

In [115]:
assertEquals([normalizeCusp(c)$GAMMA0(nn) for c in cs], [oo,oo,oo,oo,oo])
ll := [normalizeCusp(c)$GAMMA0(nn) for c in spitzen]
cs := cusps()$GAMMA0(nn)
assertEquals(ll, [cs.n for n in [1,2,3,1,3,4,1,3,2,1,4,3,2,4,1,2,4,2,3,4]])
Out[115]:
\[ \texttt{true} \]
Out[115]:
\[ \left[0, \frac{1}{11}, \frac{1}{2}, 0, \frac{1}{2}, \infty , 0, \frac{1}{2}, \frac{1}{11}, 0, \infty , \frac{1}{2}, \frac{1}{11}, \infty , 0, \frac{1}{11}, \infty , \frac{1}{11}, \frac{1}{2}, \infty \right] \]
Out[115]:
\[ \left[0, \frac{1}{11}, \frac{1}{2}, \infty \right] \]
Out[115]:
\[ \texttt{true} \]
In [116]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Expansion at cusps

In [117]:
-------------------------------------------------------------------
--test:expansion-at-cusps
-------------------------------------------------------------------

Let us consider the Rogers-Ramanujan continued fraction. \begin{gather*} R(q) = q^{\frac15} \dfrac{1}{1+\dfrac{q}{1+\dfrac{q^2}{1+\dfrac{q^3}{1+\ddots}}}} = q^{\frac15} \frac{\qPochhammer{q,q^4}{q^5}} {\qPochhammer{q^2,q^3}{q^5}} = \frac{\eta_{5,1}(\tau)}{\eta_{5,2}(\tau)} \end{gather*}

In [118]:
rspec := eqSPEC [[5,1,1],[5,2,-1]];
r5spec := rspec^5
modular?(r5spec)$QMOD1
Out[118]:
\[ \left[\left[5, 1, 5\right], \left[5, 2, -5\right]\right] \]
Out[118]:
\[ \texttt{true} \]

QEta precomputes data about eta-quotients into a data structure called "symbolic eta-qutient". The transformation of a specification into such a data structure is done by specYM1EQ (specification to sYmbolic Modular (for $\Gamma_1$) Eta-Quotient). Since the data structure is rather big, we put a semicolon at the end of the line, so that nothing is printed.

In [119]:
yr5 := specYM1EQ r5spec;

For specifications without dissections, the order at the cusps can be directly read of from the following command.

In [120]:
cusps(yr5)
ordersMin yr5
Out[120]:
\[ \left[0, \frac{2}{5}, \frac{1}{2}, \infty \right] \]
Out[120]:
\[ \left[0, -1, 0, 1\right] \]

Let us check the following identity.

\begin{align*} \frac{1}{R(q)^5} - R(q)^5 &= 11 + \frac{\eta(\tau)^6}{\eta(5\tau)^6} \end{align*}\begin{align} \frac{\eta_{5;2}(\tau)^5}{\eta_{5;1}(\tau)^5} - \frac{\eta_{5;1}(\tau)^5}{\eta_{5;2}(\tau)^5} &= 11 + \frac{\eta(\tau)^6}{\eta(5\tau)^6} %\tag{1.5} \end{align}
In [121]:
espec := eqSPEC [[1,6],[5,-6]]
modular?(espec)$QMOD1
ye := specYM1EQ espec;
ordersMin ye
Out[121]:
\[ \left[\left[1, 6\right], \left[5, -6\right]\right] \]
Out[121]:
\[ \texttt{true} \]
Out[121]:
\[ \left[1, -1, 1, -1\right] \]

Obviously, we have poles not only at $\infty$. Let us show another identity from which the above will follow, namely: \begin{align*} \frac{1}{R(q)^{10}} - 11 \frac{1}{R(q)^5} - \frac{\eta(\tau)^6}{\eta(5\tau)^6 R(q)^5} &= 1 \end{align*}

\begin{align} \frac{\eta_{5;2}(\tau)^{10}}{\eta_{5;1}(\tau)^{10}} - 11 \frac{\eta_{5;2}(\tau)^5}{\eta_{5;1}(\tau)^5} - \frac{\eta(\tau)^6}{\eta(5\tau)^6} \frac{\eta_{5;2}(\tau)^5}{\eta_{5;1}(\tau)^5} &= 1 \end{align}
In [122]:
i10spec := rspec^(-10);
i5spec := rspec^(-5);
gspec := espec*i5spec;

All parts of the equation are modular functions for $\Gamma_1(5)$. Even more, they only have poles at the cusp $\infty$.

In [123]:
[modular?(i5spec)$QMOD1, modular?(gspec)$QMOD1]
Out[123]:
\[ \left[\texttt{true}, \texttt{true}\right] \]
In [124]:
yi5  := specYM1EQ i5spec;
yi10 := specYM1EQ i10spec;
yg   := specYM1EQ gspec;
ordersMin yi5
ordersMin yi10
ordersMin yg
Out[124]:
\[ \left[0, 1, 0, -1\right] \]
Out[124]:
\[ \left[0, 2, 0, -2\right] \]
Out[124]:
\[ \left[1, 0, 1, -2\right] \]

So we only need to check whether the principal part of the $q$-expansion at infinity of the left-hand side vanishes and the constant term is 1. This is indeed the case.

In [125]:
specM1A1(ZZ)(i10spec) - 11*specM1A1(ZZ)(i5spec) - specM1A1(ZZ)(gspec)
Out[125]:
\[ 1+O\left({q}^{5}\right) \]

QEta does not only implement the expansion of a modular function at the cusp infinity, but also at other cusps. For example, the expansion of $R(q)^5$ at all cusps of $\Gamma_1(5)$ is given below.

The expansion at all cusps cannot be done with series over $\setQ$, but needs an extension with a root of unity $\xi$. In our case, $\setQ[\xi]$ works where $\xi^20=1$.

In [126]:
xiord := minimalRootOfUnity yr5
Out[126]:
\[ 20 \]

Let us first read another set of macros provided by QEta.

In [127]:
)read convenience.input )quiet
In [128]:
C ==> QQ
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
spitzen := cusps(yr5)
)set stream calc 3
r5 := expandM1AnCX yr5
Out[128]:
\[ \left[0, \frac{2}{5}, \frac{1}{2}, \infty \right] \]
Out[128]:
\[ \left[-5\, {ξ}^{6}+5\, {ξ}^{4}-3+\left(-55\, {ξ}^{6}+55\, {ξ}^{4}-35\right)\, q+\left(-340\, {ξ}^{6}+340\, {ξ}^{4}-205\right)\, {q}^{2}+\left(-1495\, {ξ}^{6}+1495\, {ξ}^{4}-940\right)\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+O\left({q}^{3}\right), 5\, {ξ}^{6}-5\, {ξ}^{4}-8+\left(55\, {ξ}^{4}+35\, {ξ}^{2}+55\right)\, q+\left(-340\, {ξ}^{6}-205\, {ξ}^{4}-340\, {ξ}^{2}\right)\, {q}^{2}+\left(2435\, {ξ}^{6}+1495\, {ξ}^{2}-1495\right)\, {q}^{3}+O\left({q}^{4}\right), q-5\, {q}^{2}+15\, {q}^{3}-30\, {q}^{4}+O\left({q}^{5}\right)\right] \]

Now we can also show the original identity directly by checking that the principle part (including the constant term) vanishes at all cusps.

In [129]:
one := 1$An(CX)
Out[129]:
\[ \left[1, 1, 1, 1\right] \]
In [130]:
left := one/r5 - r5
Out[130]:
\[ \left[11+125\, q+750\, {q}^{2}+3375\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right), 11-125\, {ξ}^{2}\, q+750\, {ξ}^{4}\, {q}^{2}-3375\, {ξ}^{6}\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right)\right] \]
In [131]:
right := 11*one + expandM1AnCX ye
Out[131]:
\[ \left[11+125\, q+750\, {q}^{2}+3375\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right), 11-125\, {ξ}^{2}\, q+750\, {ξ}^{4}\, {q}^{2}-3375\, {ξ}^{6}\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right)\right] \]
In [132]:
assertTrue(zero?(left - right))
Out[132]:
\[ \texttt{true} \]

Similarly, we can check \begin{align*} PQ + \frac{9}{PQ} = \frac{Q^3}{P^3} + \frac{P^3}{Q^3} \end{align*} where $P = \frac{\eta(\tau)^2}{\eta(3\tau)^2}$ and $Q = \frac{\eta(2\tau)^2}{\eta(6\tau)^2}$.

This time, we confirm the identity at the cusps of $\Gamma_0(6)$.

Unfortunately, the identity does not consist of terms that are modular for $\Gamma_0(6)$, so we divide by $PQ$ and check this identity.

In [133]:
pspec   := eqSPEC [[1,2],[3,-2]];
qspec   := eqSPEC [[2,2],[6,-2]];
pqspec  := pspec*qspec
s1 := pqspec^(-2)
s2 := qspec^3/pspec^3/pqspec
s3 := pspec^3/qspec^3/pqspec
[modular?(x)$QMOD0 for x in [s1,s2,s3]]
Out[133]:
\[ \left[\left[1, 2\right], \left[2, 2\right], \left[3, -2\right], \left[6, -2\right]\right] \]
Out[133]:
\[ \left[\left[1, -4\right], \left[2, -4\right], \left[3, 4\right], \left[6, 4\right]\right] \]
Out[133]:
\[ \left[\left[1, -8\right], \left[2, 4\right], \left[3, 8\right], \left[6, -4\right]\right] \]
Out[133]:
\[ \left[\left[1, 4\right], \left[2, -8\right], \left[3, -4\right], \left[6, 8\right]\right] \]
Out[133]:
\[ \left[\texttt{true}, \texttt{true}, \texttt{true}\right] \]

Here we actually need no field extension.

In [134]:
ys := [specYM0EQ(s) for s in [s1,s2,s3]];
xiord := lcm [minimalRootOfUnity y for y in ys]
C ==> QQ
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
spitzen := cusps(ys.1)
one := 1$An(CX);
)set stream calc 3
Out[134]:
\[ 1 \]
Out[134]:
\[ \left[0, \frac{1}{3}, \frac{1}{2}, \infty \right] \]
In [135]:
exs := [expandM0AnCX y for y in ys];
left := one + 9*exs.1
right := exs.2 + exs.3
assertTrue(zero?(left - right))
Out[135]:
\[ \left[\frac{1}{9}\, {q}^{-1}+\frac{5}{9}-\frac{2}{9}\, q+\frac{28}{9}\, {q}^{2}+O\left({q}^{3}\right), 1+9\, q+36\, {q}^{2}+162\, {q}^{3}+O\left({q}^{4}\right), \frac{1}{9}\, {q}^{-1}+\frac{5}{9}-\frac{2}{9}\, q+\frac{28}{9}\, {q}^{2}+O\left({q}^{3}\right), 1+9\, q+36\, {q}^{2}+162\, {q}^{3}+O\left({q}^{4}\right)\right] \]
Out[135]:
\[ \left[\frac{1}{9}\, {q}^{-1}+\frac{5}{9}-\frac{2}{9}\, q+\frac{28}{9}\, {q}^{2}+O\left({q}^{3}\right), 1+9\, q+36\, {q}^{2}+162\, {q}^{3}+O\left({q}^{4}\right), \frac{1}{9}\, {q}^{-1}+\frac{5}{9}-\frac{2}{9}\, q+\frac{28}{9}\, {q}^{2}+O\left({q}^{3}\right), 1+9\, q+36\, {q}^{2}+162\, {q}^{3}+O\left({q}^{4}\right)\right] \]
Out[135]:
\[ \texttt{true} \]
In [136]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
In [ ]: