$\newcommand{\qPochhammer}[3][\infty]{\left( #2;#3 \right)_{#1}}$ Via jupytext this file can be shown as a jupyter notebook.

This notebook demonstrates the computation of relations among disections (of partition functions) or rather, relations among functions that can be represented as a linear combination of (generalized) eta-quotients.

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 

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

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

Init¶

In [2]:
-------------------------------------------------------------------
--setup
-------------------------------------------------------------------
In [3]:
C ==> QQ
FINDID(m,t) ==> (_
  ids(t+1) := findId(C,MG)(idxs,choose(1, t)(definingDissection id),id); _
  map(qExpression,_
      inv(qPower(alphaOrbitInfinity ids(t+1)) _
          * coSpecification(ids(t+1))::SPEX(C) _
         ) * qEquation ids(t+1)))
In [4]:
)set message type on
)set message time on
In [5]:
-------------------------------------------------------------------
--endsetup
-------------------------------------------------------------------

Algebraic relations among disections¶

In [6]:
-------------------------------------------------------------------
--test:time160-algebraic-relations-5
-------------------------------------------------------------------

Let us start with the generating function of the partition function.

In [7]:
gfv := generatingFunction(qP(q,q)^(-1),'p);
gfv::OF = qPochhammerSpecification(gfv)::OF
Out[7]:
QGeneratingFunctionVariable
Time: 0.02 (OT) = 0.02 sec
Out[7]:
\[ \sum_{{n}=0}^{\infty }{p\left({n}\right)\, {{q}}^{{n}}}=\frac{1}{{\left({q}\right)}_{\infty }} \]
Equation(OutputForm)
Time: 0 sec

5-disection in $\Gamma_1(5)$¶

In [8]:
gf5 := choose(5,0)(gfv)
Out[8]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}} \]
QGeneratingFunctionVariable
Time: 0 sec

