$ \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]:
)cd ..
)read input/jfricas-test-support.input )quiet
The current FriCAS default directory is /home/hemmecke/backup/git/qeta 
All user variables and function definitions have been cleared.
All )browse facility databases have been cleared.
Internally cached functions and constructors have been cleared.
 )clear completely is finished.
The current FriCAS default directory is /home/hemmecke/backup/git/qeta/tmp 
In [ ]:
)set output formatted off
)set output algebra on

QEta Tutorial¶

This file contains a short tutorial of some 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.

If you have installed FriCAS, together with jFriCAS and JupyText (see the FriCAS installation guide), you can load and run this QEtaTutorial inside a Jupyther notebook.

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 message 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 [3]:
C ==> QQ
RKI ==> QEtaRamanujanKolbergIdentity(C)
oo ==> infinity()$Cusp
)set stream calc 2
In [4]:
-------------------------------------------------------------------
--endsetup
-------------------------------------------------------------------

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

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's_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 our treatise 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)$, so we use the following indices.

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

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

The function to call is findIdM0 as specified in qetamacros.input. It takes 5 parameters

  1. the $N$ from $\Gamma_0(N)$,
  2. the specification of the generating series rspec,
  3. the dissection factor $m$,
  4. the dissection offset $k$,
  5. the indices idxs for the eta-functions to be used.

The variable id will contain all relevant data, but this data structure is usually rather big and uninteresting as a whole, so we add a semicolon at the end of the command in order to prevent its printing.

In [8]:
id := findIdM0(5, rspec, 5, 4, idxs);
-- numOfGaps:=[0, 0]

The actual relation can be shown by the following command.

In [9]:
pretty(id, formatExpanded() + formatAsExpression())
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 \]

Note that findIdM0 is a macro. It is refers to a function findIdentity from the package QEtaRamanujanKolberg(C,QMOD0). The package implements Radu's algorithm genericaly over various coefficient domains and for $\Gamma_0(M)$ and $\Gamma_1(M)$ which have to be given as concrete arguments to QEtaRamanujanKolberg. Usage of the macro findIdM0 shortens the otherwise quite lengthy function call. Note that the 0 in the name corresponds to $\Gamma_0(N)$.

$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, formatExpanded() + formatAsExpression())
-- == z:=[zinhom=[[1]], zhom=[], zfree=[]]
-- 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 formatAsNonModular() option, brings the cofactor of the generating function to the right-hand side.

In [11]:
pretty(id, formatExpanded() + formatAsExpression() + formatAsNonModular())
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 formatWithQFactor() shows $q$-Pochhammer symbols instead of Dedekind eta-functions.

In [12]:
pretty(id, formatExpanded() + formatAsExpression() + formatAsNonModular() _
           + formatWithQFactor())
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 formatAsExpression() option and show the identity with variables where $u_\delta$ stands for $\qPochhammer{q^\delta}{q^\delta}$.

In [13]:
pretty(id, formatExpanded() + formatAsNonModular() + formatWithQFactor())
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, formatExpanded() + formatAsNonModular() + formatWithQFactor()_
           + formatWithSubscript())
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, formatExpanded() + formatAsNonModular() + formatWithSubscript())
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, formatExpanded() + formatAsNonModular())
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, formatExpanded() + formatAsNonModular())
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);
-- == z:=[zinhom=[[0]], zhom=[], zfree=[]]
-- numOfGaps:=[120, 1]

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

In [19]:
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatWithSubscript())
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)$.

In [20]:
zero? identityPolynomial id
Out[20]:
\[ \texttt{true} \]

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

In [21]:
idxs := [[1],[2],[11],[22]];
id := findIdM0(22, rspec, 11, 6, idxs);
-- == z:=[zinhom=[], zhom=[], zfree=[]]
-- >= z:=[zinhom=[[4, -1, 1], [5, -1, 2], [4, -1, 2]], zhom=[[3, -1, 0], [4, -1, 1], [1, -1, 1], [2, -1, 1], [3, -1, 1], [0, -1, 1], [2, 0, 1]], zfree=[]]
-- numOfGaps:=[216, 2]
-- numOfGaps:=[162, 2]
-- numOfGaps:=[108, 2]
-- numOfGaps:=[55, 2]
-- numOfGaps:=[55, 2]
-- numOfGaps:=[2, 2]
In [22]:
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
Out[22]:
\[ \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 [23]:
pretty(id, formatExpanded() + formatWithSubscript())
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}\, \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 [24]:
pretty(id, formatWithSubscript())
Out[24]:
\[ \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 [25]:
11^4*identityPolynomial(id)=0
Out[25]:
\[ \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 [26]:
mspecs := monoidSpecifications id
Out[26]:
\[ \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)^4\eta(22\tau)^8}$, etc. It can be shown easily by functions from QEta.

In [27]:
[etaQuotient(x, varEta) for x in mspecs]
[qEtaQuotient(x, varPochhammer) for x in mspecs]
Out[27]:
\[ \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[27]:
\[ \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] \]

QEta also contains a special type, namely QEtaSpecificationRing, that enables to deal with linear combinations of eta-quotients. It can be used to print the eta-quotients as above.

In [28]:
srs := [x::QEtaSpecificationRing(ZZ) for x in mspecs];
[pretty(x, formatWithSubscript()) for x in srs]
[pretty(x, formatWithQFactor()+formatWithSubscript()) for x in srs]
Out[28]:
\[ \left[\frac{{{E}_{2}}^{8}\, {{E}_{11}}^{4}}{{{E}_{1}}^{4}\, {{E}_{22}}^{8}}, \frac{{E}_{2}\, {{E}_{11}}^{11}}{{E}_{1}\, {{E}_{22}}^{11}}, \frac{{{E}_{1}}^{7}\, {{E}_{11}}^{3}}{{{E}_{2}}^{3}\, {{E}_{22}}^{7}}, \frac{{{E}_{2}}^{6}\, {{E}_{11}}^{6}}{{{E}_{1}}^{2}\, {{E}_{22}}^{10}}, \frac{{{E}_{2}}^{4}\, {{E}_{11}}^{8}}{{{E}_{22}}^{12}}, \frac{{{E}_{1}}^{2}\, {{E}_{2}}^{2}\, {{E}_{11}}^{10}}{{{E}_{22}}^{14}}, \frac{{{E}_{1}}^{4}\, {{E}_{11}}^{12}}{{{E}_{22}}^{16}}\right] \]
Out[28]:
\[ \left[{q}^{-5}\, \frac{{{u}_{2}}^{8}\, {{u}_{11}}^{4}}{{{u}_{1}}^{4}\, {{u}_{22}}^{8}}, {q}^{-5}\, \frac{{u}_{2}\, {{u}_{11}}^{11}}{{u}_{1}\, {{u}_{22}}^{11}}, {q}^{-5}\, \frac{{{u}_{1}}^{7}\, {{u}_{11}}^{3}}{{{u}_{2}}^{3}\, {{u}_{22}}^{7}}, {q}^{-6}\, \frac{{{u}_{2}}^{6}\, {{u}_{11}}^{6}}{{{u}_{1}}^{2}\, {{u}_{22}}^{10}}, {q}^{-7}\, \frac{{{u}_{2}}^{4}\, {{u}_{11}}^{8}}{{{u}_{22}}^{12}}, {q}^{-8}\, \frac{{{u}_{1}}^{2}\, {{u}_{2}}^{2}\, {{u}_{11}}^{10}}{{{u}_{22}}^{14}}, {q}^{-9}\, \frac{{{u}_{1}}^{4}\, {{u}_{11}}^{12}}{{{u}_{22}}^{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 [29]:
idxs := [[1],[11],[11,1],[11,2],[11,3],[11,4]];
id := findIdM1(11, rspec, 11, 6, idxs);
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
-- == z:=[zinhom=[[2, 2, -7, 5, 2]], zhom=[], zfree=[]]
-- numOfGaps:=[75, 1]
-- numOfGaps:=[75, 1]
-- numOfGaps:=[1, 1]
Out[29]:
\[ \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}}+440\, {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}}+2475\, {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}}+6072\, {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}}+7898\, {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}}+5676\, {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 }}+1859\, {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}}-176\, {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}}-264\, {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 }}^{9}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{5}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{16}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{5}}+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 }}^{5}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{3}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{13}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{4}}+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 }\, {\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{3}}-968\, {q}^{7}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{10}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{3}\, {\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{11}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{7}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{2}}-2541\, {q}^{9}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{12}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{7}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{3}}{{{\left(q, q\right)}_{\infty }}^{13}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{4}\, {\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}-2420\, {q}^{11}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{14}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{11}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{5}}{{{\left(q, q\right)}_{\infty }}^{15}\, {\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}-1210\, {q}^{13}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{16}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{15}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{7}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{2}\, {\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{17}}-242\, {q}^{15}\, \frac{{{\left({q}^{11}; {q}^{11}\right)}_{\infty }}^{18}\, {{\left(q, {q}^{10}; {q}^{11}\right)}_{\infty }}^{19}\, {{\left({q}^{2}, {q}^{9}; {q}^{11}\right)}_{\infty }}^{9}\, {{\left({q}^{3}, {q}^{8}; {q}^{11}\right)}_{\infty }}^{5}\, {{\left({q}^{4}, {q}^{7}; {q}^{11}\right)}_{\infty }}^{2}}{{{\left(q, q\right)}_{\infty }}^{19}} \]
In [30]:
identityPolynomial id
Out[30]:
\[ \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)\, M6-{M1}^{10}-40\, {M1}^{9}-225\, {M1}^{8}-552\, {M1}^{7}-718\, {M1}^{6}-516\, {M1}^{5}-169\, {M1}^{4}+16\, {M1}^{3}+24\, {M1}^{2}+3\, M1+\frac{1}{11}\, F-1 \]
In [31]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

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

