$\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.
)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.
)set output algebra on
)set output formatted off
Init¶
-------------------------------------------------------------------
--setup
-------------------------------------------------------------------
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)))
)set message type on
)set message time on
-------------------------------------------------------------------
--endsetup
-------------------------------------------------------------------
Algebraic relations among disections¶
-------------------------------------------------------------------
--test:time160-algebraic-relations-5
-------------------------------------------------------------------
Let us start with the generating function of the partition function.
gfv := generatingFunction(qP(q,q)^(-1),'p);
gfv::OF = qPochhammerSpecification(gfv)::OF
5-disection in $\Gamma_1(5)$¶
gf5 := choose(5,0)(gfv)
We need at least level 5 to express this dissection in terms of (generalized eta-quotients.
nn := minLevelM1 gf5
MG ==> MGAMMA1 nn
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
aidxs := generalizedEtaFunctionIndices nn
idxs := [aidxs.i for i in 1..3]
id := findId(C,MG)(gf5, idxs);
ids := [id for i in 0..4];
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]] -- numOfGaps:=[0, 0]
FINDID(5,0)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
FINDID(5,1)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
FINDID(5,2)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
FINDID(5,3)
-- == z:=[zinhom=[[1, 0]], zhom=[], zfree=[]]
FINDID(5,4)
Generators for relations ideal¶
In fact, the above equations can be expressed as polynomials
[identityPolynomial(ids(i+1)) for i in 0..4]
where (with $q=\exp(2\pi i \tau)$)
M1 stand for (expressed as eta-quotient and
as quotient of $q$-Pochhammer symbols)
m1 := monoidSpecifications(ids 1).1;
m1::OF = qExpression(m1)::OF
and $F$ stands respectively for the following expressions.
[f(ids(i+1)) for i in 0..4]
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.
psyms := [first variables monomial gfPart f(ids(i+1)) for i in 0..4]
prels := [psyms.i = orbitProduct(ids.i) for i in 1..5]
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.
mps0 := [numer(psyms.i - rationalFunction(rhs etaEquation(ids.i) / coSpecification(ids.i))) _
for i in 1..5]
In QEta, this can be done directly, by the following function.
mps := [etaIdentityPolynomial(ids.i)::Pol(ZZ) for i in 1..5];
assertEquals(mps0, mps)
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$.
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])
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.
eysyms := concat [variables x for x in eyrels];
alggb := groebnerEliminate(eqrels, eysyms, psyms) $ QEtaGroebnerBasisTools;
-- TIME:=0.91
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])
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.
algrels := algebraicRelations(idxs, mps, psyms) $ QEtaIdealHemmecke(MG)
-- numOfGaps:=[0, -1] -- numOfGaps:=[0, -1] -- TIME:=1.47
assertEquals(algrels, alggb)
Selected results¶
Among the relations is one that already appears in the paper of Kolberg, \cite{Kolberg_SomeIdentitiesInvolvingThePartitionFunction_1957}, namely equation (4.4).
algrels.5
Shown as a relation among the generating series, it is as follows.
qPower(-7/12) * eval(algrels.5, prels) :: SPEX(C)
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".
qPower(-23/60) * eval(algrels.4, prels) :: SPEX(C)
qPower(-47/60) * eval(algrels.6, prels) :: SPEX(C)
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)
Check relations¶
ps := partitionSeries(1)$QFunctions(QQ, L1 QQ)
g := [choose(5,i,ps) for i in 0..4]
algrels.5
- monomial(1,1)$L1(QQ)*g.5^2 + 3*g.2*g.3 - 2*g.1*g.4
algrels.6
- g.1*g.5 - g.2*g.4 + 2*g.3^2
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]
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
Zhu Cao: On Somos' dissection identities¶
-------------------------------------------------------------------
--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*}
gfv := generatingFunction((qP(q) * qP(q^2))^(-1));
gfv::OF = qPochhammerSpecification(gfv)::OF
gf3 := choose(3,0) gfv
nn := minLevelM0 gf3
We must work with $\Gamma_0(6)$.
MG ==> MGAMMA0 nn
idxs := etaFunctionIndices nn
id := findId(C,MG)(gf3, idxs);
ids := [id for i in 0..2];
-- == z:=[zinhom=[[0, 1, 1]], zhom=[], zfree=[]] -- numOfGaps:=[0, 0]
FINDID(3,0)
FINDID(3,1)
FINDID(3,2)
-- == z:=[zinhom=[[0, 1, 1]], zhom=[], zfree=[]]
-- == z:=[zinhom=[[1, 1, 1]], zhom=[], zfree=[]]
-- == z:=[zinhom=[[1, 1, 1]], zhom=[], zfree=[]]
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.
[identityPolynomial(id) for id in ids for i in 0..2]
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.
ee := [qEquation(id) for id in ids for i in 0..2]
Checking that the relation indeed gives 0 (at least at the cusp $\infty$) is easy.
eerel := ee.1 - ee.2 + 2*ee.3
zero? spexMA1(C,MG)(lhs eerel)
Checking that the relation vanishes at all cusps, is not much harder.
We represent the cusps by respective transformation matrices.
trfs := cuspMatrices()$MG
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.
xiord := minRootOfUnity(C,MG)(lhs eerel)
EXTENDEDCOEFFICIENTRING(C, xiord, CX, xi)
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.
z := spexMAn(trfs,CX,MG)(lhs eerel)
zero? z
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.
)read projectdir.input )quiet
basedir := PROJECTDIR "/data/etafiles/Hemmecke/Gamma0";
To find the relation that is only among the dissection, we repeat the steps of the example in the previous section.
mps := [etaIdentityPolynomial(ids.i)::Pol(ZZ) for i in 1..3]
asyms := [first variables monomial gfPart f(ids(i+1)) for i in 0..2]
algrels := algebraicRelations(idxs, mps, asyms, basedir) $ QEtaIdealHemmecke(MG)
-- TIME:=7.75
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)
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.
arels := [asyms.i = orbitProduct(ids.i) for i in 1..3]
The fractional power of $q$ can be avoided by dividing by $q^{1/2}$.
arelation := qPower(-1/2) * eval(algrel::Pol(SPEX C), arels)::SPEX(C);
arelation::OF = 0
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------