We need at least level 5 to express this dissection in terms of (generalized eta-quotients.

In [9]:
nn := minLevelM1 gf5
MG ==> MGAMMA1 nn
Out[9]:
\[ 5 \]
PositiveInteger
Time: 0 sec
Out[9]:
Void
Time: 0 sec

By implementation of an extension of Radu's method for generalized eta-quotients, we can find linear combination of eta-quotients (below expressed in $q$-Pochhammer symbols) for the respective dissections.

For the theoretical background, see

  • Radu: "An algorithmic approach to Ramanujan–Kolberg identities",
  • Hemmecke: "Dancing samba with Ramanujan partition congruences",
  • Chen, Du, and Zhao: "Finding Modular Functions for Ramanujan-Type Identities"
In [10]:
aidxs := generalizedEtaFunctionIndices nn
idxs := [aidxs.i for i in 1..3]
Out[10]:
\[ \left[\left[1\right], \left[5\right], \left[5, 1\right], \left[5, 2\right]\right] \]
List(List(Integer))
Time: 0 sec
Out[10]:
\[ \left[\left[1\right], \left[5\right], \left[5, 1\right]\right] \]
List(List(Integer))
Time: 0 sec
In [11]:
id := findId(C,MG)(gf5, idxs);
ids := [id for i in 0..4];
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[11]:
QEtaRamanujanKolbergIdentity(Fraction(Integer))
Time: 0.04 (EV) + 0.04 (OT) = 0.08 sec
Out[11]:
List(QEtaRamanujanKolbergIdentity(Fraction(Integer)))
Time: 0 sec
In [12]:
FINDID(5,0)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
Out[12]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}}=\frac{{\left({{q}}^{5}\right)}_{\infty }}{{{\left({q}\right)}_{\infty }}^{2}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{8}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{8}}-3\, {q}\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{6}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{2}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{2}}{{{\left({q}\right)}_{\infty }}^{7}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (IN) + 0.03 (EV) = 0.06 sec
In [13]:
FINDID(5,1)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
Out[13]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}+1\right)\, {{q}}^{{n}}}=\frac{{{\left({{q}}^{5}\right)}_{\infty }}^{2}}{{{\left({q}\right)}_{\infty }}^{3}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{6}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{6}}+2\, {q}\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{7}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{4}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{4}}{{{\left({q}\right)}_{\infty }}^{8}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (EV) = 0.03 sec
In [14]:
FINDID(5,2)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
Out[14]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}+2\right)\, {{q}}^{{n}}}=2\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{3}}{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{4}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{4}}-{q}\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{8}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{6}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{6}}{{{\left({q}\right)}_{\infty }}^{9}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (EV) = 0.02 sec
In [15]:
FINDID(5,3)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
Out[15]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}+3\right)\, {{q}}^{{n}}}=3\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{4}}{{{\left({q}\right)}_{\infty }}^{5}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{2}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{2}}+{q}\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{9}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{8}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{8}}{{{\left({q}\right)}_{\infty }}^{10}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (EV) = 0.03 sec
In [16]:
FINDID(5,4)
Out[16]:
\[ \sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}=5\, \frac{{{\left({{q}}^{5}\right)}_{\infty }}^{5}}{{{\left({q}\right)}_{\infty }}^{6}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.01 (EV) = 0.01 sec

Generators for relations ideal¶

In fact, the above equations can be expressed as polynomials

In [17]:
[identityPolynomial(ids(i+1)) for i in 0..4]
Out[17]:
\[ \left[-{M1}+{F}+3, -{M1}+{F}-2, -2\, {M1}+{F}+1, -3\, {M1}+{F}-1, {F}-5\right] \]
List(Polynomial(Fraction(Integer)))
Time: 0 sec

where (with $q=\exp(2\pi i \tau)$) M1 stand for (expressed as eta-quotient and as quotient of $q$-Pochhammer symbols)

In [18]:
m1 := monoidSpecifications(ids 1).1;
m1::OF = qExpression(m1)::OF
Out[18]:
QEtaSpecification
Time: 0 sec
Out[18]:
\[ \frac{{\eta\left(\tau\right)}^{5}}{{\eta\left(5\, \tau\right)}^{5}\, {{\eta}_{5, 1}\left(\tau\right)}^{10}}={{q}}^{-1}\, \frac{{{\left({q}\right)}_{\infty }}^{5}}{{{\left({{q}}^{5}\right)}_{\infty }}^{5}\, {{\left({q}; {{q}}^{5}\right)}_{\infty }}^{10}\, {{\left({{q}}^{4}; {{q}}^{5}\right)}_{\infty }}^{10}} \]
Equation(OutputForm)
Time: 0 sec

and $F$ stands respectively for the following expressions.

In [19]:
[f(ids(i+1)) for i in 0..4]
Out[19]:
\[ \left[{{q}}^{-\frac{1}{120}}\, \frac{{\eta\left(\tau\right)}^{7}}{{\eta\left(5\, \tau\right)}^{6}\, {{\eta}_{5, 1}\left(\tau\right)}^{2}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}}\right), {{q}}^{\frac{23}{120}}\, \frac{{\eta\left(\tau\right)}^{8}}{{\eta\left(5\, \tau\right)}^{7}\, {{\eta}_{5, 1}\left(\tau\right)}^{4}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+1\right)\, {{q}}^{{n}}}\right), {{q}}^{\frac{47}{120}}\, \frac{{\eta\left(\tau\right)}^{9}}{{\eta\left(5\, \tau\right)}^{8}\, {{\eta}_{5, 1}\left(\tau\right)}^{6}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+2\right)\, {{q}}^{{n}}}\right), {{q}}^{\frac{71}{120}}\, \frac{{\eta\left(\tau\right)}^{10}}{{\eta\left(5\, \tau\right)}^{9}\, {{\eta}_{5, 1}\left(\tau\right)}^{8}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+3\right)\, {{q}}^{{n}}}\right), {{q}}^{\frac{19}{24}}\, \frac{{\eta\left(\tau\right)}^{6}}{{\eta\left(5\, \tau\right)}^{5}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)\right] \]
List(QEtaSpecificationExpressionMonomial)
Time: 0 sec

In the identity polynomials above, replace M1 and F by the respective expressions and then replace the dissections together with the corresponding $q$-power by p5_i variables.

In [20]:
psyms := [first variables monomial gfPart f(ids(i+1)) for i in 0..4]
Out[20]:
\[ \left[{p5\_0}, {p5\_1}, {p5\_2}, {p5\_3}, {p5\_4}\right] \]
List(Symbol)
Time: 0 sec
In [21]:
prels := [psyms.i = orbitProduct(ids.i) for i in 1..5]
Out[21]:
\[ \left[{p5\_0}={{q}}^{-\frac{1}{120}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}}\right), {p5\_1}={{q}}^{\frac{23}{120}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+1\right)\, {{q}}^{{n}}}\right), {p5\_2}={{q}}^{\frac{47}{120}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+2\right)\, {{q}}^{{n}}}\right), {p5\_3}={{q}}^{\frac{71}{120}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+3\right)\, {{q}}^{{n}}}\right), {p5\_4}={{q}}^{\frac{19}{24}}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)\right] \]
List(Equation(Polynomial(QEtaSpecificationExpression(Fraction(Integer)))))
Time: 0 sec