In [32]:
-------------------------------------------------------------------
--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 [33]:
mm := 1; rspec := eqSPEC [[1,-1]];
In [34]:
idxs := [[1],[5]];
id := findIdM0(5, rspec, 5, 1, idxs);
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
-- == z:=[zinhom=[[1]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[34]:
\[ \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 [35]:
id1 := findIdM1(5, rspec, 5, 1, [[1],[5],[5,1]]);
pretty(id1, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[35]:
\[ \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 [36]:
id
pretty(id,0)
Out[36]:
\[ \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[36]:
\[ \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 \]

definingSpecification describes the generating function for $(a(n))_{n\ge0}$.

multiplier is the factor $m$ of the dissection $a(m n + k)$.

orbit gives the list of offsets $k'$ that must be considered together with the initially given offset $l$.

coSpecification describes the (generalized) eta-quotient that must be multiplied to the dissected generating series in order to arrive at a modular function.

coefficient is the constant coefficient of the left hand side. QEta does not generally divide by this coefficient, since QEta can work with coefficient rings that are not fields.

monoidSpecifications describe the eta-quotients that can potentially appear of the right-hand side of the identity, where the first element can appear in any non-negative power while the others may only appear linearly.

identityPolynomial is a condensed version of the identity where $F$ stands for the modular function on the left-hand side and the $M_i$ are the eta-quotients given by monoidSpecifications.

alphaInfinity gives the order of $q$ of the left-hand side when expanded as a $q$-series while alphaOrbitInfinity only gives the part of the $q$ exponent that is (technically) connected to the orbit product of the dissected generating series.

In the output of pretty the symbol t stands for M1.

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

In [37]:
coSpecification id
definingSpecification id
multiplier id
orbit id
monoidSpecifications id
identityPolynomial id
coefficient id
alphaInfinity id
alphaOrbitInfinity id
Out[37]:
\[ \left[\left[1, 12\right], \left[5, -10\right]\right] \]
Out[37]:
\[ \left[\left[1, -1\right]\right] \]
Out[37]:
\[ 5 \]
Out[37]:
\[ \left[2, 1\right] \]
Out[37]:
\[ \left[\left[\left[1, 6\right], \left[5, -6\right]\right]\right] \]
Out[37]:
\[ -\frac{2}{25}\, M1+\frac{1}{25}\, F-1 \]
Out[37]:
\[ \frac{1}{25} \]
Out[37]:
\[ -1 \]
Out[37]:
\[ \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 [38]:
)set message type on
eexpr1 := equationX(id, 'p)
uexpr1 := qequationX(id, 'p)
)set message type off
Out[38]:
\[ \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 \]
Equation(Expression(Fraction(Integer)))
Out[38]:
\[ \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 \]
Equation(Expression(Fraction(Integer)))

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

In [39]:
id3 := findIdM0(5, rspec, 5, 3, idxs);
eexpr3 := equationX(id3, 'p)
uexpr3 := qequationX(id3, 'p)
-- == z:=[zinhom=[[1]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[39]:
\[ \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[39]:
\[ \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 [40]:
eq1 := 25*q*u[5]^10/u[1]^12 * (3*uexpr1 - 2*uexpr3)
Out[40]:
\[ -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 [41]:
id4 := findIdM0(5, rspec, 5, 4, idxs);
uexpr4 := qequationX(id4, 'p)
-- numOfGaps:=[0, 0]
Out[41]:
\[ \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 [42]:
eq1 - q*((u[5]^5/u[1]^6)*uexpr4)^2
Out[42]:
\[ -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 [43]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

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

In [44]:
-------------------------------------------------------------------
--test:time140-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 (generalized) 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+k)$ into the list ids.

In [45]:
idxs := [[1],[5],[5,1]]; rspec := eqSPEC [[1,-1]];
id := findIdM1(5, idxs, rspec, 5, 0, idxs);
ids := [findIdM1(5, idxs, rspec, 5, k, id) for k in 0..4];
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]

Generators for relations ideal¶

In [46]:
sspec:=coSpecification(ids.1)
mon := f * monomial(sspec, "E", "Y")
ipol := inv coefficient id * identityPolynomial id - 'F::Pol(ZZ)
Out[46]:
\[ \left[\left[1, 7\right], \left[5, -6\right], \left[5, 1, -2\right]\right] \]
Out[46]:
\[ {E1}^{7}\, {Y5}^{6}\, {Y5\_1}^{2}\, f \]
Out[46]:
\[ -M1+3 \]
In [47]:
QEtaIdeal ==> QEtaIdealHemmecke
QI1 ==> QEtaIdeal(QMOD1)
In [48]:
idpol(id: RKI, f: Symbol): Pol ZZ == (_
  sspec := coSpecification id;_
  mon: Pol(ZZ) := f * monomial(sspec, "E", "Y");_
  ipol: Pol(ZZ) := (inv coefficient id * identityPolynomial id - 'F)::Pol(ZZ);_
  mon+ipol)
Function declaration idpol : (QEtaRamanujanKolbergIdentity(Fraction(Integer))
, Symbol) -> Polynomial(Integer) has been added to workspace.

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

In [49]:
[equationX(ids.k,'p) for k in 1..5]
Out[49]:
\[ \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 [50]:
mspecs := monoidSpecifications ids.1
[etaQuotient(x, varEta) for x in mspecs]
Out[50]:
\[ \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[50]:
\[ \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 [51]:
fs := [concat("f",string(k-1))::Symbol_
       = q^alphaOrbitInfinity(ids.k) * orbitProductX(ids.k,'p)_
           for k in 1..5]
Out[51]:
\[ \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 [52]:
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(Integer) 
Out[52]:
\[ \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 [53]:
mspecs := monoidSpecifications first ids;
eqrels := etaLaurentIdealGenerators(idxs, mspecs, mps)$QI1
Out[53]:
\[ \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, {E1}^{9}\, {Y5}^{8}\, {Y5\_1}^{6}\, f2-2\, {E1}^{5}\, {Y5}^{5}\, {Y5\_1}^{10}+1, {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 [54]:
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,_
  E1^9*Y5^8*Y5_1^6*f2 - 2*E1^5*Y5^5*Y5_1^10 + 1,_
  E1^10*Y5^9*Y5_1^8*f3 - 3*E1^5*Y5^5*Y5_1^10 - 1,_
  E1^6*Y5^5*f4 - 5])
Out[54]:
\[ \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 [55]:
)set message time on
algrels := algebraicRelations(idxs, eqrels, char "f")$QI1;
)set message time off
assertEquals(algrels, [_
  10*f0^2*f3^2-9*f0^2*f2*f4-9*f1*f3^2*f4+4*f0*f3*f4^2+4*f4^4,_
  5*f0*f1*f3-3*f0^2*f4-6*f2*f3*f4+4*f1*f4^2,_
  5*f0*f2*f3-6*f0*f1*f4-3*f3^2*f4+4*f2*f4^2,_
  2*f1^2-f0*f2-f3*f4, 3*f1*f2-2*f0*f3-f4^2, 2*f2^2-f1*f3-f0*f4])
-- numOfGaps:=[0, -1]
-- numOfGaps:=[0, -1]
-- TIME:=0.49
Out[55]:
Time: 0.02 (EV) = 0.03 sec
Out[55]:
\[ \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 [56]:
algrels.5 = 0
Out[56]:
\[ -{f4}^{2}-2\, f0\, f3+3\, f1\, f2=0 \]

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

In [57]:
simplify(eval(algrels.5, fs)) * q^(-7/12) = 0
Out[57]:
\[ -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 \]

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

In [58]:
simplify(eval(algrels.4, fs)) * q^(-23/60) = 0
Out[58]:
\[ -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}=0 \]
In [59]:
simplify(eval(algrels.6, fs)) * q^(-47/60) = 0
Out[59]:
\[ -\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}=0 \]
In [60]:
simplify(eval(algrels.3, fs)) * q^(-39/40) = 0
simplify(eval(algrels.2, fs)) * q^(-31/40) = 0
simplify(eval(algrels.1, fs)) * q^(-7/6) = 0
Out[60]:
\[ 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)=0 \]
Out[60]:
\[ 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)=0 \]
Out[60]:
\[ 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}=0 \]

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

In [61]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Check Eta-quotient identities¶

In [62]:
-------------------------------------------------------------------
--test:CheckEtaQuotientIdentity
-------------------------------------------------------------------

Let us check the validity of an eta-quotient identity from Lemma 13 of "Elementary Proofs of Congruences for Pond and Pend Partitions" by James Sellers, namely \begin{gather*} \frac{f_3^3}{f_1} - q \frac{f_{12}^3}{f_4} = \frac{f_4^3 f_6^2}{f_2^2 f_{12}}, \end{gather*} which appears as equation (22.7.5) in "The Power of q" by Michael D. Hirschhorn.

In eta-uotients. this equation looks as follows: \begin{gather*} \frac{E_3^3}{E_1} - \frac{E_{12}^3}{E_4} = \frac{E_4^3 E_6^2}{E_2^2 E_{12}}. \end{gather*}

We can enter it in QEta via the QEtaSpecificationRing,

In [63]:
nn := 12
lemma13 := f3^3/f1 - q*f12^3/f4 - f4^3*f6^2/(f2^2*f12);
lemma13eta := fromQPochhammerToEta(nn, lemma13, "f", "E").frf
specpol := lemma13eta::SPECR(ZZ)
Out[63]:
\[ 12 \]
Out[63]:
\[ \frac{-E1\, {E4}^{4}\, {E6}^{2}+E12\, {E2}^{2}\, {E3}^{3}\, E4-E1\, {E12}^{4}\, {E2}^{2}}{E1\, E12\, {E2}^{2}\, E4} \]
Out[63]:
\[ -\left[\left[4, -1\right], \left[12, 3\right]\right]-\left[\left[2, -2\right], \left[4, 3\right], \left[6, 2\right], \left[12, -1\right]\right]+\left[\left[1, -1\right], \left[3, 3\right]\right] \]

As can be seen from the following output, the expression in eta-functions is actually only the same as the initial expression up to a factor of $q^\frac{-1}{3}$.

In [64]:
pretty(specpol, formatAsExpression() + formatWithQFactor())
Out[64]:
\[ -{q}^{\frac{4}{3}}\, \frac{{{\left({q}^{12}; {q}^{12}\right)}_{\infty }}^{3}}{{\left({q}^{4}; {q}^{4}\right)}_{\infty }}-{q}^{\frac{1}{3}}\, \frac{{{\left({q}^{4}; {q}^{4}\right)}_{\infty }}^{3}\, {{\left({q}^{6}; {q}^{6}\right)}_{\infty }}^{2}}{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{2}\, {\left({q}^{12}; {q}^{12}\right)}_{\infty }}+{q}^{\frac{1}{3}}\, \frac{{{\left({q}^{3}; {q}^{3}\right)}_{\infty }}^{3}}{{\left(q, q\right)}_{\infty }} \]

Internally, QEta always works with eta-functions, but to beautify the output, a third parameter can be given to the pretty function that specifies an extra multiplication by a $q$ power.

Note that QEta abbreviates the $q$-Pochhammer symbol $(q^k;q^k)$ by the variable $u_k$

In [65]:
pretty(specpol, formatWithQFactor() + formatWithSubscript(), -1/3)
Out[65]:
\[ -q\, \frac{{{u}_{12}}^{3}}{{u}_{4}}-\frac{{{u}_{4}}^{3}\, {{u}_{6}}^{2}}{{{u}_{2}}^{2}\, {u}_{12}}+\frac{{{u}_{3}}^{3}}{{u}_{1}} \]

That this expression corresponds to the zero function can be shown in two ways.

  1. We find an eta-quotient factor that after multiplying with it turns each term of the expression into a modular function for $\Gamma_0(12)$ with only a pole at $\infty$. If all the respective $q$-expansion then sum to a $q$-series of positive order, it proves that that this series is identically 0.
  2. Expand each eta-quotient in the expression into a vector of $q$-series (one for each cusp of $\Gamma_0(12)$) and sum these vectors. If that give a vector whose entries have all positive orders, it proves that the expression is identically 0.

Below we show both ways.

First method¶

Let us start with computing a eta-quotient that (after multiplication) turns each term of the expression into a modular function with only a pole at $\infty$. The QEta functionn etaCofactorInfinity even works with the non-modular eta-quotients of the original expression.

In [66]:
specs := [leadingSupport x for x in monomials specpol];
idxs := etaFunctionIndices(nn);
sspec := etaCofactorInfinity(nn,idxs,specs)$QEtaModularPackage(QMOD0)
-- == z:=[zinhom=[[-2, -2, 5, -2, -1]], zhom=[], zfree=[]]
Out[66]:
\[ \left[\left[4, 1\right], \left[12, -3\right]\right] \]
In [67]:
sspecpol := sspec * specpol; pretty(sspecpol, formatWithSubscript())
Out[67]:
\[ -1-\frac{{{E}_{4}}^{4}\, {{E}_{6}}^{2}}{{{E}_{2}}^{2}\, {{E}_{12}}^{4}}+\frac{{{E}_{3}}^{3}\, {E}_{4}}{{E}_{1}\, {{E}_{12}}^{3}} \]

The corresponding series of each term are given below.

In [68]:
sers := [specM0A1(ZZ)(leadingSupport x) for x in monomials sspecpol]
coefs := [leadingCoefficient(x) for x in monomials sspecpol]
Out[68]:
\[ \left[1, {q}^{-1}+2\, q+O\left({q}^{2}\right), {q}^{-1}+1+2\, q+O\left({q}^{2}\right)\right] \]
Out[68]:
\[ \left[-1, -1, 1\right] \]

Summing them accordingly, gives indeed 0.

In [69]:
reduce(+, [c*s for c in coefs for s in sers])
Out[69]:
\[ O\left({q}^{4}\right) \]

Second method¶

Unfortunately, the original expression does not correspond to a modular function for $\Gamma_0(12)$.

In [70]:
modularGamma0? specpol
Out[70]:
\[ \texttt{false} \]

It can be turned into one by dividing by one of the involved eta-quotients.

In [71]:
invE33E1 := inv leadingSupport last monomials specpol
mspecpol := invE33E1 * specpol; pretty(mspecpol, formatWithSubscript())
Out[71]:
\[ \left[\left[1, 1\right], \left[3, -3\right]\right] \]
Out[71]:
\[ -\frac{{E}_{1}\, {{E}_{12}}^{3}}{{{E}_{3}}^{3}\, {E}_{4}}-\frac{{E}_{1}\, {{E}_{4}}^{3}\, {{E}_{6}}^{2}}{{{E}_{2}}^{2}\, {{E}_{3}}^{3}\, {E}_{12}}+1 \]
In [72]:
modularGamma0? mspecpol
Out[72]:
\[ \texttt{true} \]

Let us determine the orders at each of the cusps for each of the terms.

In [73]:
cusps()$GAMMA0(nn)
Out[73]:
\[ \left[0, \frac{1}{6}, \frac{1}{4}, \frac{1}{3}, \frac{1}{2}, \infty \right] \]
In [74]:
ys := [specYM0EQ leadingSupport m for m in monomials mspecpol];
[orders y for y in ys]
Out[74]:
\[ \left[\left[0, 0, 0, -1, 0, 1\right], \left[0, 0, 1, -1, 0, 0\right], \left[0, 0, 0, 0, 0, 0\right]\right] \]

Obviously there are poles at the cusp $\frac{1}{3}$.

In the most general case the expansion involve an extension of the coefficient ring by a certain root of unity. The order of the root of unity can be determined from the datastructure stored in the list ys. See also Section "Expansion at cusps" below.

In [75]:
xiord := lcm [minimalRootOfUnity y for y in ys]
Out[75]:
\[ 2 \]

Only a second root of unity, i.e. -1 is needed. We can do the expansion over rational numbers. Nevertheless, we demonstrate here the general case.

In [76]:
C ==> QQ
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
trfs := transformationMatrices(first ys)
)read convenience.input )quiet
Out[76]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&0\\6&1\end{bmatrix}, \begin{bmatrix}1&2\\4&9\end{bmatrix}, \begin{bmatrix}1&1\\3&4\end{bmatrix}, \begin{bmatrix}1&1\\2&3\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]

We compute the expansions at each cusps either from the symbolic datastructure stored in the list ys or directly from the respective terms.

In [77]:
vs := [expandM0An(CX)(y) for y in ys]
[specM0An(CX)(leadingSupport x) for x in monomials mspecpol]
cs := [leadingCoefficient x for x in monomials mspecpol]
Out[77]:
\[ \left[\left[\frac{1}{4}-\frac{3}{4}\, q+O\left({q}^{3}\right), \frac{1}{2}-q+{q}^{2}+O\left({q}^{3}\right), 1+3\, q+9\, {q}^{2}+O\left({q}^{3}\right), \frac{1}{4}\, {q}^{-1}+\frac{1}{4}+\frac{1}{2}\, q+O\left({q}^{2}\right), -\frac{1}{2}-3\, q-9\, {q}^{2}+O\left({q}^{3}\right), q-{q}^{2}-{q}^{3}+O\left({q}^{4}\right)\right], \left[\frac{3}{4}+\frac{3}{4}\, q+O\left({q}^{3}\right), \frac{1}{2}+q-{q}^{2}+O\left({q}^{3}\right), -3\, q-9\, {q}^{2}-21\, {q}^{3}+O\left({q}^{4}\right), -\frac{1}{4}\, {q}^{-1}+\frac{3}{4}-\frac{1}{2}\, q+O\left({q}^{2}\right), \frac{3}{2}+3\, q+9\, {q}^{2}+O\left({q}^{3}\right), 1-q+{q}^{2}+O\left({q}^{3}\right)\right], \left[1+O\left({q}^{3}\right), 1, 1+O\left({q}^{3}\right), 1+O\left({q}^{3}\right), 1+O\left({q}^{3}\right), 1\right]\right] \]
Out[77]:
\[ \left[\left[\frac{1}{4}-\frac{3}{4}\, q+O\left({q}^{3}\right), \frac{1}{2}-q+{q}^{2}+O\left({q}^{3}\right), 1+3\, q+9\, {q}^{2}+O\left({q}^{3}\right), \frac{1}{4}\, {q}^{-1}+\frac{1}{4}+\frac{1}{2}\, q+O\left({q}^{2}\right), -\frac{1}{2}-3\, q-9\, {q}^{2}+O\left({q}^{3}\right), q-{q}^{2}-{q}^{3}+O\left({q}^{4}\right)\right], \left[\frac{3}{4}+\frac{3}{4}\, q+O\left({q}^{3}\right), \frac{1}{2}+q-{q}^{2}+O\left({q}^{3}\right), -3\, q-9\, {q}^{2}-21\, {q}^{3}+O\left({q}^{4}\right), -\frac{1}{4}\, {q}^{-1}+\frac{3}{4}-\frac{1}{2}\, q+O\left({q}^{2}\right), \frac{3}{2}+3\, q+9\, {q}^{2}+O\left({q}^{3}\right), 1-q+{q}^{2}+O\left({q}^{3}\right)\right], \left[1+O\left({q}^{3}\right), 1, 1+O\left({q}^{3}\right), 1+O\left({q}^{3}\right), 1+O\left({q}^{3}\right), 1\right]\right] \]
Out[77]:
\[ \left[-1, -1, 1\right] \]

Indeed, we get positive orders at all cusps. That proves that we are dealing with the modular function 0.

In [78]:
reduce(+, [c*v for c in cs for v in vs])
Out[78]:
\[ \left[O\left({q}^{5}\right), O\left({q}^{5}\right), O\left({q}^{5}\right), O\left({q}^{5}\right), O\left({q}^{5}\right), O\left({q}^{5}\right)\right] \]

Relations among eta-functions¶

QEta can even do more. It can compute a Gröbner basis of all relations among eta-functions of a certain level and then represent the original expression by a linear combination of Gröbner basis elements divided by the common denominator of the original expression.

In [79]:
rf := etaRationalFunction(specpol,"E")
pol := numer rf
Out[79]:
\[ \frac{-E1\, {E4}^{4}\, {E6}^{2}+E12\, {E2}^{2}\, {E3}^{3}\, E4-E1\, {E12}^{4}\, {E2}^{2}}{E1\, E12\, {E2}^{2}\, E4} \]
Out[79]:
\[ -E1\, {E4}^{4}\, {E6}^{2}+E12\, {E2}^{2}\, {E3}^{3}\, E4-E1\, {E12}^{4}\, {E2}^{2} \]

We first compute the the monoid basis $\{M_1,\ldots,M_5\}$ of all eta-quotients of $\Gamma_0(12)$ that only have a pole at the cusp $\infty$.

In [80]:
idxs := etaFunctionIndices nn;
mspecs := mSPECSInfM0(nn, idxs);
[etaQuotient(x, varEta) for x in mspecs]
Out[80]:
\[ \left[\frac{{η\left(2\, τ\right)}^{7}\, η\left(3\, τ\right)}{{η\left(τ\right)}^{3}\, {η\left(4\, τ\right)}^{2}\, η\left(6\, τ\right)\, {η\left(12\, τ\right)}^{2}}, \frac{{η\left(3\, τ\right)}^{3}\, η\left(4\, τ\right)}{η\left(τ\right)\, {η\left(12\, τ\right)}^{3}}, \frac{{η\left(4\, τ\right)}^{4}\, {η\left(6\, τ\right)}^{2}}{{η\left(2\, τ\right)}^{2}\, {η\left(12\, τ\right)}^{4}}, \frac{η\left(τ\right)\, {η\left(4\, τ\right)}^{2}\, {η\left(6\, τ\right)}^{9}}{{η\left(2\, τ\right)}^{3}\, {η\left(3\, τ\right)}^{3}\, {η\left(12\, τ\right)}^{6}}, \frac{{η\left(τ\right)}^{3}\, η\left(4\, τ\right)\, {η\left(6\, τ\right)}^{2}}{{η\left(2\, τ\right)}^{2}\, η\left(3\, τ\right)\, {η\left(12\, τ\right)}^{3}}\right] \]

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

In [81]:
)set stream calc 4
[specM0A1(QQ)(x) for x in mspecs]
Out[81]:
\[ \left[{q}^{-1}+3+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}+1+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}-1+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}-3+2\, q+{q}^{3}+O\left({q}^{4}\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_5]$ where the $M_k$ represent the eta-quotients above.

In [82]:
egens := [specMA1(C,QMOD0) mspec for mspec in mspecs]
msyms: List Symbol := indexedSymbols("M", #mspecs)$QAuxiliaryTools
xgens := [toX1(C, x, sym::Pol(C)) for x in egens for sym in msyms]
gen := genus(nn)$QMOD0
xab := samba(xgens, gen, oneVerboseStep!(1,1,1,1))$QSAMBA(C,X1,QTOPRED)
Out[82]:
\[ \left[{q}^{-1}+3+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}+1+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}-1+2\, q+{q}^{3}+O\left({q}^{4}\right), {q}^{-1}-3+2\, q+{q}^{3}+O\left({q}^{4}\right)\right] \]
Out[82]:
\[ \left[M1, M2, M3, M4, M5\right] \]
Out[82]:
\[ \left[\left[{q}^{-1}+3+2\, q+{q}^{3}+O\left({q}^{4}\right), M1\right], \left[{q}^{-1}+1+2\, q+{q}^{3}+O\left({q}^{4}\right), M2\right], \left[{q}^{-1}+2\, q+{q}^{3}+O\left({q}^{4}\right), M3\right], \left[{q}^{-1}-1+2\, q+{q}^{3}+O\left({q}^{4}\right), M4\right], \left[{q}^{-1}-3+2\, q+{q}^{3}+O\left({q}^{4}\right), M5\right]\right] \]
Out[82]:
\[ 0 \]
-- numOfGaps:=[0, 0]
Out[82]:
\[ \left[mul=\left[{q}^{-1}+3+2\, q+{q}^{3}+O\left({q}^{4}\right), M1\right], be=\texttt{table}\left(\right)\right] \]

We find, that $\setQ[M_1,\ldots,M_5]=\setQ[M_1]$.

With this information we can express each of the $M_i$ by a polynomial in $M_1$ with rational coefficients. The following polynomials vanish if the $M_i$ are replaced by there respective eta-quotients.

In [83]:
)expose QAuxiliaryTools
eqigens := [integerPrimitivePart(second(reduce(x,xab)$QTOPRED(C,X1))::Pol(QQ))_
            for x in rest xgens]
assertEquals(eqigens, [M2 - M1 + 2, M3 - M1 + 3, M4 - M1 + 4, M5 - M1 + 6])
 QAuxiliaryTools is already explicitly exposed in frame initial 
Out[83]:
\[ \left[M2-M1+2, M3-M1+3, M4-M1+4, M5-M1+6\right] \]
Out[83]:
\[ \texttt{true} \]

We can turn the above polynomials on a linear combination of eta-quotients (represented by their specifications.

In [84]:
specpols := [specificationPolynomial(x,"M",mspecs) for x in eqigens];

Theses expressions can be shown nicely.

In [85]:
pretty(specpols.1, formatWithSubscript())
pretty(specpols.1, formatWithQFactor() + formatAsExpression())
Out[85]:
\[ 2+\frac{{{E}_{3}}^{3}\, {E}_{4}}{{E}_{1}\, {{E}_{12}}^{3}}-\frac{{{E}_{2}}^{7}\, {E}_{3}}{{{E}_{1}}^{3}\, {{E}_{4}}^{2}\, {E}_{6}\, {{E}_{12}}^{2}} \]
Out[85]:
\[ 2+{q}^{-1}\, \frac{{{\left({q}^{3}; {q}^{3}\right)}_{\infty }}^{3}\, {\left({q}^{4}; {q}^{4}\right)}_{\infty }}{{\left(q, q\right)}_{\infty }\, {{\left({q}^{12}; {q}^{12}\right)}_{\infty }}^{3}}-{q}^{-1}\, \frac{{{\left({q}^{2}; {q}^{2}\right)}_{\infty }}^{7}\, {\left({q}^{3}; {q}^{3}\right)}_{\infty }}{{{\left(q, q\right)}_{\infty }}^{3}\, {{\left({q}^{4}; {q}^{4}\right)}_{\infty }}^{2}\, {\left({q}^{6}; {q}^{6}\right)}_{\infty }\, {{\left({q}^{12}; {q}^{12}\right)}_{\infty }}^{2}} \]

There are now two ways to translate the information into polynomials...

In [86]:
[etaPolynomial(x, mspecs) for x in eqigens]
[etaPolynomial(x) for x in specpols]
Out[86]:
\[ \left[-{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E3}^{3}\, E4\, Y1\, {Y12}^{3}+2, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E4}^{4}\, {E6}^{2}\, {Y12}^{4}\, {Y2}^{2}+3, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+E1\, {E4}^{2}\, {E6}^{9}\, {Y12}^{6}\, {Y2}^{3}\, {Y3}^{3}+4, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E1}^{3}\, E4\, {E6}^{2}\, {Y12}^{3}\, {Y2}^{2}\, Y3+6\right] \]
Out[86]:
\[ \left[-{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E3}^{3}\, E4\, Y1\, {Y12}^{3}+2, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E4}^{4}\, {E6}^{2}\, {Y12}^{4}\, {Y2}^{2}+3, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+E1\, {E4}^{2}\, {E6}^{9}\, {Y12}^{6}\, {Y2}^{3}\, {Y3}^{3}+4, -{E2}^{7}\, E3\, {Y1}^{3}\, {Y12}^{2}\, {Y4}^{2}\, Y6+{E1}^{3}\, E4\, {E6}^{2}\, {Y12}^{3}\, {Y2}^{2}\, Y3+6\right] \]

... or rational functions.

In [87]:
[etaRationalFunction(x, mspecs) for x in eqigens]
[etaRationalFunction(x) for x in specpols]
Out[87]:
\[ \left[\frac{\left({E1}^{2}\, {E3}^{3}\, {E4}^{3}+2\, {E1}^{3}\, {E12}^{3}\, {E4}^{2}\right)\, E6-E12\, {E2}^{7}\, E3}{{E1}^{3}\, {E12}^{3}\, {E4}^{2}\, E6}, \frac{{E1}^{3}\, {E4}^{6}\, {E6}^{3}+3\, {E1}^{3}\, {E12}^{4}\, {E2}^{2}\, {E4}^{2}\, E6-{E12}^{2}\, {E2}^{9}\, E3}{{E1}^{3}\, {E12}^{4}\, {E2}^{2}\, {E4}^{2}\, E6}, \frac{{E1}^{4}\, {E4}^{4}\, {E6}^{10}+4\, {E1}^{3}\, {E12}^{6}\, {E2}^{3}\, {E3}^{3}\, {E4}^{2}\, E6-{E12}^{4}\, {E2}^{10}\, {E3}^{4}}{{E1}^{3}\, {E12}^{6}\, {E2}^{3}\, {E3}^{3}\, {E4}^{2}\, E6}, \frac{{E1}^{6}\, {E4}^{3}\, {E6}^{3}+6\, {E1}^{3}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}\, E6-E12\, {E2}^{9}\, {E3}^{2}}{{E1}^{3}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}\, E6}\right] \]
Out[87]:
\[ \left[\frac{\left({E1}^{2}\, {E3}^{3}\, {E4}^{3}+2\, {E1}^{3}\, {E12}^{3}\, {E4}^{2}\right)\, E6-E12\, {E2}^{7}\, E3}{{E1}^{3}\, {E12}^{3}\, {E4}^{2}\, E6}, \frac{{E1}^{3}\, {E4}^{6}\, {E6}^{3}+3\, {E1}^{3}\, {E12}^{4}\, {E2}^{2}\, {E4}^{2}\, E6-{E12}^{2}\, {E2}^{9}\, E3}{{E1}^{3}\, {E12}^{4}\, {E2}^{2}\, {E4}^{2}\, E6}, \frac{{E1}^{4}\, {E4}^{4}\, {E6}^{10}+4\, {E1}^{3}\, {E12}^{6}\, {E2}^{3}\, {E3}^{3}\, {E4}^{2}\, E6-{E12}^{4}\, {E2}^{10}\, {E3}^{4}}{{E1}^{3}\, {E12}^{6}\, {E2}^{3}\, {E3}^{3}\, {E4}^{2}\, E6}, \frac{{E1}^{6}\, {E4}^{3}\, {E6}^{3}+6\, {E1}^{3}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}\, E6-E12\, {E2}^{9}\, {E3}^{2}}{{E1}^{3}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}\, E6}\right] \]

We take the first representation where the $Y_i$ represent $\frac{1}{E_i}$ and then eliminate the $Y_i$ by the Gröber basis method modulo the relations $E_i Y_1 = 1$. The result is a Gröbner basis (here with respect to a degrevlex order) of the ideal of all relations amont eta-functions.

In QEta the whole process in encoded in the function etaRelation.

In [88]:
)read projectdir )quiet
basedir := PROJECTDIR "/data/etafiles/Hemmecke/Gamma0"
nn
idxs
Out[88]:
\[ \texttt{"/home/hemmecke/backup/git/qeta/data/etafiles/Hemmecke/Gamma0"} \]
Out[88]:
\[ 12 \]
Out[88]:
\[ \left[\left[1\right], \left[2\right], \left[3\right], \left[4\right], \left[6\right], \left[12\right]\right] \]
In [89]:
erels := etaRelations(nn, idxs, basedir) $ QEtaIdealHemmecke(QMOD0)
Out[89]:
\[ \left[6561\, {E1}^{4}\, {E12}^{8}\, E2\, {E3}^{4}\, {E6}^{11}-1141128\, {E12}^{16}\, {E2}^{3}\, {E6}^{9}+\left(-22545\, {E1}^{8}\, {E12}^{13}\, E4+{E1}^{21}\, E3\right)\, {E6}^{6}+\left(1184976\, {E12}^{17}\, {E2}^{2}\, {E4}^{5}+21\, {E1}^{15}\, {E12}^{2}\, {E2}^{2}\, {E3}^{3}\, {E4}^{2}+96\, {E1}^{16}\, {E12}^{5}\, {E2}^{2}\, E4-127602\, {E1}^{5}\, {E12}^{16}\, {E2}^{2}\, E3\right)\, {E6}^{4}+\left(-511920\, {E12}^{21}\, {E2}^{4}\, E4+599\, {E1}^{13}\, {E12}^{8}\, {E2}^{4}\, E3\right)\, {E6}^{2}-16\, {E1}^{8}\, E12\, {E2}^{6}\, {E4}^{13}+4096\, {E12}^{13}\, {E2}^{6}\, {E4}^{9}-{E1}^{16}\, E12\, {E2}^{6}\, {E4}^{5}-3294\, {E1}^{5}\, {E12}^{12}\, {E2}^{6}\, E3\, {E4}^{4}+755\, {E1}^{7}\, {E12}^{10}\, {E2}^{6}\, {E3}^{3}\, {E4}^{2}-5613\, {E1}^{8}\, {E12}^{13}\, {E2}^{6}\, E4, {E1}^{6}\, {E6}^{19}+\left(27\, {E12}^{8}\, {E3}^{10}+963\, {E12}^{16}\, {E3}^{2}\right)\, {E6}^{7}-25\, {E1}^{6}\, {E12}^{10}\, {E2}^{2}\, {E4}^{2}\, {E6}^{5}-27\, {E1}^{3}\, {E12}^{13}\, {E2}^{4}\, E3\, E4\, {E6}^{3}-877\, {E12}^{16}\, {E2}^{6}\, {E3}^{2}\, E6-32\, {E1}^{3}\, {E12}^{10}\, E2\, E3\, {E4}^{10}+8\, {E1}^{6}\, {E12}^{11}\, E2\, {E4}^{7}-7\, {E1}^{11}\, {E12}^{10}\, E2\, E3\, {E4}^{2}-2568\, {E12}^{21}\, E2\, {E3}^{2}\, E4+498\, E1\, {E12}^{16}\, E2\, {E3}^{7}-{E1}^{13}\, {E12}^{8}\, E2\, {E3}^{3}, 11340\, {E1}^{2}\, {E12}^{8}\, {E2}^{2}\, {E3}^{2}\, {E6}^{10}-36288\, {E12}^{11}\, E2\, {E4}^{7}\, {E6}^{5}+\left(122688\, {E12}^{15}\, {E2}^{3}\, {E4}^{3}-15\, {E1}^{13}\, {E12}^{2}\, {E2}^{3}\, E3\, {E4}^{2}-432\, {E1}^{2}\, {E12}^{13}\, {E2}^{3}\, {E3}^{2}\, E4-{E1}^{15}\, {E2}^{3}\, {E3}^{3}\right)\, {E6}^{3}-84\, {E1}^{10}\, {E12}^{5}\, {E2}^{5}\, {E3}^{2}\, E4\, E6+16\, {E1}^{8}\, {E4}^{16}-4096\, {E12}^{12}\, {E4}^{12}+{E1}^{16}\, {E4}^{8}-8800\, {E1}^{5}\, {E12}^{11}\, E3\, {E4}^{7}-2960\, {E1}^{8}\, {E12}^{12}\, {E4}^{4}-588\, {E1}^{10}\, {E12}^{10}\, {E3}^{2}\, {E4}^{2}-113\, {E1}^{12}\, {E12}^{8}\, {E3}^{4}, 3\, {E2}^{2}\, {E6}^{22}+\left(-24\, {E1}^{5}\, {E12}^{10}\, {E2}^{3}\, E3\, {E4}^{2}-4\, {E1}^{7}\, {E12}^{8}\, {E2}^{3}\, {E3}^{3}\right)\, {E6}^{3}-72\, {E1}^{2}\, {E12}^{13}\, {E2}^{5}\, {E3}^{2}\, E4\, E6-112\, E1\, {E12}^{15}\, {E3}^{5}\, {E4}^{3}+192\, {E1}^{2}\, {E12}^{18}\, {E3}^{2}\, {E4}^{2}+{E1}^{4}\, {E12}^{8}\, {E3}^{12}+120\, {E1}^{4}\, {E12}^{16}\, {E3}^{4}, {E6}^{24}-{E12}^{8}\, {E3}^{16}-16\, {E12}^{16}\, {E3}^{8}, \left(-3456\, {E12}^{12}\, E2\, {E4}^{4}-729\, {E1}^{4}\, {E12}^{8}\, E2\, {E3}^{4}+{E1}^{16}\, E2\right)\, {E6}^{5}+\left(16\, {E1}^{10}\, {E12}^{2}\, {E2}^{3}\, {E3}^{2}\, {E4}^{2}-3456\, {E12}^{16}\, {E2}^{3}\right)\, {E6}^{3}+\left(33\, {E1}^{7}\, {E12}^{5}\, {E2}^{5}\, {E3}^{3}\, E4+23\, {E1}^{8}\, {E12}^{8}\, {E2}^{5}\right)\, E6-16\, {E1}^{8}\, E12\, {E4}^{13}+4096\, {E12}^{13}\, {E4}^{9}-{E1}^{16}\, E12\, {E4}^{5}+2400\, {E1}^{5}\, {E12}^{12}\, E3\, {E4}^{4}+748\, {E1}^{7}\, {E12}^{10}\, {E3}^{3}\, {E4}^{2}-224\, {E1}^{8}\, {E12}^{13}\, E4, 3\, {E1}^{2}\, E2\, {E6}^{17}+\left(48\, {E1}^{2}\, {E12}^{10}\, {E2}^{3}\, {E4}^{2}-3\, {E1}^{4}\, {E12}^{8}\, {E2}^{3}\, {E3}^{2}\right)\, {E6}^{3}-6\, {E12}^{8}\, {E2}^{5}\, {E3}^{6}\, E6-2\, {E1}^{7}\, {E12}^{6}\, E3\, {E4}^{6}-{E1}^{10}\, {E12}^{7}\, {E4}^{3}+24\, {E12}^{13}\, {E3}^{6}\, E4-9\, E1\, {E12}^{8}\, {E3}^{11}-96\, E1\, {E12}^{16}\, {E3}^{3}, 3\, {E1}^{7}\, {E6}^{12}+9\, {E1}^{7}\, {E12}^{5}\, E2\, E4\, {E6}^{5}+93\, {E1}^{4}\, {E12}^{8}\, {E2}^{3}\, E3\, {E6}^{3}-63\, {E12}^{8}\, {E2}^{5}\, {E3}^{5}\, E6-32\, {E1}^{4}\, {E12}^{5}\, E3\, {E4}^{9}+8\, {E1}^{7}\, {E12}^{6}\, {E4}^{6}+\left(-216\, {E12}^{13}\, {E3}^{5}-3\, {E1}^{12}\, {E12}^{5}\, E3\right)\, E4+81\, E1\, {E12}^{8}\, {E3}^{10}+864\, E1\, {E12}^{16}\, {E3}^{2}, -243\, {E2}^{2}\, {E6}^{16}+\left(12\, {E1}^{8}\, {E12}^{2}\, {E4}^{2}+3\, {E1}^{10}\, {E3}^{2}\right)\, {E6}^{6}+\left(528\, {E12}^{6}\, {E2}^{2}\, {E4}^{6}+246\, {E1}^{5}\, {E12}^{5}\, {E2}^{2}\, E3\, E4\right)\, {E6}^{4}+\left(144\, {E12}^{10}\, {E2}^{4}\, {E4}^{2}+684\, {E1}^{2}\, {E12}^{8}\, {E2}^{4}\, {E3}^{2}\right)\, {E6}^{2}-2\, {E1}^{5}\, E12\, {E2}^{6}\, E3\, {E4}^{5}-{E1}^{8}\, {E12}^{2}\, {E2}^{6}\, {E4}^{2}, {E2}^{3}\, {E6}^{15}-{E1}^{5}\, {E12}^{5}\, {E2}^{3}\, E3\, E4\, {E6}^{3}-6\, {E1}^{2}\, {E12}^{8}\, {E2}^{5}\, {E3}^{2}\, E6-4\, E1\, {E12}^{10}\, {E3}^{5}\, {E4}^{2}-16\, {E1}^{2}\, {E12}^{13}\, {E3}^{2}\, E4+{E1}^{3}\, {E12}^{8}\, {E3}^{7}, 3\, {E1}^{11}\, E2\, {E6}^{5}-48\, {E1}^{5}\, {E12}^{2}\, {E2}^{3}\, {E3}^{2}\, {E4}^{2}\, {E6}^{3}+\left(-285\, {E1}^{2}\, {E12}^{5}\, {E2}^{5}\, {E3}^{3}\, E4-750\, {E1}^{3}\, {E12}^{8}\, {E2}^{5}\right)\, E6+64\, E3\, {E4}^{16}-16\, {E1}^{3}\, E12\, {E4}^{13}-3\, {E1}^{11}\, E12\, {E4}^{5}-1620\, {E1}^{2}\, {E12}^{10}\, {E3}^{3}\, {E4}^{2}-5184\, {E1}^{3}\, {E12}^{13}\, E4+243\, {E1}^{4}\, {E12}^{8}\, {E3}^{5}, 27\, {E1}^{2}\, E2\, {E3}^{2}\, {E6}^{11}+\left(-24\, {E12}^{3}\, {E4}^{7}-15\, {E1}^{5}\, {E12}^{2}\, E3\, {E4}^{2}+3\, {E1}^{7}\, {E3}^{3}\right)\, {E6}^{6}+\left(72\, {E12}^{7}\, {E2}^{2}\, {E4}^{3}-54\, {E1}^{2}\, {E12}^{5}\, {E2}^{2}\, {E3}^{2}\, E4\right)\, {E6}^{4}-2\, {E1}^{2}\, E12\, {E2}^{6}\, {E3}^{2}\, {E4}^{5}-{E1}^{5}\, {E12}^{2}\, {E2}^{6}\, E3\, {E4}^{2}, -81\, {E2}^{3}\, {E3}^{3}\, {E6}^{10}+3\, {E1}^{9}\, {E6}^{7}+\left(576\, {E12}^{5}\, {E2}^{4}\, {E3}^{3}\, E4-1440\, E1\, {E12}^{8}\, {E2}^{4}\right)\, {E6}^{3}+52\, {E1}^{6}\, {E12}^{4}\, E2\, E3\, {E4}^{4}-3\, {E1}^{8}\, {E12}^{2}\, E2\, {E3}^{3}\, {E4}^{2}+32\, {E1}^{9}\, {E12}^{5}\, E2\, E4, 3\, {E1}^{8}\, E2\, {E6}^{7}-72\, {E12}^{4}\, {E2}^{3}\, {E4}^{4}\, {E6}^{5}-216\, {E12}^{8}\, {E2}^{5}\, {E6}^{3}+\left(81\, {E12}^{5}\, {E3}^{8}\, E4+162\, E1\, {E12}^{8}\, {E3}^{5}\right)\, {E6}^{2}-2\, {E1}^{5}\, {E12}^{4}\, {E2}^{2}\, E3\, {E4}^{4}-3\, {E1}^{7}\, {E12}^{2}\, {E2}^{2}\, {E3}^{3}\, {E4}^{2}+5\, {E1}^{8}\, {E12}^{5}\, {E2}^{2}\, E4, 27\, E2\, {E3}^{3}\, {E6}^{11}+\left(-15\, {E1}^{3}\, {E12}^{2}\, {E3}^{2}\, {E4}^{2}+3\, {E1}^{5}\, {E3}^{4}\right)\, {E6}^{6}+\left(-78\, {E12}^{5}\, {E2}^{2}\, {E3}^{3}\, E4+24\, E1\, {E12}^{8}\, {E2}^{2}\right)\, {E6}^{4}-2\, E12\, {E2}^{6}\, {E3}^{3}\, {E4}^{5}-{E1}^{3}\, {E12}^{2}\, {E2}^{6}\, {E3}^{2}\, {E4}^{2}, \left(18\, {E1}^{5}\, {E3}^{3}\, E4+9\, {E1}^{6}\, {E12}^{3}\right)\, {E6}^{6}+81\, {E1}^{2}\, {E12}^{3}\, {E2}^{2}\, {E3}^{4}\, {E6}^{4}-16\, E12\, {E2}^{6}\, {E3}^{2}\, {E4}^{6}-4\, {E1}^{3}\, {E12}^{2}\, {E2}^{6}\, E3\, {E4}^{3}+2\, {E1}^{6}\, {E12}^{3}\, {E2}^{6}, 54\, {E12}^{3}\, E2\, {E6}^{11}+\left(-60\, {E12}^{4}\, {E4}^{5}+3\, {E1}^{4}\, {E3}^{4}\, E4+3\, {E1}^{5}\, {E12}^{3}\, E3\right)\, {E6}^{6}+36\, {E12}^{8}\, {E2}^{2}\, E4\, {E6}^{4}-2\, {E1}^{2}\, {E12}^{2}\, {E2}^{6}\, {E3}^{2}\, {E4}^{3}-{E1}^{5}\, {E12}^{3}\, {E2}^{6}\, E3, 3\, {E1}^{5}\, {E2}^{3}\, {E6}^{7}+\left(9\, {E12}^{2}\, {E3}^{7}\, {E4}^{2}-18\, E1\, {E12}^{5}\, {E3}^{4}\, E4-72\, {E1}^{2}\, {E12}^{8}\, E3\right)\, {E6}^{4}-8\, {E1}^{2}\, {E12}^{4}\, {E2}^{4}\, E3\, {E4}^{4}-3\, {E1}^{4}\, {E12}^{2}\, {E2}^{4}\, {E3}^{3}\, {E4}^{2}+2\, {E1}^{5}\, {E12}^{5}\, {E2}^{4}\, E4, 3\, {E1}^{3}\, {E2}^{5}\, {E6}^{7}+\left(9\, {E1}^{2}\, {E12}^{2}\, {E3}^{3}\, {E4}^{2}+18\, {E1}^{3}\, {E12}^{5}\, E4\right)\, {E6}^{6}-8\, {E12}^{4}\, {E2}^{6}\, E3\, {E4}^{4}-3\, {E1}^{2}\, {E12}^{2}\, {E2}^{6}\, {E3}^{3}\, {E4}^{2}+2\, {E1}^{3}\, {E12}^{5}\, {E2}^{6}\, E4, {E1}^{3}\, {E2}^{2}\, {E6}^{10}+\left(-{E1}^{2}\, {E12}^{2}\, {E2}^{3}\, {E3}^{3}\, {E4}^{2}+4\, {E1}^{3}\, {E12}^{5}\, {E2}^{3}\, E4\right)\, {E6}^{3}+16\, {E12}^{8}\, {E2}^{5}\, E3\, E6-3\, {E12}^{5}\, {E3}^{9}\, E4-6\, E1\, {E12}^{8}\, {E3}^{6}, 27\, {E1}^{3}\, {E2}^{5}\, {E6}^{6}+\left(108\, {E1}^{2}\, {E12}^{2}\, {E3}^{3}\, {E4}^{2}+216\, {E1}^{3}\, {E12}^{5}\, E4\right)\, {E6}^{5}+\left(-32\, {E2}^{4}\, E3\, {E4}^{8}-{E1}^{8}\, {E2}^{4}\, E3\right)\, E6+{E1}^{3}\, {E2}^{11}, \left(96\, {E12}^{4}\, {E4}^{4}+24\, {E1}^{2}\, {E12}^{2}\, {E3}^{2}\, {E4}^{2}-3\, {E1}^{4}\, {E3}^{4}\right)\, {E6}^{6}+\left(-9\, {E2}^{2}\, {E3}^{8}-288\, {E12}^{8}\, {E2}^{2}\right)\, {E6}^{4}-{E1}^{8}\, {E2}^{4}\, {E6}^{2}+8\, {E1}^{2}\, {E12}^{2}\, {E2}^{6}\, {E3}^{2}\, {E4}^{2}+{E1}^{4}\, {E2}^{6}\, {E3}^{4}, \left(54\, {E12}^{5}\, {E4}^{4}+27\, {E1}^{2}\, {E12}^{3}\, {E3}^{2}\, {E4}^{2}\right)\, {E6}^{5}-162\, {E12}^{9}\, {E2}^{2}\, {E6}^{3}+\left(-8\, E12\, {E2}^{4}\, {E4}^{8}-{E1}^{8}\, E12\, {E2}^{4}\right)\, E6+{E2}^{11}\, {E4}^{3}, \left(288\, {E12}^{6}\, {E4}^{4}+72\, {E1}^{2}\, {E12}^{4}\, {E3}^{2}\, {E4}^{2}-9\, {E1}^{4}\, {E12}^{2}\, {E3}^{4}\right)\, {E6}^{4}+\left(-27\, {E12}^{2}\, {E2}^{2}\, {E3}^{8}-864\, {E12}^{10}\, {E2}^{2}\right)\, {E6}^{2}+8\, {E1}^{2}\, {E2}^{4}\, {E3}^{2}\, {E4}^{6}-4\, {E1}^{5}\, E12\, {E2}^{4}\, E3\, {E4}^{3}-4\, {E1}^{8}\, {E12}^{2}\, {E2}^{4}, -3\, {E1}^{8}\, E2\, {E6}^{5}+\left(96\, {E12}^{4}\, {E2}^{3}\, {E4}^{4}-6\, {E1}^{2}\, {E12}^{2}\, {E2}^{3}\, {E3}^{2}\, {E4}^{2}\right)\, {E6}^{3}+144\, {E12}^{8}\, {E2}^{5}\, E6+2\, {E1}^{5}\, E3\, {E4}^{8}+{E1}^{8}\, E12\, {E4}^{5}-81\, {E12}^{5}\, {E3}^{8}\, E4-162\, E1\, {E12}^{8}\, {E3}^{5}, -9\, {E1}^{3}\, {E2}^{5}\, E3\, {E6}^{5}+\left(-27\, {E1}^{2}\, {E12}^{2}\, {E3}^{4}\, {E4}^{2}-54\, {E1}^{3}\, {E12}^{5}\, E3\, E4\right)\, {E6}^{4}+8\, {E2}^{4}\, {E3}^{2}\, {E4}^{8}+2\, {E1}^{3}\, E12\, {E2}^{4}\, E3\, {E4}^{5}-{E1}^{6}\, {E12}^{2}\, {E2}^{4}\, {E4}^{2}, \left(24\, {E12}^{4}\, {E4}^{4}-12\, {E1}^{2}\, {E12}^{2}\, {E3}^{2}\, {E4}^{2}-3\, {E1}^{4}\, {E3}^{4}\right)\, {E6}^{6}+\left(-9\, {E2}^{2}\, {E3}^{8}-72\, {E12}^{8}\, {E2}^{2}\right)\, {E6}^{4}+8\, {E2}^{4}\, {E4}^{8}\, {E6}^{2}+8\, {E12}^{4}\, {E2}^{6}\, {E4}^{4}+4\, {E1}^{2}\, {E12}^{2}\, {E2}^{6}\, {E3}^{2}\, {E4}^{2}, -{E1}^{8}\, E2\, {E6}^{5}+\left(48\, {E12}^{4}\, {E2}^{3}\, {E4}^{4}-4\, {E1}^{2}\, {E12}^{2}\, {E2}^{3}\, {E3}^{2}\, {E4}^{2}+{E1}^{4}\, {E2}^{3}\, {E3}^{4}\right)\, {E6}^{3}+48\, {E12}^{8}\, {E2}^{5}\, E6-36\, {E12}^{5}\, {E3}^{8}\, E4-72\, E1\, {E12}^{8}\, {E3}^{5}, -9\, {E3}^{3}\, {E6}^{11}+9\, {E2}^{6}\, {E3}^{3}\, {E6}^{5}+\left(3\, E1\, E2\, {E3}^{8}+96\, E1\, {E12}^{8}\, E2\right)\, {E6}^{4}-8\, E12\, {E2}^{5}\, {E3}^{3}\, {E4}^{5}-4\, {E1}^{3}\, {E12}^{2}\, {E2}^{5}\, {E3}^{2}\, {E4}^{2}, -9\, {E12}^{3}\, {E6}^{11}-9\, {E12}^{3}\, {E2}^{6}\, {E6}^{5}+\left(3\, E2\, {E3}^{8}+24\, {E12}^{8}\, E2\right)\, E4\, {E6}^{4}-2\, {E1}^{2}\, {E12}^{2}\, {E2}^{5}\, {E3}^{2}\, {E4}^{3}-{E1}^{5}\, {E12}^{3}\, {E2}^{5}\, E3, -12\, {E12}^{3}\, {E2}^{5}\, E4\, {E6}^{5}+\left(3\, {E3}^{8}\, {E4}^{2}+3\, E1\, {E12}^{3}\, {E3}^{5}\, E4-6\, {E1}^{2}\, {E12}^{6}\, {E3}^{2}\right)\, {E6}^{4}-2\, {E1}^{2}\, {E12}^{2}\, {E2}^{4}\, {E3}^{2}\, {E4}^{4}-{E1}^{5}\, {E12}^{3}\, {E2}^{4}\, E3\, E4, \left(-12\, {E12}^{2}\, {E2}^{5}\, {E4}^{2}+3\, {E1}^{2}\, {E2}^{5}\, {E3}^{2}\right)\, {E6}^{5}+\left(9\, E1\, {E12}^{2}\, {E3}^{5}\, {E4}^{2}+18\, {E1}^{2}\, {E12}^{5}\, {E3}^{2}\, E4\right)\, {E6}^{4}-2\, {E1}^{2}\, E12\, {E2}^{4}\, {E3}^{2}\, {E4}^{5}-{E1}^{5}\, {E12}^{2}\, {E2}^{4}\, E3\, {E4}^{2}, 3\, E1\, {E2}^{5}\, {E3}^{3}\, {E6}^{5}+\left(-3\, {E12}^{2}\, {E3}^{6}\, {E4}^{2}+6\, E1\, {E12}^{5}\, {E3}^{3}\, E4+24\, {E1}^{2}\, {E12}^{8}\right)\, {E6}^{4}-2\, E1\, E12\, {E2}^{4}\, {E3}^{3}\, {E4}^{5}-{E1}^{4}\, {E12}^{2}\, {E2}^{4}\, {E3}^{2}\, {E4}^{2}, 27\, E2\, {E6}^{12}+3\, {E1}^{5}\, E3\, {E6}^{7}-72\, {E12}^{5}\, {E2}^{2}\, E4\, {E6}^{5}-20\, {E1}^{2}\, {E12}^{4}\, E2\, {E3}^{2}\, {E4}^{4}-3\, {E1}^{4}\, {E12}^{2}\, E2\, {E3}^{4}\, {E4}^{2}-4\, {E1}^{5}\, {E12}^{5}\, E2\, E3\, E4, 9\, E4\, {E6}^{12}+\left(-24\, {E12}^{5}\, E2\, {E4}^{2}-3\, {E1}^{2}\, {E12}^{3}\, E2\, {E3}^{2}\right)\, {E6}^{5}-4\, {E1}^{2}\, {E12}^{4}\, {E3}^{2}\, {E4}^{5}-2\, {E1}^{5}\, {E12}^{5}\, E3\, {E4}^{2}, -72\, {E12}^{5}\, E2\, E4\, {E6}^{5}-{E1}^{5}\, {E2}^{5}\, E3\, E6+64\, {E12}^{6}\, {E4}^{6}+4\, {E1}^{2}\, {E12}^{4}\, {E3}^{2}\, {E4}^{4}-5\, {E1}^{4}\, {E12}^{2}\, {E3}^{4}\, {E4}^{2}-12\, {E1}^{5}\, {E12}^{5}\, E3\, E4+{E2}^{12}, -{E1}^{8}\, {E6}^{4}+\left(-16\, {E1}^{2}\, {E12}^{2}\, {E2}^{2}\, {E3}^{2}\, {E4}^{2}-2\, {E1}^{4}\, {E2}^{2}\, {E3}^{4}\right)\, {E6}^{2}+3\, {E2}^{4}\, {E3}^{8}, \left(4\, E1\, {E12}^{2}\, {E2}^{3}\, {E4}^{3}-{E1}^{3}\, {E2}^{3}\, {E3}^{2}\, E4\right)\, {E6}^{3}-6\, {E12}^{3}\, {E2}^{5}\, {E3}^{3}\, E6+\left({E3}^{11}+8\, {E12}^{8}\, {E3}^{3}\right)\, E4-E1\, {E12}^{3}\, {E3}^{8}-32\, E1\, {E12}^{11}, -54\, {E1}^{3}\, E2\, {E4}^{3}\, {E6}^{5}+\left(-108\, {E12}^{3}\, {E2}^{3}\, E3\, {E4}^{2}+27\, {E1}^{2}\, E12\, {E2}^{3}\, {E3}^{3}\right)\, {E6}^{3}+32\, E3\, {E4}^{11}-8\, {E1}^{3}\, E12\, {E4}^{8}+{E1}^{8}\, E3\, {E4}^{3}-{E1}^{11}\, E12, \left(-48\, {E1}^{2}\, {E12}^{2}\, E2\, {E4}^{2}+3\, {E1}^{4}\, E2\, {E3}^{2}\right)\, {E6}^{5}+9\, {E2}^{3}\, {E3}^{6}\, {E6}^{3}-8\, {E1}^{4}\, E12\, {E3}^{2}\, {E4}^{5}-4\, {E1}^{7}\, {E12}^{2}\, E3\, {E4}^{2}, 4\, {E1}^{5}\, {E4}^{3}\, {E6}^{4}+\left(16\, {E1}^{2}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}-{E1}^{4}\, E12\, {E2}^{2}\, {E3}^{3}\right)\, {E6}^{2}-3\, E12\, {E2}^{4}\, {E3}^{7}, {E4}^{8}\, {E6}^{4}+\left(-2\, {E12}^{4}\, {E2}^{2}\, {E4}^{4}-{E1}^{2}\, {E12}^{2}\, {E2}^{2}\, {E3}^{2}\, {E4}^{2}\right)\, {E6}^{2}-3\, {E12}^{8}\, {E2}^{4}, 27\, {E2}^{2}\, {E6}^{10}+\left(-30\, E12\, E2\, {E4}^{5}+3\, {E1}^{5}\, E2\, E3\right)\, {E6}^{5}+18\, {E12}^{5}\, {E2}^{3}\, E4\, {E6}^{3}-2\, {E1}^{5}\, E12\, E3\, {E4}^{5}-{E1}^{8}\, {E12}^{2}\, {E4}^{2}, -9\, {E6}^{12}+\left(24\, {E12}^{5}\, E2\, E4+3\, E1\, E2\, {E3}^{5}\right)\, {E6}^{5}-4\, {E1}^{2}\, {E12}^{4}\, {E3}^{2}\, {E4}^{4}-3\, {E1}^{4}\, {E12}^{2}\, {E3}^{4}\, {E4}^{2}+4\, {E1}^{5}\, {E12}^{5}\, E3\, E4, {E2}^{6}\, {E6}^{6}-4\, {E1}^{2}\, {E12}^{4}\, {E3}^{2}\, {E4}^{4}-{E1}^{4}\, {E12}^{2}\, {E3}^{4}\, {E4}^{2}, {E2}^{4}\, {E6}^{8}-{E12}^{2}\, {E3}^{8}\, {E4}^{2}+4\, {E1}^{2}\, {E12}^{8}\, {E3}^{2}, {E4}^{3}\, {E6}^{9}+\left(-2\, {E12}^{5}\, E2\, {E4}^{4}-{E1}^{2}\, {E12}^{3}\, E2\, {E3}^{2}\, {E4}^{2}\right)\, {E6}^{2}-2\, {E12}^{9}\, {E2}^{3}, 27\, {E2}^{3}\, {E3}^{4}\, {E6}^{4}+\left(-32\, E1\, E3\, {E4}^{8}-{E1}^{9}\, E3\right)\, E6+{E1}^{4}\, {E2}^{7}, 36\, {E2}^{3}\, {E3}^{3}\, {E6}^{5}-{E1}^{9}\, {E6}^{2}-32\, E12\, {E2}^{2}\, {E3}^{3}\, {E4}^{5}-8\, {E1}^{3}\, {E12}^{2}\, {E2}^{2}\, {E3}^{2}\, {E4}^{2}+{E1}^{5}\, {E2}^{2}\, {E3}^{4}, -3\, {E3}^{4}\, {E6}^{7}-{E1}^{4}\, {E2}^{4}\, {E6}^{3}+E1\, E2\, {E3}^{9}+32\, E1\, {E12}^{8}\, E2\, E3, -4\, {E1}^{3}\, {E2}^{5}\, {E6}^{3}+\left(-8\, {E1}^{2}\, {E12}^{2}\, {E3}^{3}\, {E4}^{2}-32\, {E1}^{3}\, {E12}^{5}\, E4+{E1}^{4}\, {E3}^{5}\right)\, {E6}^{2}+3\, {E2}^{2}\, {E3}^{9}, 27\, {E1}^{3}\, E2\, E4\, {E6}^{6}+108\, {E12}^{3}\, {E2}^{3}\, E3\, {E6}^{4}+\left(-32\, E3\, {E4}^{9}-{E1}^{8}\, E3\, E4\right)\, E6+{E1}^{3}\, {E2}^{7}\, E4, -3\, {E12}^{3}\, E3\, {E6}^{7}-{E1}^{3}\, {E2}^{4}\, E4\, {E6}^{3}-3\, {E12}^{3}\, {E2}^{6}\, E3\, E6+\left(E2\, {E3}^{9}+8\, {E12}^{8}\, E2\, E3\right)\, E4, -{E1}^{3}\, {E2}^{3}\, {E4}^{2}\, {E6}^{3}-4\, {E12}^{3}\, {E2}^{5}\, E3\, E4\, E6+{E3}^{9}\, {E4}^{2}+E1\, {E12}^{3}\, {E3}^{6}\, E4-2\, {E1}^{2}\, {E12}^{6}\, {E3}^{3}, -27\, E1\, E2\, {E4}^{3}\, {E6}^{6}+27\, E12\, {E2}^{3}\, {E3}^{3}\, {E6}^{4}+\left(-8\, E1\, E12\, {E4}^{8}-{E1}^{9}\, E12\right)\, E6+E1\, {E2}^{7}\, {E4}^{3}, 27\, {E12}^{4}\, {E2}^{3}\, {E6}^{4}+\left(-8\, E12\, {E4}^{9}-{E1}^{8}\, E12\, E4\right)\, E6+{E2}^{7}\, {E4}^{4}, -36\, E1\, E12\, E2\, {E4}^{3}\, {E6}^{5}+27\, {E12}^{2}\, {E2}^{3}\, {E3}^{3}\, {E6}^{3}+2\, {E1}^{3}\, {E3}^{2}\, {E4}^{6}-{E1}^{6}\, E12\, E3\, {E4}^{3}-{E1}^{9}\, {E12}^{2}, -9\, E12\, E2\, {E4}^{4}\, {E6}^{5}+27\, {E12}^{5}\, {E2}^{3}\, {E6}^{3}+2\, {E1}^{2}\, {E3}^{2}\, {E4}^{7}-{E1}^{5}\, E12\, E3\, {E4}^{4}-{E1}^{8}\, {E12}^{2}\, E4, -9\, {E1}^{4}\, E2\, E3\, {E6}^{5}-27\, {E2}^{3}\, {E3}^{5}\, {E6}^{3}+32\, E1\, {E3}^{2}\, {E4}^{8}+8\, {E1}^{4}\, E12\, E3\, {E4}^{5}-4\, {E1}^{7}\, {E12}^{2}\, {E4}^{2}, -9\, {E1}^{3}\, E2\, E3\, E4\, {E6}^{5}-27\, {E12}^{3}\, {E2}^{3}\, {E3}^{2}\, {E6}^{3}+8\, {E3}^{2}\, {E4}^{9}+2\, {E1}^{3}\, E12\, E3\, {E4}^{6}-{E1}^{6}\, {E12}^{2}\, {E4}^{3}, -{E1}^{5}\, {E2}^{3}\, {E6}^{3}+E1\, {E2}^{5}\, {E3}^{4}\, E6-4\, {E12}^{2}\, {E3}^{7}\, {E4}^{2}+8\, E1\, {E12}^{5}\, {E3}^{4}\, E4+32\, {E1}^{2}\, {E12}^{8}\, E3, -9\, E12\, {E2}^{3}\, {E3}^{2}\, {E6}^{5}+{E1}^{6}\, {E4}^{3}\, {E6}^{2}+8\, {E12}^{2}\, {E2}^{2}\, {E3}^{2}\, {E4}^{5}+2\, {E1}^{3}\, {E12}^{3}\, {E2}^{2}\, E3\, {E4}^{2}-{E1}^{5}\, E12\, {E2}^{2}\, {E3}^{3}, -9\, {E12}^{3}\, {E2}^{3}\, {E6}^{5}+2\, {E4}^{9}\, {E6}^{2}+2\, {E12}^{4}\, {E2}^{2}\, {E4}^{5}-{E1}^{2}\, {E12}^{2}\, {E2}^{2}\, {E3}^{2}\, {E4}^{3}-{E1}^{5}\, {E12}^{3}\, {E2}^{2}\, E3, {E1}^{2}\, {E2}^{3}\, {E4}^{3}\, {E6}^{3}-E1\, E12\, {E2}^{5}\, {E3}^{3}\, E6+{E12}^{3}\, {E3}^{6}\, {E4}^{2}-2\, E1\, {E12}^{6}\, {E3}^{3}\, E4-8\, {E1}^{2}\, {E12}^{9}, 3\, E12\, {E3}^{3}\, {E6}^{7}+4\, E1\, {E2}^{4}\, {E4}^{3}\, {E6}^{3}-3\, E12\, {E2}^{6}\, {E3}^{3}\, E6-E1\, E12\, E2\, {E3}^{8}-32\, E1\, {E12}^{9}\, E2, 4\, {E2}^{5}\, {E4}^{3}\, {E6}^{3}+\left(8\, {E12}^{5}\, {E4}^{4}-4\, {E1}^{2}\, {E12}^{3}\, {E3}^{2}\, {E4}^{2}-{E1}^{4}\, E12\, {E3}^{4}\right)\, {E6}^{2}-3\, E12\, {E2}^{2}\, {E3}^{8}-24\, {E12}^{9}\, {E2}^{2}, 3\, {E12}^{4}\, {E6}^{7}+{E2}^{4}\, {E4}^{4}\, {E6}^{3}+\left(-E12\, E2\, {E3}^{8}-8\, {E12}^{9}\, E2\right)\, E4, {E2}^{3}\, {E4}^{5}\, {E6}^{3}+{E12}^{4}\, {E2}^{5}\, E4\, E6-E12\, {E3}^{8}\, {E4}^{2}-E1\, {E12}^{4}\, {E3}^{5}\, E4+2\, {E1}^{2}\, {E12}^{7}\, {E3}^{2}, 3\, {E1}^{4}\, {E6}^{7}+9\, {E2}^{2}\, {E3}^{4}\, {E6}^{5}-32\, E1\, {E12}^{4}\, E2\, E3\, {E4}^{4}-12\, {E1}^{3}\, {E12}^{2}\, E2\, {E3}^{3}\, {E4}^{2}+8\, {E1}^{4}\, {E12}^{5}\, E2\, E4, \left(36\, E2\, E3\, {E4}^{3}-9\, {E1}^{3}\, E12\, E2\right)\, {E6}^{6}+\left(-32\, E12\, E3\, {E4}^{8}-{E1}^{8}\, E12\, E3\right)\, E6+{E1}^{3}\, E12\, {E2}^{7}, \left({E3}^{3}\, E4-E1\, {E12}^{3}\right)\, {E6}^{7}-E1\, {E12}^{3}\, {E2}^{6}\, E6-8\, E1\, {E12}^{8}\, E2\, E4, 3\, {E4}^{4}\, {E6}^{7}-9\, {E12}^{4}\, {E2}^{2}\, {E6}^{5}-2\, {E1}^{2}\, {E12}^{3}\, E2\, {E3}^{2}\, {E4}^{3}-{E1}^{5}\, {E12}^{4}\, E2\, E3, 9\, E2\, {E3}^{4}\, {E6}^{5}-{E1}^{4}\, {E2}^{5}\, E6-32\, E1\, {E12}^{4}\, E3\, {E4}^{4}-8\, {E1}^{3}\, {E12}^{2}\, {E3}^{3}\, {E4}^{2}+{E1}^{5}\, {E3}^{5}, \left(-{E2}^{5}\, {E3}^{3}\, E4+2\, E1\, {E12}^{3}\, {E2}^{5}\right)\, E6-4\, {E12}^{5}\, {E3}^{3}\, {E4}^{2}+\left(E1\, {E3}^{8}+16\, E1\, {E12}^{8}\right)\, E4-{E1}^{2}\, {E12}^{3}\, {E3}^{5}, \left(18\, E2\, E3\, {E4}^{3}-9\, {E1}^{3}\, E12\, E2\right)\, {E6}^{5}-16\, E12\, E3\, {E4}^{8}+4\, {E1}^{3}\, {E12}^{2}\, {E4}^{5}+{E1}^{5}\, {E3}^{2}\, {E4}^{3}-{E1}^{8}\, E12\, E3, -9\, E12\, E2\, {E3}^{3}\, {E6}^{5}+E1\, {E2}^{5}\, {E4}^{3}\, E6+6\, {E12}^{2}\, {E3}^{3}\, {E4}^{5}+8\, E1\, {E12}^{5}\, {E4}^{4}-{E1}^{3}\, {E12}^{3}\, {E3}^{2}\, {E4}^{2}-{E1}^{5}\, E12\, {E3}^{4}, \left({E2}^{5}\, E3\, {E4}^{3}-{E1}^{3}\, E12\, {E2}^{5}\right)\, E6-3\, {E1}^{2}\, {E12}^{3}\, {E3}^{3}\, {E4}^{2}-6\, {E1}^{3}\, {E12}^{6}\, E4, -9\, {E12}^{4}\, E2\, {E6}^{5}+{E2}^{5}\, {E4}^{4}\, E6+8\, {E12}^{5}\, {E4}^{5}-4\, {E1}^{2}\, {E12}^{3}\, {E3}^{2}\, {E4}^{3}-{E1}^{4}\, E12\, {E3}^{4}\, E4, 3\, E3\, {E4}^{2}\, {E6}^{7}-8\, {E12}^{5}\, E2\, E3\, {E4}^{3}-3\, {E1}^{2}\, {E12}^{3}\, E2\, {E3}^{3}\, E4+2\, {E1}^{3}\, {E12}^{6}\, E2, -{E2}^{5}\, E3\, {E4}^{2}\, E6+E1\, {E3}^{6}\, {E4}^{2}+{E1}^{2}\, {E12}^{3}\, {E3}^{3}\, E4-2\, {E1}^{3}\, {E12}^{6}, -{E1}^{2}\, E12\, {E2}^{5}\, E6+{E3}^{6}\, {E4}^{3}-2\, E1\, {E12}^{3}\, {E3}^{3}\, {E4}^{2}-8\, {E1}^{2}\, {E12}^{6}\, E4, -9\, E1\, {E12}^{2}\, E2\, {E6}^{5}+2\, {E3}^{3}\, {E4}^{6}-{E1}^{3}\, E12\, {E3}^{2}\, {E4}^{3}-{E1}^{6}\, {E12}^{2}\, E3, 9\, E2\, {E3}^{2}\, E4\, {E6}^{5}-8\, E12\, {E3}^{2}\, {E4}^{6}-2\, {E1}^{3}\, {E12}^{2}\, E3\, {E4}^{3}+{E1}^{6}\, {E12}^{3}, 3\, E1\, E4\, {E6}^{7}-2\, {E12}^{2}\, E2\, {E3}^{3}\, {E4}^{3}-{E1}^{3}\, {E12}^{3}\, E2\, {E3}^{2}, 3\, E2\, E4\, {E6}^{7}-2\, E12\, {E4}^{6}\, {E6}^{2}-2\, {E12}^{5}\, {E2}^{2}\, {E4}^{2}-{E1}^{2}\, {E12}^{3}\, {E2}^{2}\, {E3}^{2}, -9\, E2\, E3\, {E6}^{6}+\left(8\, E12\, E3\, {E4}^{5}-4\, {E1}^{3}\, {E12}^{2}\, {E4}^{2}-{E1}^{5}\, {E3}^{2}\right)\, E6+{E2}^{7}\, E3, -3\, E1\, {E6}^{7}-E1\, {E2}^{6}\, E6+4\, {E12}^{2}\, E2\, {E3}^{3}\, {E4}^{2}-8\, E1\, {E12}^{5}\, E2\, E4+{E1}^{2}\, E2\, {E3}^{5}, -12\, E2\, {E6}^{7}+\left(8\, E12\, {E4}^{5}-{E1}^{5}\, E3\right)\, {E6}^{2}+8\, {E12}^{5}\, {E2}^{2}\, E4+E1\, {E2}^{2}\, {E3}^{5}, -E1\, {E2}^{5}\, E4\, E6+2\, {E12}^{2}\, {E3}^{3}\, {E4}^{3}-8\, E1\, {E12}^{5}\, {E4}^{2}+{E1}^{2}\, {E3}^{5}\, E4-{E1}^{3}\, {E12}^{3}\, {E3}^{2}, 3\, E4\, {E6}^{7}-{E2}^{6}\, E4\, E6-8\, {E12}^{5}\, E2\, {E4}^{2}+E1\, E2\, {E3}^{5}\, E4-2\, {E1}^{2}\, {E12}^{3}\, E2\, {E3}^{2}, -9\, E12\, E2\, E3\, {E6}^{5}+8\, {E12}^{2}\, E3\, {E4}^{5}+{E1}^{2}\, {E3}^{3}\, {E4}^{3}-2\, {E1}^{3}\, {E12}^{3}\, {E4}^{2}-{E1}^{5}\, E12\, {E3}^{2}, {E3}^{4}\, {E4}^{4}-4\, E1\, {E12}^{3}\, E3\, {E4}^{3}-{E1}^{3}\, E12\, {E3}^{3}\, E4+{E1}^{4}\, {E12}^{4}, -9\, E2\, {E6}^{7}+\left(4\, E12\, {E4}^{5}-{E1}^{5}\, E3\right)\, {E6}^{2}+{E2}^{7}\, E6+12\, {E12}^{5}\, {E2}^{2}\, E4, -9\, E12\, E2\, {E6}^{6}+\left(8\, {E12}^{2}\, {E4}^{5}+2\, {E1}^{2}\, {E3}^{2}\, {E4}^{3}-{E1}^{5}\, E12\, E3\right)\, E6-E12\, {E2}^{7}, -{E1}^{4}\, E4\, {E6}^{2}+{E2}^{2}\, {E3}^{4}\, E4-4\, E1\, {E12}^{3}\, {E2}^{2}\, E3, \left(4\, E1\, E3\, {E4}^{3}-{E1}^{4}\, E12\right)\, {E6}^{2}-3\, E12\, {E2}^{2}\, {E3}^{4}, E1\, {E4}^{4}\, {E6}^{2}-E12\, {E2}^{2}\, {E3}^{3}\, E4+E1\, {E12}^{4}\, {E2}^{2}, \left(E3\, {E4}^{4}-{E1}^{3}\, E12\, E4\right)\, {E6}^{2}-3\, {E12}^{4}\, {E2}^{2}\, E3\right] \]

We find that the relation from Lemma 13 is (up to a factor of eta-quotients identical to the last-but-one element in the above Gröbner basis of eta-relations of level 12.

In [90]:
dim := #idxs;
syms := indexedSymbols("E", idxs)$QAuxiliaryTools;
D ==> HomogeneousDirectProduct(dim, NN);
E ==> Monomials(dim, NN, D, syms)
R ==> PolynomialRing(ZZ, E)
xnf ==> extendedNormalForm$QEtaGroebner(ZZ, E);
nlemma13eta := numer lemma13eta;
assertEquals(xnf(nlemma13eta, erels, syms, 'F, "G"), G97+F)
Out[90]:
\[ \texttt{true} \]
In [91]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Ideal of relations among eta-functions¶

In [92]:
-------------------------------------------------------------------
--test:time19-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 [93]:
idxs := etaFunctionIndices 6;
er := etaRelations(idxs) $ QEtaIdealHemmecke(QMOD0)
-- numOfGaps:=[0, 0]
-- TIME:=0.13
Out[93]:
\[ \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 [94]:
nn := 16
idxs := etaFunctionIndices nn
mspecs := mSPECSInfM0(nn, idxs);
[etaQuotient(x, varEta) for x in mspecs]
Out[94]:
\[ 16 \]
Out[94]:
\[ \left[\left[1\right], \left[2\right], \left[4\right], \left[8\right], \left[16\right]\right] \]
Out[94]:
\[ \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 [95]:
)set stream calc 4
[specM0A1(QQ)(x) for x in mspecs]
Out[95]:
\[ \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 [96]:
QEtaIdeal ==> QEtaIdealHemmecke
QI0 ==> QEtaIdeal(QMOD0)
eqigens := etaQuotientIdealGenerators(mspecs)$QI0
-- numOfGaps:=[0, 0]
Out[96]:
\[ \left[-M2+M1-2, -M3+M1-4, -M4+{M1}^{2}-4\, M1+8\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 [97]:
eligens := etaLaurentIdealGenerators(idxs, mspecs, eqigens)$QI0
Out[97]:
\[ \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 some Gröbner engine.

In [98]:
ysyms := indexedSymbols("Y", idxs)$QAuxiliaryTools;
esyms := indexedSymbols("E", idxs)$QAuxiliaryTools;

We compute the Gröbner basis for that order.

In [99]:
gb := groebnerEliminate(eligens, ysyms, esyms)$QEtaGroebnerBasisTools
-- TIME:=0.76
Out[99]:
\[ \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}, 2\, {E1}^{6}\, {E4}^{2}\, {E8}^{5}+8\, {E1}^{4}\, {E16}^{2}\, E2\, {E4}^{2}\, {E8}^{4}-{E1}^{4}\, {E16}^{2}\, {E2}^{5}\, {E4}^{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}, 2\, {E1}^{2}\, E2\, {E8}^{5}-{E1}^{4}\, {E16}^{2}\, {E4}^{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] \]

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 [100]:
idxs := generalizedEtaFunctionIndices 5
Out[100]:
\[ \left[\left[1\right], \left[5\right], \left[5, 1\right], \left[5, 2\right]\right] \]
In [101]:
ger := etaRelations(idxs) $ QEtaIdealHemmecke(QMOD1);
-- numOfGaps:=[0, -1]
-- numOfGaps:=[0, -1]
-- TIME:=0.0

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 [102]:
[x/(E5_1*E5_2*E5)^6 for x in monomials(ger(#ger-1))]
[x/(E5_1*E5_2*E5)   for x in monomials(ger(#ger))]
Out[102]:
\[ \left[-\frac{{E5\_2}^{4}}{{E5\_1}^{6}}, \frac{{E1}^{6}}{{E5}^{6}\, E5\_1\, E5\_2}, \frac{{E5\_1}^{4}}{{E5\_2}^{6}}, \frac{11\, {E1}^{5}}{{E5}^{5}\, {E5\_1}^{6}\, {E5\_2}^{6}}\right] \]
Out[102]:
\[ \left[1, -\frac{E1}{E5\, E5\_1\, E5\_2}\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 [103]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Rogers-Ramanujan Continued Fraction¶

Identiity for 5-dissection of $R(q)$¶

In [104]:
-------------------------------------------------------------------
--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 [105]:
idxs := [[5,1],[5,2]];
rrspec := eqSPEC [[5,1,1],[5,2,-1]];
r5spec := rrspec^5
ir5spec := inv r5spec
Out[105]:
\[ \left[\left[5, 1, 5\right], \left[5, 2, -5\right]\right] \]
Out[105]:
\[ \left[\left[5, 1, -5\right], \left[5, 2, 5\right]\right] \]

A relation for the 5-dissection of $\frac{\qPochhammer{q,q^4}{q^5}^5} {\qPochhammer{q^2,q^3}{q^5}^5}$ is

In [106]:
idrp := findIdM1(5,r5spec,5,0,idxs);
e1 := inv(coefficient idrp)*qequationX(idrp,a[1])
-- == z:=[zinhom=[[1, 1]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[106]:
\[ \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 \]

and for the 5-dissection of $\frac{\qPochhammer{q^2,q^3}{q^5}^5} {\qPochhammer{q,q^4}{q^5}^5}$ it is the following.

In [107]:
idrn := findIdM1(5,ir5spec,5,0,idxs);
e2 := inv(coefficient idrn)*qequationX(idrn,a[2])
-- == z:=[zinhom=[[1, 1]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[107]:
\[ \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, the have different cofactors. And since they were done by different computations, the $M_1$ may stand for different eta-quotients. In the above case, it turns out, they are same.

In [108]:
(monoidSpecifications(idrp) = monoidSpecifications(idrn))@Boolean
Out[108]:
\[ \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 [109]:
rhs(e1-e2)
q^2 * u[5,1]^(-1) * u[5,2]^(-11) * (lhs(e1)=lhs(e2))
Out[109]:
\[ 0 \]
Compiling function G7225 with type Integer -> Boolean 
Out[109]:
\[ \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 [110]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Find Relation for $R(q)^5$ and $R(q^5)$¶

In [111]:
-------------------------------------------------------------------
--test:RogersRamanujanContinuedFraction-modpol
-------------------------------------------------------------------

In Ramanujan's notebook Ramanujan, S.: Notebooks, 2 volumes. Tata Institute of Fundamenmtal Research, Bombay (1957) there is a relation \begin{align*} R(q)^5 &= R(q^5)\cdot \frac{1 - 2 R(q^5) + 4 R(q^5)^2 - 3 R(q^5)^3 + R(q^5)^4} {1 + 3 R(q^5) + 4 R(q^5)^2 + 2 R(q^5)^3 + R(q^5)^4}, \end{align*} where $R(q)$ is defined by \begin{gather*} R(q) = \frac{\eta_{5,1}(\tau)}{\eta_{5,2}(\tau)}. \end{gather*} This relation involves only $R(q)^5$ and $R(q^5)$, which are both modular functions for $\Gamma_1(25)$. Let us compute the modular polynomial between the two.

In [112]:
rspec := eqSPEC(25, [[5,1,1],[5,2,-1]]);
rspec5 := rspec^5;
r5spec := eqSPEC(25, [[25,5,1],[25,10,-1]]);
specrx := rspec5::SPECR(ZZ);
specry := r5spec::SPECR(ZZ);
[pretty(specrx, formatAsExpression()), pretty(specry, formatAsExpression())]
Out[112]:
\[ \left[\frac{{{η}_{5, 1}\left(τ\right)}^{5}}{{{η}_{5, 2}\left(τ\right)}^{5}}, \frac{{η}_{25, 5}\left(τ\right)}{{η}_{25, 10}\left(τ\right)}\right] \]
In [113]:
[level specrx, level specry]
[modularGamma1? specrx, modularGamma1? specry]
Out[113]:
\[ \left[25, 25\right] \]
Out[113]:
\[ \left[\texttt{true}, \texttt{true}\right] \]

We compute a datastructure that contains enough information to compute the pole orders (qetaGrades) of the respective $q$-expansions at the cusps without computing the actual series.

In [114]:
gammas := cuspMatrices(25)$QMOD1
Out[114]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}2&-1\\25&-12\end{bmatrix}, \begin{bmatrix}1&0\\12&1\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}3&-1\\25&-8\end{bmatrix}, \begin{bmatrix}1&0\\8&1\end{bmatrix}, \begin{bmatrix}1&0\\7&1\end{bmatrix}, \begin{bmatrix}4&-1\\25&-6\end{bmatrix}, \begin{bmatrix}1&0\\6&1\end{bmatrix}, \begin{bmatrix}1&0\\5&1\end{bmatrix}, \begin{bmatrix}6&-1\\25&-4\end{bmatrix}, \begin{bmatrix}1&0\\4&1\end{bmatrix}, \begin{bmatrix}7&-2\\25&-7\end{bmatrix}, \begin{bmatrix}3&-1\\10&-3\end{bmatrix}, \begin{bmatrix}8&-1\\25&-3\end{bmatrix}, \begin{bmatrix}1&0\\3&1\end{bmatrix}, \begin{bmatrix}9&-4\\25&-11\end{bmatrix}, \begin{bmatrix}2&-1\\5&-2\end{bmatrix}, \begin{bmatrix}11&-4\\25&-9\end{bmatrix}, \begin{bmatrix}12&-1\\25&-2\end{bmatrix}, \begin{bmatrix}1&0\\2&1\end{bmatrix}, \begin{bmatrix}3&1\\5&2\end{bmatrix}, \begin{bmatrix}7&2\\10&3\end{bmatrix}, \begin{bmatrix}4&-1\\5&-1\end{bmatrix}, \begin{bmatrix}9&-1\\10&-1\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
In [115]:
rspecs := [rspec5, r5spec];
yauxs := [specYM1EQ(spec,gammas) for spec in rspecs];
qgrdss := [qetaGrades x for x in yauxs]
Out[115]:
\[ \left[\left[0, 1, 0, 0, -5, 0, 1, 0, 0, -1, 0, -5, -1, 0, 1, 5, 1, 0, -1, 5, -1, 1, 0, 5, 5, -5, -5, -1\right], \left[0, 1, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 1, 0, 0, 0, 0, 0, -1\right]\right] \]

Cusps that correspond to non-poles in the series expansions for both $R(q)^5$ and $R(q^5)$ can be excluded for the computation of the modular polynomial between the two.

In [116]:
trfs := [gammas.i for i in 1..#qgrdss.1 | qgrdss.1.i > 0 or qgrdss.2.i > 0]
spitzen := map(cusp, trfs)
Out[116]:
\[ \left[\begin{bmatrix}2&-1\\25&-12\end{bmatrix}, \begin{bmatrix}3&-1\\25&-8\end{bmatrix}, \begin{bmatrix}7&-2\\25&-7\end{bmatrix}, \begin{bmatrix}3&-1\\10&-3\end{bmatrix}, \begin{bmatrix}8&-1\\25&-3\end{bmatrix}, \begin{bmatrix}2&-1\\5&-2\end{bmatrix}, \begin{bmatrix}12&-1\\25&-2\end{bmatrix}, \begin{bmatrix}3&1\\5&2\end{bmatrix}, \begin{bmatrix}7&2\\10&3\end{bmatrix}\right] \]
Out[116]:
\[ \left[\frac{2}{25}, \frac{3}{25}, \frac{7}{25}, \frac{3}{10}, \frac{8}{25}, \frac{2}{5}, \frac{12}{25}, \frac{3}{5}, \frac{7}{10}\right] \]

For the expansions at the remaining cusps, the coefficient ring must be extended. From the data we have, we conclude that an extension by a 10-th root of unity (we call it $\xi$) is enough.

In [117]:
ys := [specYM1EQ(spec,trfs) for spec in rspecs];
xiord := lcm [minimalRootOfUnity(y)::PP for y in ys]
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
)read convenience.input )quiet
ans := [specM1An(CX)(x) for x in rspecs]
a1 := ans.1
a2 := ans.2
Out[117]:
\[ 10 \]
Out[117]:
\[ \left[\left[-{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-5}+O\left({q}^{0}\right)\right], \left[-{q}^{-1}+O\left({q}^{4}\right), -{q}^{-1}+O\left({q}^{4}\right), -{q}^{-1}+O\left({q}^{4}\right), {ξ}^{3}+ξ-1+O\left({q}^{5}\right), -{q}^{-1}+O\left({q}^{4}\right), {ξ}^{2}-ξ+O\left({q}^{5}\right), -{q}^{-1}+O\left({q}^{4}\right), -{ξ}^{2}+ξ-1+O\left({q}^{5}\right), -{ξ}^{3}-ξ+O\left({q}^{5}\right)\right]\right] \]
Out[117]:
\[ \left[-{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+15\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-5}+O\left({q}^{0}\right), -{q}^{-5}+O\left({q}^{0}\right)\right] \]
Out[117]:
\[ \left[-{q}^{-1}+O\left({q}^{4}\right), -{q}^{-1}+O\left({q}^{4}\right), -{q}^{-1}+O\left({q}^{4}\right), {ξ}^{3}+ξ-1+O\left({q}^{5}\right), -{q}^{-1}+O\left({q}^{4}\right), {ξ}^{2}-ξ+O\left({q}^{5}\right), -{q}^{-1}+O\left({q}^{4}\right), -{ξ}^{2}+ξ-1+O\left({q}^{5}\right), -{ξ}^{3}-ξ+O\left({q}^{5}\right)\right] \]
In [118]:
modPolynomial ==> modularPolynomial$QEtaModularEquation(CX, An CX)

The modular polynomial between $x=R(q)^5$ and $y=R(q^5)$ can easily be computed and agrees with the equation given above.

In [119]:
mp := modPolynomial([a1,a2],[x,y],[])
c0 := coefficient(mp,x,0); c1 := -coefficient(mp,x,1);
x = c0/c1
assertEquals(c0/c1, y * ((1-2*y+4*y^2-3*y^3+y^4)) / (1+3*y+4*y^2+2*y^3+y^4))
Out[119]:
\[ {y}^{5}+\left(-x-3\right)\, {y}^{4}+\left(-2\, x+4\right)\, {y}^{3}+\left(-4\, x-2\right)\, {y}^{2}+\left(-3\, x+1\right)\, y-x \]
Out[119]:
\[ x=\frac{{y}^{5}-3\, {y}^{4}+4\, {y}^{3}-2\, {y}^{2}+y}{{y}^{4}+2\, {y}^{3}+4\, {y}^{2}+3\, y+1} \]
Out[119]:
\[ \texttt{true} \]

Note that $\xi$ is a primitive 10-th root of unity.

In [120]:
factor c0
factor c1
Out[120]:
\[ y\, \left(y+ξ-1\right)\, \left(y+{ξ}^{3}-1\right)\, \left(y-{ξ}^{2}-1\right)\, \left(y-{ξ}^{3}+{ξ}^{2}-ξ\right) \]
Out[120]:
\[ \left(y+{ξ}^{3}+ξ\right)\, \left(y-{ξ}^{2}+ξ\right)\, \left(y+{ξ}^{2}-ξ+1\right)\, \left(y-{ξ}^{3}-ξ+1\right) \]
In [121]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

More functions¶

In [122]:
-------------------------------------------------------------------
--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+k)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, we call such a list an eta-specification, since it 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+k)q^n \end{gather*} is to be specified, then it is done by (rspec, m, k) where rspec is an eta-specification and $k<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 [123]:
rspec := eqSPEC [[1,-5],[3,7],[5,1,-2],[15,3,1]];
level rspec
Out[123]:
\[ 15 \]
In [124]:
etaQuotient(rspec, varEta) = qEtaQuotient(rspec, varPochhammer)
Out[124]:
\[ \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 generalized eta-functions, QEta refuses to check for modularity with respect to $\Gamma_0(15)$, i.e. if we remove the comment sign (two minuses) from the following line and evaluate, we get an error.

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

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

In [126]:
assertEquals(modular?(rspec)$QMOD1, false)
Out[126]:
\[ \texttt{true} \]

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

In [127]:
idxs := [[1],[3],[5],[15],[15,1],[15,2],[15,3]];
sspec:=cofactInfM1(15, idxs, rspec, 1, 0)
-- == z:=[zinhom=[], zhom=[], zfree=[]]
-- >= z:=[zinhom=[[-1, 1, 1, 0, 2, -2], [-2, 2, 1, 0, 3, -3], [-1, 2, 1, 0, 2, -2], [0, 1, 1, 0, 1, -1], [-2, 3, 1, 0, 3, -3], [-2, 2, 2, 0, 4, -2], [0, 1, 1, -1, 2, -2], [-2, 2, 1, 0, 2, -2], [-1, 1, 1, 0, 1, -1], [-3, 3, 1, 0, 3, -3], [-3, 2, 2, 0, 4, -2], [-1, 1, 1, -1, 2, -2], [-1, 1, 1, 0, 2, -1], [-3, 3, 1, 1, 3, -3], [-1, 1, 1, 1, 1, -1], [-2, 2, 1, 1, 2, -2], [-4, 4, 1, 1, 4, -4], [-1, 1, 1, 0, 3, -3], [-2, 2, 1, 0, 3, -2]], zhom=[[-3, 2, 1, 2, 2, -2], [-2, 1, 1, 2, 1, -1], [-2, 2, 1, 1, 2, -2], [-1, 1, 1, 1, 1, -1], [-2, 1, 1, 1, 2, -2], [0, 1, 1, 0, 1, -1], [-3, 2, 1, 1, 2, -2], [-2, 1, 1, 1, 1, -1], [-1, 1, 1, 0, 1, -1], [-2, 1, 1, 0, 1, -1], [-4, 3, 1, 2, 3, -3], [-2, 1, 1, 1, 2, -1], [-3, 2, 2, 2, 4, -4], [-4, 2, 2, 3, 4, -4], [-5, 3, 2, 3, 5, -5], [-6, 3, 3, 4, 7, -7]], zfree=[]]
Out[127]:
\[ \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 [128]:
spec := sspec * rspec
etaQuotient(spec, varEta)
modular?(spec)$QMOD1
Out[128]:
\[ \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[128]:
\[ \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[128]:
\[ \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+k)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 [129]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
m := 9; k := 5;
nn := minLevelM1(rspec, m, k)
Out[129]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[129]:
\[ 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 [130]:
rspec := eqSPEC [[1,-1]]; m := 11; t := 6;
nn := minLevelM1(rspec, m, t)
idxs := etaFunctionIndices nn
sspec := cofactInfM0(nn, idxs, rspec, m, t)
Out[130]:
\[ 11 \]
Out[130]:
\[ \left[\left[1\right], \left[11\right]\right] \]
-- == z:=[zinhom=[[0]], zhom=[], zfree=[]]
Out[130]:
\[ \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 [131]:
sump := sum('p(11*n+6)*q^n,n=0,%Infinity);
ai := alphaInfinity(sspec,rspec,m,[t]);
e := ai-rhoInfinity(sspec);
qQuotient(sspec, varEta, e) * sump =_
  qQuotient(sspec, varPochhammer, ai) * sump
Out[131]:
\[ {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 [132]:
specM0A1(QQ)(sspec, rspec, m, t)
Out[132]:
\[ 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 [133]:
mspecs := mSPECSInfM0(level sspec, idxs)
[etaQuotient(x, varEta) for x in mspecs]
[specM0A1(QQ)(x) for x in mspecs]
Out[133]:
\[ \left[\left[\left[1, 12\right], \left[11, -12\right]\right]\right] \]
Out[133]:
\[ \left[\frac{{η\left(τ\right)}^{12}}{{η\left(11\, τ\right)}^{12}}\right] \]
Out[133]:
\[ \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 [134]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Expansion into $q$-series¶

In [135]:
-------------------------------------------------------------------
--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 [136]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
specEQI(QQ)(rspec)
Out[136]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[136]:
\[ {q}^{\frac{19}{28}}\, \left(1+{q}^{2}+2\, {q}^{3}+3\, {q}^{4}+O\left({q}^{5}\right)\right) \]
In [137]:
rspec := eqSPEC [[1,-1]]
specEQI(QQ)(rspec)
Out[137]:
\[ \left[\left[1, -1\right]\right] \]
Out[137]:
\[ {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 [138]:
rspec := eqSPEC [[7,2,-1],[7,3,-2]]
qQuotient(rspec, varPochhammer, 0) =_
  eulerExpansion specEQI(QQ)(rspec)
Out[138]:
\[ \left[\left[7, 2, -1\right], \left[7, 3, -2\right]\right] \]
Out[138]:
\[ \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 [139]:
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[139]:
\[ \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$, namely by the function specM1A1.

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

Note that this function corresponding to rspec, obviously must have poles at cusps different from $\infty$.

In [141]:
cusps(5)$QMOD1
Out[141]:
\[ \left[0, \frac{2}{5}, \frac{1}{2}, \infty \right] \]

If we want to investigate \begin{gather*} \sum_{n=0}^\infty a(mn+k)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, k) actually (implicityly) involves a certian factor $q^\beta$ that is determined by (rspec,m,k). Details can be found in equation labelled eq:beta in the file qeta.tex. It is described 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 [142]:
idxs := [[5,1],[5,2]]
sspec := cofactInfM1(5, idxs, rspec, 5, 4)
modular?(sspec,rspec,5,4)$QMOD1
Out[142]:
\[ \left[\left[5, 1\right], \left[5, 2\right]\right] \]
-- == z:=[zinhom=[[4, 2]], zhom=[], zfree=[]]
Out[142]:
\[ \left[\left[5, 1, 9\right], \left[5, 2, 51\right]\right] \]
Out[142]:
\[ \texttt{true} \]

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

In [143]:
ai := alphaInfinity(sspec,rspec,5,[4])$SPEC;
beta := ai-rhoInfinity(sspec);
qQuotient(sspec, varEta, beta) * sum('a(5*n+4)*q^n,n=0,%Infinity)
Out[143]:
\[ {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 at $\infty$ can then be done like this.

In [144]:
specM1A1(QQ)(sspec,rspec,5,4)
Out[144]:
\[ 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 [145]:
id := findIdM1(5, rspec, 5, 4, idxs);
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
-- == z:=[zinhom=[[4, 2]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[145]:
\[ \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 [146]:
id := findIdM1(5, rspec, 5, 4, [[1],[5],[5,1]]);
pretty(id, formatWithQFactor() + formatExpanded() + formatAsNonModular()_
           + formatAsExpression())
-- == z:=[zinhom=[[4, 2]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[146]:
\[ \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 [147]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

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

In [148]:
-------------------------------------------------------------------
--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 [149]:
nn := 22
genus()$GAMMA0(nn)
numberOfCusps()$GAMMA0(nn)
spitzen := cusps()$GAMMA0(nn)
Out[149]:
\[ 22 \]
Out[149]:
\[ 2 \]
Out[149]:
\[ 4 \]
Out[149]:
\[ \left[0, \frac{1}{11}, \frac{1}{2}, \infty \right] \]
In [150]:
ws := [width(c)$GAMMA0(nn) for c in spitzen]
assertEquals(ws, [22,2,11,1])
Out[150]:
\[ \left[22, 2, 11, 1\right] \]
Out[150]:
\[ \texttt{true} \]
In [151]:
[cuspToMatrix(c)$GAMMA0(nn) for c in spitzen]
Out[151]:
\[ \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 [152]:
doubleCosetRepresentatives()$GAMMA0(nn)
Out[152]:
\[ \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 [153]:
nn := 22
genus()$GAMMA1(nn)
numberOfCusps()$GAMMA1(nn)
spitzen := cusps()$GAMMA1(nn)
Out[153]:
\[ 22 \]
Out[153]:
\[ 6 \]
Out[153]:
\[ 20 \]
Out[153]:
\[ \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 [154]:
[width(c)$GAMMA1(nn) for c in spitzen]
Out[154]:
\[ \left[22, 2, 11, 22, 11, 1, 22, 11, 2, 22, 1, 11, 2, 1, 22, 2, 1, 2, 11, 1\right] \]
In [155]:
[cuspToMatrix(c)$GAMMA1(nn) for c in spitzen]
Out[155]:
\[ \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 [156]:
doubleCosetRepresentatives()$GAMMA1(nn)
Out[156]:
\[ \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 [157]:
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[157]:
\[ \left[\frac{3}{22}, \frac{5}{22}, \frac{7}{22}, \frac{9}{22}, \infty \right] \]
Out[157]:
\[ \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 [158]:
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[158]:
\[ \texttt{true} \]
Out[158]:
\[ \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[158]:
\[ \left[0, \frac{1}{11}, \frac{1}{2}, \infty \right] \]
Out[158]:
\[ \texttt{true} \]
In [159]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Expansion at cusps¶

In [160]:
-------------------------------------------------------------------
--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 [161]:
rspec := eqSPEC [[5,1,1],[5,2,-1]];
r5spec := rspec^5
modular?(r5spec)$QMOD1
Out[161]:
\[ \left[\left[5, 1, 5\right], \left[5, 2, -5\right]\right] \]
Out[161]:
\[ \texttt{true} \]

QEta precomputes data about eta-quotients into a data structure that we call 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 [162]:
yr5 := specYM1EQ r5spec;

For specifications without dissections, the order at the cusps can be directly read off from the following command. We also print the respective cusps for the orders of expansion.

In [163]:
trfs := transformationMatrices yr5
map(cusp, trfs)
orders yr5
Out[163]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}2&-1\\5&-2\end{bmatrix}, \begin{bmatrix}1&0\\2&1\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
Out[163]:
\[ \left[0, \frac{2}{5}, \frac{1}{2}, \infty \right] \]
Out[163]:
\[ \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 [164]:
espec := eqSPEC [[1,6],[5,-6]]
modular?(espec)$QMOD1
ye := specYM1EQ espec;
orders ye
Out[164]:
\[ \left[\left[1, 6\right], \left[5, -6\right]\right] \]
Out[164]:
\[ \texttt{true} \]
Out[164]:
\[ \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 [165]:
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 [166]:
[modular?(i5spec)$QMOD1, modular?(gspec)$QMOD1]
Out[166]:
\[ \left[\texttt{true}, \texttt{true}\right] \]
In [167]:
yi5  := specYM1EQ i5spec;
yi10 := specYM1EQ i10spec;
yg   := specYM1EQ gspec;
orders yi5
orders yi10
orders yg
Out[167]:
\[ \left[0, 1, 0, -1\right] \]
Out[167]:
\[ \left[0, 2, 0, -2\right] \]
Out[167]:
\[ \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 [168]:
specM1A1(ZZ)(i10spec) - 11*specM1A1(ZZ)(i5spec) - specM1A1(ZZ)(gspec)
Out[168]:
\[ 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 primitive root of unity $\xi$. In our case, $\setQ[\xi]$ works as the ring of coefficients when $\xi^{10}=1$.

In [169]:
xiord := minimalRootOfUnity yr5;
assertEquals(xiord,10)
Out[169]:
\[ \texttt{true} \]

Let us first read another set of macros provided by QEta. Note that by definition of the macros in convenience.input, we must set the variable trfs appropriately, since this variable is implicitly used in some macros. This variable specifies the matrices corresponding the the cusps where the series expansion is done.

In [170]:
)read convenience.input )quiet
In [171]:
C ==> QQ
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
trfs := transformationMatrices(yr5)
map(cusp, trfs)
)set stream calc 3
r5 := expandM1AnCX yr5
Out[171]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}2&-1\\5&-2\end{bmatrix}, \begin{bmatrix}1&0\\2&1\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
Out[171]:
\[ \left[0, \frac{2}{5}, \frac{1}{2}, \infty \right] \]
Out[171]:
\[ \left[-5\, {ξ}^{3}+5\, {ξ}^{2}-3+\left(-55\, {ξ}^{3}+55\, {ξ}^{2}-35\right)\, q+\left(-340\, {ξ}^{3}+340\, {ξ}^{2}-205\right)\, {q}^{2}+\left(-1495\, {ξ}^{3}+1495\, {ξ}^{2}-940\right)\, {q}^{3}+O\left({q}^{4}\right), -{q}^{-1}-5-10\, q-5\, {q}^{2}+O\left({q}^{3}\right), 5\, {ξ}^{3}-5\, {ξ}^{2}-8+\left(55\, {ξ}^{2}+35\, ξ+55\right)\, q+\left(-340\, {ξ}^{3}-205\, {ξ}^{2}-340\, ξ\right)\, {q}^{2}+\left(2435\, {ξ}^{3}+1495\, ξ-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 [172]:
one := 1$An(CX)
Out[172]:
\[ \left[1, 1, 1, 1\right] \]
In [173]:
left := one/r5 - r5
Out[173]:
\[ \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\, ξ\, q+750\, {ξ}^{2}\, {q}^{2}-3375\, {ξ}^{3}\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right)\right] \]
In [174]:
right := 11*one + expandM1AnCX ye
Out[174]:
\[ \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\, ξ\, q+750\, {ξ}^{2}\, {q}^{2}-3375\, {ξ}^{3}\, {q}^{3}+O\left({q}^{4}\right), {q}^{-1}+5+9\, q+10\, {q}^{2}+O\left({q}^{3}\right)\right] \]
In [175]:
assertTrue(zero?(left - right))
Out[175]:
\[ \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 [176]:
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[176]:
\[ \left[\left[1, 2\right], \left[2, 2\right], \left[3, -2\right], \left[6, -2\right]\right] \]
Out[176]:
\[ \left[\left[1, -4\right], \left[2, -4\right], \left[3, 4\right], \left[6, 4\right]\right] \]
Out[176]:
\[ \left[\left[1, -8\right], \left[2, 4\right], \left[3, 8\right], \left[6, -4\right]\right] \]
Out[176]:
\[ \left[\left[1, 4\right], \left[2, -8\right], \left[3, -4\right], \left[6, 8\right]\right] \]
Out[176]:
\[ \left[\texttt{true}, \texttt{true}, \texttt{true}\right] \]

Here we actually need no field extension.

In [177]:
ys := [specYM0EQ(s) for s in [s1,s2,s3]];
xiord := lcm [minimalRootOfUnity y for y in ys]
C ==> QQ
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi);
trfs := transformationMatrices(ys.1)
one := 1$An(CX);
)set stream calc 3
Out[177]:
\[ 1 \]
Out[177]:
\[ \left[\begin{bmatrix}0&-1\\1&0\end{bmatrix}, \begin{bmatrix}1&1\\3&4\end{bmatrix}, \begin{bmatrix}1&1\\2&3\end{bmatrix}, \begin{bmatrix}1&0\\0&1\end{bmatrix}\right] \]
In [178]:
exs := [expandM0AnCX y for y in ys];
left := one + 9*exs.1
right := exs.2 + exs.3
assertTrue(zero?(left - right))
Out[178]:
\[ \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[178]:
\[ \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[178]:
\[ \texttt{true} \]
In [179]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Recognize series as (generalized) eta-quotients¶

In [180]:
-------------------------------------------------------------------
--test:recognize-eta-quotients
-------------------------------------------------------------------

QEta is able to guess a representation of a $q$-series in terms of a (generalized) eta-quotient. As an example we use the identity of the Rogers-Ramanujan continued fraction. \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}

We try to recognize $\frac{\eta(\tau)^6}{\eta(5\tau)^6}$ from the $q$-series.

In [181]:
)set stream calc 30
rrspec := eqSPEC [[5,1,1],[5,2,-1]];
rr5 := expansion specEQI(ZZ)(rrspec^5);
ir5 := expansion specEQI(ZZ)(inv(rrspec^5));
)set stream calc 40
f := ir5 - rr5 - 11
Out[181]:
\[ {q}^{-1}-6+9\, q+10\, {q}^{2}-30\, {q}^{3}+6\, {q}^{4}-25\, {q}^{5}+96\, {q}^{6}+60\, {q}^{7}-250\, {q}^{8}+45\, {q}^{9}-150\, {q}^{10}+544\, {q}^{11}+360\, {q}^{12}-1230\, {q}^{13}+184\, {q}^{14}-675\, {q}^{15}+2310\, {q}^{16}+1410\, {q}^{17}-4830\, {q}^{18}+750\, {q}^{19}-2450\, {q}^{20}+8196\, {q}^{21}+4920\, {q}^{22}-16180\, {q}^{23}+2376\, {q}^{24}-7875\, {q}^{25}+25644\, {q}^{26}+15000\, {q}^{27}-48720\, {q}^{28}+7126\, {q}^{29}-22800\, {q}^{30}+73221\, {q}^{31}+42310\, {q}^{32}-134760\, {q}^{33}+19284\, {q}^{34}-61400\, {q}^{35}+194334\, {q}^{36}+110610\, {q}^{37}-349000\, {q}^{38}+49563\, {q}^{39}+O\left({q}^{40}\right) \]

We use the coefficient of $f$ up to $q^{20}$ in order to find the specification. The value in fser is what remains after cancelling the eta-quotient given by fspec from the input series.

In [182]:
rec := guessEtaQuotientSpecification([[1],[5]],f,20)
assertEquals(rec.fspec, eqSPEC [[1,6],[5,-6]])
Out[182]:
\[ \left[fspec=\left[\left[1, 6\right], \left[5, -6\right]\right], fexp=0, fser=1+O\left({q}^{41}\right)\right] \]
Out[182]:
\[ \texttt{true} \]

Of course rec.fspec is just a guess and must be verified by other means.

Similarly, we can guess a generalized eta-quotient by simply listing the indices that we allow in the eta-quotient.

In [183]:
rec := guessEtaQuotientSpecification([[5,1],[5,2]],f,20)
assertEquals(rec.fspec, eqSPEC [[5,1,6],[5,2,6]])
Out[183]:
\[ \left[fspec=\left[\left[5, 1, 6\right], \left[5, 2, 6\right]\right], fexp=0, fser=1+O\left({q}^{41}\right)\right] \]
Out[183]:
\[ \texttt{true} \]
In [ ]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------