Eventually, we replace $\eta(d\tau)$ by ed and $\eta_{d,g}(\tau)$ with ed_g and take the numerator of the resulting rational function.

In [22]:
mps0 := [numer(psyms.i - rationalFunction(rhs etaEquation(ids.i) / coSpecification(ids.i))) _
         for i in 1..5]
Out[22]:
\[ \left[{{e1}}^{7}\, {{e5\_1}}^{8}\, {p5\_0}+3\, {{e5}}^{6}\, {{e5\_1}}^{10}-{{e1}}^{5}\, {e5}, {{e1}}^{8}\, {{e5\_1}}^{6}\, {p5\_1}-2\, {{e5}}^{7}\, {{e5\_1}}^{10}-{{e1}}^{5}\, {{e5}}^{2}, {{e1}}^{9}\, {{e5\_1}}^{4}\, {p5\_2}+{{e5}}^{8}\, {{e5\_1}}^{10}-2\, {{e1}}^{5}\, {{e5}}^{3}, {{e1}}^{10}\, {{e5\_1}}^{2}\, {p5\_3}-{{e5}}^{9}\, {{e5\_1}}^{10}-3\, {{e1}}^{5}\, {{e5}}^{4}, {{e1}}^{6}\, {p5\_4}-5\, {{e5}}^{5}\right] \]
List(Polynomial(Fraction(Integer)))
Time: 0 sec

In QEta, this can be done directly, by the following function.

In [23]:
mps := [etaIdentityPolynomial(ids.i)::Pol(ZZ) for i in 1..5];
assertEquals(mps0, mps)
Out[23]:
List(Polynomial(Integer))
Time: 0 sec
Out[23]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

In order to eliminate the $e$ variables from the above system, we add relations for the inverses $y=\frac{1}{e}$ of the $e$ variables to the system as relations of the form $e y = 1$.

In [24]:
eyrels := laurentRelations(idxs) $ QEtaIdealHemmecke(MG)
eqrels := concat(eyrels, mps);
assertEquals(eqrels, [_
  e1*y1-1, e5*y5-1, e5_1*y5_1-1,_
  p5_0*e1^7*e5_1^8 + 3*e5^6*e5_1^10 - e1^5*e5,_
  p5_1*e1^8*e5_1^6 - 2*e5^7*e5_1^10 - e1^5*e5^2,_
  p5_2*e1^9*e5_1^4-2*e1^5*e5^3 + e5^8*e5_1^10,_
  p5_3*e1^10*e5_1^2-3*e1^5*e5^4 - e5^9*e5_1^10,_
  p5_4*e1^6 - 5*e5^5])
Out[24]:
\[ \left[{e1}\, {y1}-1, {e5}\, {y5}-1, {e5\_1}\, {y5\_1}-1\right] \]
List(Polynomial(Integer))
Time: 0 sec
Out[24]:
List(Polynomial(Integer))
Time: 0 sec
Out[24]:
\[ \mathtt{true} \]
Boolean
Time: 0.02 (IN) = 0.03 sec

Eliminate generalized eta-quotients¶

The following computation eliminates the variables $e_k$ and $y_k$ so that only the relations among the p5_k survive.

In [25]:
eysyms := concat [variables x for x in eyrels];
alggb := groebnerEliminate(eqrels, eysyms, psyms) $ QEtaGroebnerBasisTools;
Out[25]:
List(Symbol)
Time: 0 sec
-- TIME:=0.91
Out[25]:
List(Polynomial(Integer))
Time: 0.01 (IN) + 0.01 (EV) + 0.02 (OT) = 0.05 sec
In [26]:
assertEquals(alggb, [_
  10*p5_0^2*p5_3^2-9*p5_0^2*p5_2*p5_4-9*p5_1*p5_3^2*p5_4+4*p5_0*p5_3*p5_4^2+4*p5_4^4,_
  5*p5_0*p5_1*p5_3-3*p5_0^2*p5_4-6*p5_2*p5_3*p5_4+4*p5_1*p5_4^2,_
  5*p5_0*p5_2*p5_3-6*p5_0*p5_1*p5_4-3*p5_3^2*p5_4+4*p5_2*p5_4^2,_
  2*p5_1^2-p5_0*p5_2-p5_3*p5_4,_
  3*p5_1*p5_2-2*p5_0*p5_3-p5_4^2,_
  2*p5_2^2-p5_1*p5_3-p5_0*p5_4])
Out[26]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

In general we would have to add relations among the eta-functions, but fortunately there are no polynomial relations between $\eta(\tau)$, $\eta(5\tau)$, and $\eta_{5,1}(\tau)$ so the above Gröbner basis computation worked.

There is a special command algebraicRelations in QEta that deals with the general case and implicitly includes the generation of the $e y -1$ relations and the relations among involved eta-functions.

In [27]:
algrels := algebraicRelations(idxs, mps, psyms) $ QEtaIdealHemmecke(MG)
-- numOfGaps:=[0, -1]
-- numOfGaps:=[0, -1]
-- TIME:=1.47
Out[27]:
\[ \left[4\, {{p5\_4}}^{4}+4\, {p5\_0}\, {p5\_3}\, {{p5\_4}}^{2}+\left(-9\, {p5\_1}\, {{p5\_3}}^{2}-9\, {{p5\_0}}^{2}\, {p5\_2}\right)\, {p5\_4}+10\, {{p5\_0}}^{2}\, {{p5\_3}}^{2}, 4\, {p5\_1}\, {{p5\_4}}^{2}+\left(-6\, {p5\_2}\, {p5\_3}-3\, {{p5\_0}}^{2}\right)\, {p5\_4}+5\, {p5\_0}\, {p5\_1}\, {p5\_3}, 4\, {p5\_2}\, {{p5\_4}}^{2}+\left(-3\, {{p5\_3}}^{2}-6\, {p5\_0}\, {p5\_1}\right)\, {p5\_4}+5\, {p5\_0}\, {p5\_2}\, {p5\_3}, -{p5\_3}\, {p5\_4}-{p5\_0}\, {p5\_2}+2\, {{p5\_1}}^{2}, -{{p5\_4}}^{2}-2\, {p5\_0}\, {p5\_3}+3\, {p5\_1}\, {p5\_2}, -{p5\_0}\, {p5\_4}-{p5\_1}\, {p5\_3}+2\, {{p5\_2}}^{2}\right] \]
List(Polynomial(Integer))
Time: 0.02 (EV) = 0.03 sec
In [28]:
assertEquals(algrels, alggb)
Out[28]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

Selected results¶

Among the relations is one that already appears in the paper of Kolberg, \cite{Kolberg_SomeIdentitiesInvolvingThePartitionFunction_1957}, namely equation (4.4).

In [29]:
algrels.5
Out[29]:
\[ -{{p5\_4}}^{2}-2\, {p5\_0}\, {p5\_3}+3\, {p5\_1}\, {p5\_2} \]
Polynomial(Integer)
Time: 0 sec

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

In [30]:
qPower(-7/12) * eval(algrels.5, prels) :: SPEX(C)
Out[30]:
\[ -{q}\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)}^{2}+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)-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) \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0.02 (IN) = 0.02 sec

The above is mentioned in Kolberg: "Some identities involving the partition function" as formula (4.4) and can also be found by doing similar computations with just pure eta-quotients, since the pairs $(p(5n), p(5n+3))$ and $(p(5n+1), p(5n+2))$ appear together in a product.

The following identities involve other pairs. See congruence at bottom of page 86 in Kolberg: "Some identities involving the partition function".

In [31]:
qPower(-23/60) * eval(algrels.4, prels) :: SPEX(C)
Out[31]:
\[ -{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)+2\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+1\right)\, {{q}}^{{n}}}\right)}^{2}-\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}}\right)\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+2\right)\, {{q}}^{{n}}}\right) \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec
In [32]:
qPower(-47/60) * eval(algrels.6, prels) :: SPEX(C)
Out[32]:
\[ 2\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+2\right)\, {{q}}^{{n}}}\right)}^{2}-\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)-\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) \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec
In [33]:
qPower(-39/40) * eval(algrels.3, prels) :: SPEX(C)
qPower(-31/40) * eval(algrels.2, prels) :: SPEX(C)
qPower(-7/6)   * eval(algrels.1, prels) :: SPEX(C)
Out[33]:
\[ -3\, {q}\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+3\right)\, {{q}}^{{n}}}\right)}^{2}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)+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}+5\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\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}+3\right)\, {{q}}^{{n}}}\right)-6\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\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}+4\right)\, {{q}}^{{n}}}\right) \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec
Out[33]:
\[ -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)\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)+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}-3\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\right)\, {{q}}^{{n}}}\right)}^{2}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)+5\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}\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) \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec
Out[33]:
\[ 4\, {{q}}^{2}\, {\left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)}^{4}-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}\, \left(\sum_{{n}=0}^{\infty }{p\left(5\, {n}+4\right)\, {{q}}^{{n}}}\right)+5\, {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} \]
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec

Check relations¶

In [34]:
ps := partitionSeries(1)$QFunctions(QQ, L1 QQ)
g := [choose(5,i,ps) for i in 0..4]
Out[34]:
\[ 1+{q}+2\, {{q}}^{2}+3\, {{q}}^{3}+5\, {{q}}^{4}+7\, {{q}}^{5}+11\, {{q}}^{6}+15\, {{q}}^{7}+22\, {{q}}^{8}+30\, {{q}}^{9}+42\, {{q}}^{10}+O\left({{q}}^{11}\right) \]
QEtaLaurentSeries(Fraction(Integer))
Time: 0 sec
Out[34]:
\[ \left[1+7\, {q}+42\, {{q}}^{2}+176\, {{q}}^{3}+627\, {{q}}^{4}+1958\, {{q}}^{5}+5604\, {{q}}^{6}+14883\, {{q}}^{7}+37338\, {{q}}^{8}+89134\, {{q}}^{9}+204226\, {{q}}^{10}+O\left({{q}}^{11}\right), 1+11\, {q}+56\, {{q}}^{2}+231\, {{q}}^{3}+792\, {{q}}^{4}+2436\, {{q}}^{5}+6842\, {{q}}^{6}+17977\, {{q}}^{7}+44583\, {{q}}^{8}+105558\, {{q}}^{9}+239943\, {{q}}^{10}+O\left({{q}}^{11}\right), 2+15\, {q}+77\, {{q}}^{2}+297\, {{q}}^{3}+1002\, {{q}}^{4}+3010\, {{q}}^{5}+8349\, {{q}}^{6}+21637\, {{q}}^{7}+53174\, {{q}}^{8}+124754\, {{q}}^{9}+281589\, {{q}}^{10}+O\left({{q}}^{11}\right), 3+22\, {q}+101\, {{q}}^{2}+385\, {{q}}^{3}+1255\, {{q}}^{4}+3718\, {{q}}^{5}+10143\, {{q}}^{6}+26015\, {{q}}^{7}+63261\, {{q}}^{8}+147273\, {{q}}^{9}+329931\, {{q}}^{10}+O\left({{q}}^{11}\right), 5+30\, {q}+135\, {{q}}^{2}+490\, {{q}}^{3}+1575\, {{q}}^{4}+4565\, {{q}}^{5}+12310\, {{q}}^{6}+31185\, {{q}}^{7}+75175\, {{q}}^{8}+173525\, {{q}}^{9}+386155\, {{q}}^{10}+O\left({{q}}^{11}\right)\right] \]
List(QEtaLaurentSeries(Fraction(Integer)))
Time: 0 sec
In [35]:
algrels.5
- monomial(1,1)$L1(QQ)*g.5^2 + 3*g.2*g.3 - 2*g.1*g.4
Out[35]:
\[ -{{p5\_4}}^{2}-2\, {p5\_0}\, {p5\_3}+3\, {p5\_1}\, {p5\_2} \]
Polynomial(Integer)
Time: 0 sec
Out[35]:
\[ O\left({{q}}^{21}\right) \]
QEtaLaurentSeries(Fraction(Integer))
Time: 0 sec
In [36]:
algrels.6
- g.1*g.5 - g.2*g.4 + 2*g.3^2
Out[36]:
\[ -{p5\_0}\, {p5\_4}-{p5\_1}\, {p5\_3}+2\, {{p5\_2}}^{2} \]
Polynomial(Integer)
Time: 0 sec
Out[36]:
\[ O\left({{q}}^{21}\right) \]
QEtaLaurentSeries(Fraction(Integer))
Time: 0 sec

Elimination with Sage¶

As a reminder to myself.

In SAGE:

R.<y1,y5,y5_1,e1,e5,e5_1,f0,f1,f2,f3,f4> = PolynomialRing(QQ)
I=ideal([
  e1*y1-1, e5*y5-1, e5_1*y5_1-1,
  -e1^7*y5^6*y5_1^2*f0+e1^5*y5^5*y5_1^10-3,
  -e1^8*y5^7*y5_1^4*f1+e1^5*y5^5*y5_1^10+2,
  -1/2*e1^9*y5^8*y5_1^6*f2+e1^5*y5^5*y5_1^10-1/2,
  e1^10*y5^9*y5_1^8*f3-3*e1^5*y5^5*y5_1^10-1,
  e1^6*y5^5*f4-5])
J = I.elimination_ideal([y1,y5,y5_1,e1,e5,e5_1])
J.basis

It gives:

[2*f2^2 - f1*f3 - f0*f4,
 3*f1*f2 - 2*f0*f3 - f4^2,
 2*f1^2 - f0*f2 - f3*f4,
 5*f0*f2*f3 - 6*f0*f1*f4 - 3*f3^2*f4 + 4*f2*f4^2,
 5*f0*f1*f3 - 3*f0^2*f4 - 6*f2*f3*f4 + 4*f1*f4^2,
 10*f0^2*f3^2 - 9*f0^2*f2*f4 - 9*f1*f3^2*f4 + 4*f0*f3*f4^2 + 4*f4^4]
In [37]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------

Zhu Cao: On Somos' dissection identities¶

In [38]:
-------------------------------------------------------------------
--test:time2600-algebraic-relations-3
-------------------------------------------------------------------

(Journal of Mathematical Analysis and Applications, 2009)

Theorem 2.1: $a(3n+2)\equiv 0 \pmod{3}$ for $a(n)$ defined by \begin{gather*} \sum_{n=0}^\infty a(n) = \qPochhammer{q}{q}^{-1} \qPochhammer{q^2}{q^2}^{-1} \end{gather*}

In [39]:
gfv := generatingFunction((qP(q) * qP(q^2))^(-1));
gfv::OF = qPochhammerSpecification(gfv)::OF
gf3 := choose(3,0) gfv
nn := minLevelM0 gf3
Out[39]:
QGeneratingFunctionVariable
Time: 0 sec
Out[39]:
\[ \sum_{{n}=0}^{\infty }{a\left({n}\right)\, {{q}}^{{n}}}=\frac{1}{{\left({q}\right)}_{\infty }\, {\left({{q}}^{2}\right)}_{\infty }} \]
Equation(OutputForm)
Time: 0 sec
Out[39]:
\[ \sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}} \]
QGeneratingFunctionVariable
Time: 0 sec
Out[39]:
\[ 6 \]
PositiveInteger
Time: 0 sec

We must work with $\Gamma_0(6)$.

In [40]:
MG ==> MGAMMA0 nn
Out[40]:
Void
Time: 0 sec
In [41]:
idxs := etaFunctionIndices nn
id := findId(C,MG)(gf3, idxs);
ids := [id for i in 0..2];
Out[41]:
\[ \left[\left[1\right], \left[2\right], \left[3\right], \left[6\right]\right] \]
List(List(Integer))
Time: 0 sec
-- == z:=[zinhom=[[0, 1, 1]], zhom=[], zfree=[]]
-- numOfGaps:=[0, 0]
Out[41]:
QEtaRamanujanKolbergIdentity(Fraction(Integer))
Time: 0.04 (EV) = 0.04 sec
Out[41]:
List(QEtaRamanujanKolbergIdentity(Fraction(Integer)))
Time: 0 sec
In [42]:
FINDID(3,0)
FINDID(3,1)
FINDID(3,2)
-- == z:=[zinhom=[[0, 1, 1]], zhom=[], zfree=[]]
Out[42]:
\[ \sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}}=\frac{{{\left({{q}}^{2}\right)}_{\infty }}^{3}\, {{\left({{q}}^{3}\right)}_{\infty }}^{4}}{{{\left({q}\right)}_{\infty }}^{7}\, {{\left({{q}}^{6}\right)}_{\infty }}^{2}}-3\, {q}\, \frac{{{\left({{q}}^{6}\right)}_{\infty }}^{6}}{{{\left({q}\right)}_{\infty }}^{3}\, {{\left({{q}}^{2}\right)}_{\infty }}^{5}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.03 (EV) = 0.03 sec
-- == z:=[zinhom=[[1, 1, 1]], zhom=[], zfree=[]]
Out[42]:
\[ \sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}=\frac{{{\left({{q}}^{2}\right)}_{\infty }}^{2}\, {\left({{q}}^{3}\right)}_{\infty }\, {\left({{q}}^{6}\right)}_{\infty }}{{{\left({q}\right)}_{\infty }}^{6}}+3\, {q}\, \frac{{{\left({{q}}^{6}\right)}_{\infty }}^{9}}{{{\left({q}\right)}_{\infty }}^{2}\, {{\left({{q}}^{2}\right)}_{\infty }}^{6}\, {{\left({{q}}^{3}\right)}_{\infty }}^{3}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (EV) = 0.02 sec
-- == z:=[zinhom=[[1, 1, 1]], zhom=[], zfree=[]]
Out[42]:
\[ \sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}=3\, \frac{{{\left({{q}}^{3}\right)}_{\infty }}^{3}\, {{\left({{q}}^{6}\right)}_{\infty }}^{3}}{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({{q}}^{2}\right)}_{\infty }}^{4}} \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0.02 (EV) = 0.03 sec

Clearly, we se divisibility in the last identity, thus showing Theorem 2.1 from Zhou Cao's paper.

Relation between dissection and eta-quotients¶

We do a bit more on the other identities.

In [43]:
[identityPolynomial(id) for id in ids for i in 0..2]
Out[43]:
\[ \left[-{M1}+{F}+3, -{M1}+{F}-3, {F}-3\right] \]
List(Polynomial(Fraction(Integer)))
Time: 0 sec

By looking at the respective identity polynomial and noting that M1 corresponds to the same eta-quotient, we can easily find an identity by inspection.

In [44]:
ee := [qEquation(id) for id in ids for i in 0..2]
Out[44]:
\[ \left[{{q}}^{-1}\, \frac{{{\left({q}\right)}_{\infty }}^{3}\, {{\left({{q}}^{2}\right)}_{\infty }}^{5}}{{{\left({{q}}^{6}\right)}_{\infty }}^{6}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}}\right)={{q}}^{-1}\, \frac{{{\left({{q}}^{2}\right)}_{\infty }}^{8}\, {{\left({{q}}^{3}\right)}_{\infty }}^{4}}{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({{q}}^{6}\right)}_{\infty }}^{8}}-3, {{q}}^{-1}\, \frac{{{\left({q}\right)}_{\infty }}^{2}\, {{\left({{q}}^{2}\right)}_{\infty }}^{6}\, {{\left({{q}}^{3}\right)}_{\infty }}^{3}}{{{\left({{q}}^{6}\right)}_{\infty }}^{9}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}\right)={{q}}^{-1}\, \frac{{{\left({{q}}^{2}\right)}_{\infty }}^{8}\, {{\left({{q}}^{3}\right)}_{\infty }}^{4}}{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({{q}}^{6}\right)}_{\infty }}^{8}}+3, \frac{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({{q}}^{2}\right)}_{\infty }}^{4}}{{{\left({{q}}^{3}\right)}_{\infty }}^{3}\, {{\left({{q}}^{6}\right)}_{\infty }}^{3}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)=3\right] \]
List(Equation(QEtaSpecificationExpression(Fraction(Integer))))
Time: 0 sec

Checking that the relation indeed gives 0 (at least at the cusp $\infty$) is easy.

In [45]:
eerel := ee.1 - ee.2 + 2*ee.3
zero? spexMA1(C,MG)(lhs eerel)
Out[45]:
\[ 2\, \frac{{{\left({q}\right)}_{\infty }}^{4}\, {{\left({{q}}^{2}\right)}_{\infty }}^{4}}{{{\left({{q}}^{3}\right)}_{\infty }}^{3}\, {{\left({{q}}^{6}\right)}_{\infty }}^{3}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)-{{q}}^{-1}\, \frac{{{\left({q}\right)}_{\infty }}^{2}\, {{\left({{q}}^{2}\right)}_{\infty }}^{6}\, {{\left({{q}}^{3}\right)}_{\infty }}^{3}}{{{\left({{q}}^{6}\right)}_{\infty }}^{9}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}\right)+{{q}}^{-1}\, \frac{{{\left({q}\right)}_{\infty }}^{3}\, {{\left({{q}}^{2}\right)}_{\infty }}^{5}}{{{\left({{q}}^{6}\right)}_{\infty }}^{6}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}}\right)=0 \]
Equation(QEtaSpecificationExpression(Fraction(Integer)))
Time: 0 sec
Out[45]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

Checking that the relation vanishes at all cusps, is not much harder.

We represent the cusps by respective transformation matrices.

In [46]:
trfs := cuspMatrices()$MG
Out[46]:
\[ \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] \]
List(Matrix(Integer))
Time: 0 sec

Then we need an extension of the coefficient domain which we do by computing an $n$-th root of unity. In our case it turns out that a 24th root of unity is sufficient.

In [47]:
xiord := minRootOfUnity(C,MG)(lhs eerel)
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi)
Out[47]:
\[ 24 \]
PositiveInteger
Time: 0 sec
Out[47]:
\[ {ξ} \]
SimpleAlgebraicExtension(Fraction(Integer),UnivariatePolynomial(ξ,Fraction(Integer)),ξ^8+(-(ξ^4))+1)
Time: 0 sec

Eventually, we turn the expression eerel from above into series expansions at all the cusps. That gives a positive order for each expansion, i.e., the corresponding modular function is identicaly zero.

In [48]:
z := spexMAn(trfs,CX,MG)(lhs eerel)
zero? z
Out[48]:
\[ \left[O\left({{q}}^{21}\right), O\left({{q}}^{21}\right), O\left({{q}}^{21}\right), O\left({{q}}^{20}\right)\right] \]
ModularFunctionQSeries(SimpleAlgebraicExtension(Fraction(Integer),UnivariatePolynomial(ξ,Fraction(Integer)),ξ^8+(-(ξ^4))+1),[[[0,-1],[1,0]],[[1,1],[3,4]],[[1,1],[2,3]],[[1,0],[0,1]]])
Time: 0.01 (EV) + 0.15 (OT) = 0.17 sec
Out[48]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

Relation between dissections¶

We rely on precomputation stored in the directory below. If this directory and data does not exist, it will be created (and used next time) in the function call algebraicRelations.

In [49]:
)read projectdir.input )quiet
basedir := PROJECTDIR "/data/etafiles/Hemmecke/Gamma0";
Out[49]:
String
Time: 0 sec
Out[49]:
String
Time: 0 sec

To find the relation that is only among the dissection, we repeat the steps of the example in the previous section.

In [50]:
mps := [etaIdentityPolynomial(ids.i)::Pol(ZZ) for i in 1..3]
Out[50]:
\[ \left[3\, {{e1}}^{4}\, {{e6}}^{8}+{a3\_0}\, {{e1}}^{7}\, {{e2}}^{5}\, {{e6}}^{2}-{{e2}}^{8}\, {{e3}}^{4}, -3\, {{e1}}^{4}\, {{e6}}^{9}-{{e2}}^{8}\, {{e3}}^{4}\, {e6}+{a3\_1}\, {{e1}}^{6}\, {{e2}}^{6}\, {{e3}}^{3}, -3\, {{e3}}^{3}\, {{e6}}^{3}+{a3\_2}\, {{e1}}^{4}\, {{e2}}^{4}\right] \]
List(Polynomial(Integer))
Time: 0 sec
In [51]:
asyms := [first variables monomial gfPart f(ids(i+1)) for i in 0..2]
Out[51]:
\[ \left[{a3\_0}, {a3\_1}, {a3\_2}\right] \]
List(Symbol)
Time: 0 sec
In [52]:
algrels := algebraicRelations(idxs, mps, asyms, basedir) $ QEtaIdealHemmecke(MG)
-- TIME:=7.75
Out[52]:
\[ \left[2\, {{a3\_2}}^{4}-3\, {a3\_0}\, {a3\_1}\, {{a3\_2}}^{2}+\left(-{{a3\_1}}^{3}-{{a3\_0}}^{3}\right)\, {a3\_2}+3\, {{a3\_0}}^{2}\, {{a3\_1}}^{2}\right] \]
List(Polynomial(Integer))
Time: 0.01 (EV) = 0.02 sec
In [53]:
algrel := first algrels
assertEquals(algrel,_
  2*a3_2^4-3*a3_0*a3_1*a3_2^2+(-a3_1^3-a3_0^3)*a3_2+3*a3_0^2*a3_1^2)
Out[53]:
\[ 2\, {{a3\_2}}^{4}-3\, {a3\_0}\, {a3\_1}\, {{a3\_2}}^{2}+\left(-{{a3\_1}}^{3}-{{a3\_0}}^{3}\right)\, {a3\_2}+3\, {{a3\_0}}^{2}\, {{a3\_1}}^{2} \]
Polynomial(Integer)
Time: 0 sec
Out[53]:
\[ \mathtt{true} \]
Boolean
Time: 0 sec

Let us translate that polynomial back into an identity of dissections. Note that each of the variable in the above polynomial stands for a product of a dissection with a certain fractional $q$ power that is connected to modularity.

In [54]:
arels := [asyms.i = orbitProduct(ids.i) for i in 1..3]
Out[54]:
\[ \left[{a3\_0}={{q}}^{-\frac{1}{24}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}}\right), {a3\_1}={{q}}^{\frac{7}{24}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}\right), {a3\_2}={{q}}^{\frac{5}{8}}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)\right] \]
List(Equation(Polynomial(QEtaSpecificationExpression(Fraction(Integer)))))
Time: 0 sec

The fractional power of $q$ can be avoided by dividing by $q^{1/2}$.

In [55]:
arelation := qPower(-1/2) * eval(algrel::Pol(SPEX C), arels)::SPEX(C);
arelation::OF = 0
Out[55]:
QEtaSpecificationExpression(Fraction(Integer))
Time: 0 sec
Out[55]:
\[ 2\, {{q}}^{2}\, {\left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)}^{4}-{q}\, {\left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}\right)}^{3}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)-{q}\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}\right)\, {{q}}^{{n}}}\right)\, \left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+1\right)\, {{q}}^{{n}}}\right)\, {\left(\sum_{{n}=0}^{\infty }{a\left(3\, {n}+2\right)\, {{q}}^{{n}}}\right)}^{2}=0 \]
Equation(OutputForm)
Time: 0 sec
In [56]:
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------