Via jupytext this file can be shown as a jupyter notebook.
)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
)set output algebra on
)set output formatted off
Problem formulation¶
Let $p(n)$ denote the number of partitions of the natural number $n$. Show that for every natural number $k$ the expression $p(11k+6)$ is divisible by 11.
The solution is described in the article (http://www.sciencedirect.com/science/article/pii/S0747717117300147):
@Article{Hemmecke_DancingSambaRamanujan_2018,
author = {Ralf Hemmecke},
title = {Dancing Samba with {R}amanujan Partition
Congruences},
journal = {Journal of Symbolic Computation,
year = 2018,
JournalUrl = {http://www.sciencedirect.com/science/journal/07477171},
URL = {http://www.sciencedirect.com/science/article/pii/S0747717117300147},
DOI = {10.1016/j.jsc.2017.02.001},
volume = {84},
pages = {14--24},
ISSN = {0747-7171},
keywords = {Partition identities, Number theoretic algorithm,
Subalgebra basis},
abstract = {The article presents an algorithm to compute a
$C[t]$-module basis $G$ for a given subalgebra $A$
over a polynomial ring $R=C[x]$ with a Euclidean
domain $C$ as the domain of coefficients and $t$ a
given element of $A$. The reduction modulo $G$
allows a subalgebra membership test. The algorithm
also works for more general rings $R$, in particular
for a ring $R\subset C((q))$ with the property that
$f\in R$ is zero if and only if the order of $f$ is
positive. As an application, we algorithmically
derive an explicit identity (in terms of quotients
of Dedekind eta-functions and Klein's
$j$-invariant) that shows that $p(11n+6)$ is
divisible by 11 for every natural number $n$ where
$p(n)$ denotes the number of partitions of $n$.}
}
The article is also available as RISC report 16-06.
Explanation of the session¶
Let X be an algebra that can be used with the algorithm samba
,
but which has a polynomial attached to record the operations that
have been done with the original element. This somehow simulates a
similar idea as attaching a unit matrix to a matrix and then
computing the row echelon form of the matrix. The unit matrix turns
into the transformation matrix.
Since we want to show divisibility by 11 of $p(11k+6)$ for every $k$ where $p$ is the partition function, the main computation is done with a coefficient ring $C=\mathbb{Z}_{(11)}$ being integers localized at 11, i.e. rational numbers that have no denominator divisible by 11.
-------------------------------------------------------------------
--setup
-------------------------------------------------------------------
C ==> IntegerLocalizedAtPrime 11
L ==> A1 C
X ==> X1 C
ORBIT ==> modularOrbit $ QMOD0
PolC ==> Pol C; LC ==> A1 C
PolZ ==> Pol ZZ; LZZ ==> A1 ZZ
PolQ ==> Pol QQ; LQQ ==> A1 QQ
smaller11(x: PolC, y: PolC):Boolean == _
exponent leadingCoefficient x < exponent leadingCoefficient y
smallerT(x: PolC, y: PolC):Boolean == degree(x, 'T) < degree(y, 'T)
Function declaration smaller11 : (Polynomial(IntegerLocalizedAtPrime(11)), Polynomial(IntegerLocalizedAtPrime(11))) -> Boolean has been added to workspace. Function declaration smallerT : (Polynomial(IntegerLocalizedAtPrime(11)), Polynomial(IntegerLocalizedAtPrime(11))) -> Boolean has been added to workspace.
)set mess type on
)set mess time on
-------------------------------------------------------------------
--endsetup
-------------------------------------------------------------------
Relations in terms of the $M_i$'s¶
-------------------------------------------------------------------
--test:Hemmecke
-------------------------------------------------------------------
The generators of the eta-quotients of level 22 are given by
these exponents for the eta-functions (with arguments being the
divisors of 22). The variable rgens
corresponds to the generators
of $R^\infty(22)$.
nn := 22;
idxs := etaFunctionIndices nn
mspecs := mSPECSInfM0(nn, idxs);
rgensExpected: List List ZZ := [_
[- 4, 8, 4, - 8], [- 1, 1, 11, - 11], [7, - 3, 3, - 7],_
[- 2, 6, 6, - 10], [0, 4, 8, - 12], [2, 2, 10, - 14], [4, 0, 12, - 16]];
rgens := [pureExponents x for x in mspecs]
assertEquals(rgens, rgensExpected)
eqgensZ := [specEQI(ZZ)(b) for b in mspecs]
assertEquals(removeDuplicates [one? denom eulerExponent x for x in eqgensZ], [true])
egensZ := [expansion x for x in eqgensZ];
rfegensZ := [_
(12*q^5+13*q^4+8*q^3+6*q^2+4*q+1)/q^5,_
(3*q^5+2*q^4+2*q^3+q^2+q+1)/q^5,_
(-21*q^5+2*q^4-14*q^3+17*q^2-7*q+1)/q^5,_
(-6*q^5-q^4-2*q^3-q^2+2*q+1)/q^6,_
(8*q^6+2*q^4-4*q^2+1)/q^7,_
(-10*q^7-q^6+2*q^4+6*q^3-3*q^2-2*q+1)/q^8,_
(9*q^8+8*q^7-10*q^6-4*q^5-5*q^4+8*q^3+2*q^2-4*q+1)/q^9];
assertEquals([rationalFunction(x, 0) for x in egensZ], rfegensZ)
egens := [specM0A1(C)(x) for x in mspecs];
assertEquals([qetaGrade x for x in egens], [5, 5, 5, 6, 7, 8, 9])
msyms := indexedSymbols("M", #egens)
assertEquals(msyms, [M1, M2, M3, M4, M5, M6, M7])
xgens := [toX1(C, x, s) for x in egens for s in msyms]; -- List X
We take a minimal (in terms the order in $q$) element from the generators and make it special. Then we compute an algebra basis for $C[M_1,\ldots,M_7]$.
19-Feb-2020: Interestingly, it does not work for the element corresponding to $[- 1, 1, 11, - 11]$. We choose the vector corresponding to $[- 4, 8, 4, - 8]$.
xab := samba(xgens)$QSAMBA(C,X1,QTOPRED)
-- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1]
Due to another critical element selection strategy, the resulting polynomial is a bit different.
bas := sort(smallerGrade?, basis xab);
xabExpectedArticle := [1/128*M7-5/128*M6+21/128*M5_
+(-1/1024*M1+11*213/1024)*M4-85/128*M3+1/1024*M1^2+505/1024*M1,_
1/8*M4-1/8*M1, M3, M5, M6] -- LPol C
xabExpected := [3/8*M3+11*(-1/8)*M2+M1, -1/3*M2+1/3*M1, M4, M5, M6]
assertEquals([x1Pol(C,x) for x in bas], xabExpected)
assertEquals(# bas, 5)
Compiling function smallerGrade? with type (QEtaExtendedAlgebra( IntegerLocalizedAtPrime(11),ModularFunctionQSeriesInfinity( IntegerLocalizedAtPrime(11)),QEtaLazyAlgebra(IntegerLocalizedAtPrime(11), Polynomial(IntegerLocalizedAtPrime(11)))), QEtaExtendedAlgebra( IntegerLocalizedAtPrime(11),ModularFunctionQSeriesInfinity( IntegerLocalizedAtPrime(11)),QEtaLazyAlgebra(IntegerLocalizedAtPrime(11), Polynomial(IntegerLocalizedAtPrime(11))))) -> Boolean
Relation for divisibility of $p(11k+6)$ by 11¶
Let's first define $F$ as on top of page 30 of \cite{Radu_RamanujanKolberg_2015}, i.e. $$ F(\tau) = q^{\frac{13}{24}} \frac{\eta(\tau)^{10}\eta(2\tau)^2\eta(11\tau)^{11}} {\eta(22\tau)^{22}} \sum_{k=0}^{\infty}p(11k+6)q^k $$
First we define the partion series.
ps := partitionSeries(1)$QFunctions(ZZ, LZZ) --: LZZ
Then we select the sub-series given by the (11n+6)-th term.
r11 := choose(11, 6, ps) --: LZZ
r11Expected := _
1188908248*q^10+342325709*q^9+92669720*q^8+23338469*q^7+5392783*q^6_
+1121505*q^5+204226*q^4+31185*q^3+3718*q^2+297*q+11 --: Fraction PolZ
assertEquals(rationalFunction(r11, 10), r11Expected)
rspec := eqSPEC(1,[-1]); nn := 22; m := 11; t := 6;
sspec := cofactInfM0(nn, idxs, rspec, m, t)
assertEquals(sspec, eqSPEC(nn,[10,2,11,-22]))
-- == 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=[]]
fZ := specM0A1(ZZ)(sspec,rspec,m,t)
fZExpected := _
1272909*q^14+944328*q^13+689282*q^12+485254*q^11+327415*q^10+214500*q^9+_
135608*q^8+79211*q^7+44396*q^6+22286*q^5+10164*q^4+3696*q^3+1111*q^2+187*q+11
--: PolZ
assertEquals(numer rationalFunction(fZ, 0), fZExpected)
assertEquals(qetaGrade fZ, 14)
xf := toX1(C, specM0A1(C)(sspec,rspec,m,t), F) --: X
Now we can reduce this element xf
by the respective algebra
basis, taking into account that xt=xgens.1
is our special $t$
that we used in the construction of the algebra basis of the
eta-quotients of level 22.
As can be seen from the sorted monomials of the representaion, $F$ can be expressed as $F=11p(M_1,\ldots, M_7)$ where $p$ is a polynomial having coefficient denominators not divisible by 11.
xr := reduce(xf, xab)$QTOPRED(C,X1)
assertTrue(zero? xr)
Due to a different reduction strategy in a newer implementation of Samba, we don't get exactly the same result as in \cite{Hemmecke_DancingSambaRamanujan_2018}.
mxr := [(inv(unitPart leadingCoefficient x)::C)*x _
for x in monomials(x1Pol(C,xr))]
mxrExpectedArticle := _
[F, 11*M1^2, 11*M1^3, 11*M1*M3, 11*M1^2*M4, 11*M1*M5, 11^2*M1, 11^2*M3,_
11^2*M1*M4, 11^2*M5, 11^2*M1*M6, 11^2*M6, 11^2*M7, 11^3, 11^3*M4]$LPol(C)
mxrExpected := _
[F, 11*M1^2, 11*M1^3, 11*M1^2*M2, 11*M1*M3, 11*M1^2*M3, 11*M1*M4, _
11*M1*M5, 11^2*M1, 11^2*M1*M2, 11^3*M3, 11^3*M4, 11^3*M5, 11^4, 11^5*M2]$LPol(C)
assertEquals(sort(smaller11, mxr), mxrExpected)
Compiling function smaller11 with type (Polynomial(IntegerLocalizedAtPrime(11 )), Polynomial(IntegerLocalizedAtPrime(11))) -> Boolean
Let's normalize the leading coefficient of $F$ to 1.
xrq := x1Pol(C,xr);
cxfq := coefficient(xrq, 'F, 1)
lcxfq := leadingCoefficient cxfq
lcfxqArticle := -1/1360
assertEquals(lcxfq, 1)
ilcxfq := (inv lcxfq)::C
xrq := ilcxfq * xrq
xrqExpectedArticle := _
(11^2*(-3068)*M7+(11^2*(-3)*M1+11^2*(-4236))*M6+(11*(-285)*M1_
+11^2*(-5972))*M5+(11*(-1/8)*M1^2+11^2*(-4497/8)*M1+11^3*(-789/2))*M4_
+(11*(-1867)*M1+11^2*(-2476))*M3+11*1/8*M1^3+11*1011/8*M1^2_
+11^2*1647/2*M1+F+11^3*1360)$PolC
xrqExpected := (11*(_
(M1+11^2*7)*M5 _
+(3*M1+11^2*5)*M4 _
+((-1/4)*M1^2 + (-245/8)*M1+11^2*(-1/8))*M3 _
+(5/4*M1^2+11*(-49/8)*M1+11^4*1/8)*M2 _
+(-1)*M1^3+3*M1^2+11*(-13)*M1+11^3*(-1)) _
+F)$PolC
assertEquals(xrq, xrqExpected)
Let's plug in the original eta-quotients into xrq
.
sers := cons(first xf, egens) --: List L
-- Note that after some changes to the sorting order in the
-- implementation, the old Mi correspond to other new Mi.
sersArticle:=cons(first xf, [egens.i for i in [3,1,4,2,5,6,7]])
ezArticle := eval(xrqExpectedArticle, c+->c::L, cons('F,msyms), sersArticle)_
$ PolynomialEvaluation(C, L)
assertTrue(zero? ezArticle)
ez := eval(xrq, c+->c::L, cons('F,msyms), sers)_
$ PolynomialEvaluation(C, L)
assertTrue(zero? ez)
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
Checking modularity¶
-------------------------------------------------------------------
--test:modularity
-------------------------------------------------------------------
We are looking for an expression of $S=\sum_{k=0}^{\infty}p(11k+6)q^k$ in terms of Dedekind eta-functions.
Note that the partition series is (up to a factor of $q^{1/24}$) given by $\eta(\tau)^{-1}$. Thus for the divisors $\{1,11\}$ of $M=11$, that gives us the vector $s=(-1, 0)$. The cofactor exponent from the $F$ given at the beginning of the previous section is $r=(10,2,11,-22)$ and corresponds to the divisors $\{1,2,11,22\}$ of $N=22$.
The following function, checks whether all the data corresponding to $F$ from above indeed leads to a modular function for $\Gamma_0(22)$.
sspec := eqSPEC(22, [10,2,11,-22])
rspec := eqSPEC(1, [-1])
assertTrue(modular?(sspec,rspec,11,6)$QMOD0)
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
Express in Klein's J-invariant¶
-----------------------------------------------------------------
--NONWORKING test:Klein
-----------------------------------------------------------------
The test is currently disabled, because for some reason it takes too long in newer versions (2.0) of QEta.
Let $$ U(v):=t^v q \prod_{n=1}^{\infty}(1-q^{11n})\sum_{k=0}^{\infty}p(11k+6)q^k. $$
Below, we show that $U(7)=11 t^2 h(t, j, j_p)$ where $j$, $j_p$, and $t$ are Laurent series with integer coefficients and $h$ is a polynomial with rational coefficients having no denominator that is divisible by 11. In other words, we can give a relation $z U(7) = 11 t^2 k(t, j, j_p)$ with an integer polynomial $k$ and an integer $z$ such that $\gcd(z,11)=1$.
We choose Klein's $j$-invariant (https://en.wikipedia.org/wiki/J-invariant#The_q-expansion_and_moonshine) expressed as a Laurent series in terms of $q = \exp(2\pi i \tau)$ as the series $j$ above.
The series $j_p$ is given by replacing $q$ by $q^{11}$ in $j$.
The series $t$ is given by $$ t = \left(\frac{\eta(\tau)}{\eta(11\tau)}\right)^{12} $$ (again in terms of $q = \exp(2\pi i \tau)$) where $\eta$ is Dedekind's eta-function (https://en.wikipedia.org/wiki/Dedekind_eta_function#Definition).
Construction of Klein's $j$-invariant¶
Klein's $j$-invariant can be given by the expression $$j(\tau) = E_4^3/\Delta$$ where $$\Delta=\frac{E_4^3-E_6^2}{1728}=\eta(\tau)^{24}$$ and the normalize Eisenstein series $E_4$ and $E_6$ are given by $$E_4=1+240 \sum_{n=1}^\infty \sigma_3(n)q^n$$ and $$E_6=1-504 \sum_{n=1}^\infty \sigma_5(n)q^n$$ where $q = \exp(2\pi i\tau)$ and $\sigma_k(n)$ denotes the sum of the $k$-th power of the positive divisors of $n$.
All the above are series with integers coefficients. For our computation, however, we compute with integers localized at the prime 11, i.e. these are rational numbers with denominators not divisible by 11.
The following function simply maps the integer coefficients of the series into the localized coefficient domain and eventually creates an object that attaches the indeterminate $J$ to the series.
i := kleinJInvariant()$QFunctions(C, L); --: L
j := toX1(C, i, J); --: X
x1A1(C,j)
x1Pol(C,j)
ip := multiplyExponents(i, 11)$L; --: L
jp := toX1(C, ip, Jp); --: X
x1A1(C,jp)
x1Pol(C,jp)
The series $t$¶
The value $t$ is given by $$t = \left(\frac{\eta(\tau)}{\eta(11\tau)}\right)^{12}$$ in terms of $q = \exp(2\pi i \tau)$.
tt := specM0A1(C)(eqSPEC([[1,12],[11,-12]])); --: L
t := toX1(C, tt, T); --: X
x1A1(C,t)
x1Pol(C,t)
Construct elements suitable for the samba algorithm¶
m1 := t; --: X
We need some auxiliary values $m_2$ and $m_3$.
m2 := j*t^3; --: X
m3 := jp*t; --: X
We want yet another value to end up in an algebra basis of orders -2 and -3.
We ignore this for now, because with the data that produces a relation among $F$, $J$, $J_p$, and $T$, the computation did not finish.
m := jp; mp := j;
while (d := qetaGrade(m)$X) > 0 repeat (_
c := qetaLeadingCoefficient(m)$X;_
e := d::NN;_
m := m-c*j^e;_
mp := mp-c*jp^e)
mp
[-q^(-121)+O(q^(-110)),_
-Jp^11_
+11*744*Jp^10_
+11(-2570796)*Jp^9_
+11*4880620256*Jp^8_
+11*(-5550817150590)*Jp^7_
+11^2*351821430873072*Jp^6_
+11^2*(-147929969197380488)*Jp^5_
+11^2*35519316022933293120*Jp^4_
+11^2*(-4373015221856525734395)*Jp^3_
+11^2*224874476512864841450600*Jp^2_
+11^2*(-3096214928567780111700972)*Jp_
+J]
mgens := [m1,m2,m3]
The algebra basis computation¶
Then we compute the algebra basis for the elements $t=m_1$, $m_2$, and $m_3$.
Since we compute in an extended algebra. The second component of each entry in the basis gives its expression in terms of the original generators.
--approx. 75 seconds
ab := samba(mgens)$QSAMBA(C,X1,QTOPRED);
assertEquals(# basis ab, 12)
Show the powers of 11 in the coefficients of the representation (in terms of J, Jp, T) of the algebra basis elements.
pows := [[exponent(x) for x in coefficients second ab.n] for n in 2..#ab]
powsExpected := [_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0,_
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,_
1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 0, 0,_
1, 1, 1, 0, 3, 3, 0, 0, 0, 3, 1, 3, 4, 4, 4, 5, 4, 6, 6, 6, 8, 8],_
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0,_
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 3, 2, 0, 1, 0, 1,_
0, 2, 2, 3, 0, 1, 0, 1, 0, 3, 3, 1, 2, 3, 1, 3, 4, 1, 1, 1, 4, 4, 2, 2,_
4, 4],_
[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,_
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0,_
0, 0, 0, 2, 2, 0, 0, 2, 0, 2, 3, 0, 0, 0, 3, 4, 3, 4, 3],_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,_
0, 2, 1, 1, 1, 1, 1, 1, 2, 3, 0, 2, 0, 3, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3,_
2, 2, 3],_
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,_
0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 1,_
0, 1, 0, 2, 3, 0, 0, 3, 0, 3, 4, 1, 1, 1, 3, 3, 2, 2, 3],_
[0, 0, 0],_
[0],_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 3, 2, 0, 2,_
0, 2, 2, 0, 2, 0, 2, 2, 2, 2, 1, 1],_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0,_
1, 1, 0, 0, 1, 1],_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],_
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]$List(List NN)
assertEquals(pows, powsExpected)
The (absolute value of the) order and the power of 11 in the leading coefficient of the elements in the algebra basis.
gl := [[qetaGrade i, unitCanonical qetaLeadingCoefficient i] for i in basis ab]
glExpected := [[7, 11^18], [8, 11^8], [9, 11^4], [11, 11^3],_
[12, 11^3], [13, 11^3], [14, 1], [16, 1], [17, 11^2], [18, 11],_
[11*2, 1], [23, 1]]$List(List C)
assertEquals(gl, glExpected)
We define $$ U(v):=t^v q \prod_{n=1}^{\infty}(1-q^{11n})\sum_{k=0}^{\infty}p(11k+6)q^k. $$
Let's do this step by step. We take the partition series.
ps := partitionSeries(1)$QFunctions(ZZ, LZZ) --: LZZ
We also take the sub-series given by the (11n+6)-th term of ps as
defined earlier. The coefficients of the series r11
we want to
check for divisibility by 11.
r11 := choose(11, 6, ps) --: LZZ
The following function simply maps the integer coefficients of the series into the localized coefficient domain or into the rational number domain Q.
abfmap(A, B, f, x) ==> map(f, x)$QEtaLaurentSeriesFunctions2(A, B)
abffmap(A, B, f, x) ==> abfmap(A, B, f, x::L1(A))::A1(B)
abmap(A, B, x) ==> abffmap(A, B, (c: A): B +-> c::B, x)
zcmap(x) ==> abmap(ZZ, C, x)
cqmap(x) ==> abmap(C, QQ, x)
zqmap(x) ==> abmap(ZZ, QQ, x)
Putting all together (except the factor $t^v$) gives the following expression.
q := monomial(1, 1)$LZZ
fz := q*eulerFunction(11)$QFunctions(ZZ, LZZ)*r11; --: LZZ
f := embed(zcmap fz, F)$X
Now let's check what the smallest $v>0$ is such that $U(v)=t^v f$
is in the $\mathbb{Q}[t]$-module generated by $\{1, z_1, \ldots,
z_{12}\}$ where the $z_i$ are given by the list ab
.
Although for the coefficient domain $\mathbb{Q}$ we find $v=3$, with the coefficients being in $C=\mathbb{Z}_{(11)}$, the reduction to zero only starts to work with $v=7$.
qab := [cqmap first x for x in basis ab];
qt := cqmap first t
qreds := [zero? reduce(cqmap(first(t^v * f)), qt, qab)$QEtaTopReduction(QQ, LQQ)_
for v in 1..7]
qredsExpected := [false, false, true, true, true, true, true]
assertEquals(qreds, qredsExpected)
With $v=3$ the reduction does not lead to 0 in case the coefficients are non-rational, but rather lie in $\mathbb{Z}_{(11)}$.
assertFalse(zero? reduce(t^3*f, t, ab)$QTOPRED(C,CA1))
assertEquals(_
[zero? reduce(t^v * f, t, ab)$QEtaTopReduction(C, X) for v in 1..10],_
[false, false, false, false, false, false, true, true, true, true])
Since all involved series in the algebra basis ab
have their
representation in terms of $J$, $Jp$, and $T$ attached, we have
found a relation in $F$, $J$, $Jp$, and $T$.
result := reduce(t^7 * f, t, ab)$QEtaTopReduction(C, X);
assertTrue(zero? result)
res := second result;
assertEquals(variables res, [T, Jp, J, F])
The leading coefficient is a rational number whose numerator and
denominator are not divisible by 11, i.e., the exponent
(of 11)
of the coefficient is zero.
cf := coefficient(res, 'F, 1);
lcf := leadingCoefficient cf
assertTrue(zero? exponent lcf)
Let's normalize the coefficient in front of the variable $F$ such that it becomes 1, i.e., we multiply by the inverse of the coefficient.
r := (inv(unitPart lcf)::C)*res;
Let us investigate the coefficients of all monomials of $r$.
mr := [(inv(unitPart leadingCoefficient x)::C)*x for x in monomials r];
sort(smaller11, mr)
sort(smallerT, mr)
The above shows that we have found a relation $$ U(7):=t^7 q \prod_{n=1}^{\infty}(1-q^{11n}) \sum_{k=0}^{\infty}p(11k+6)q^k = 11 t^2 h(t,j,j_p) $$ where $h$ is a polynomial in $\mathbb{Z}_{(11)}[t,j,j_p]$.
Let us create output that can directly pasted into a journal paper.
tups := [(d:=degree(x, [T,J,Jp]); [d.1-2,d.2,d.3]) for x in rest sort(smaller11, mr)];
assertEquals(#tups, 161)
tupsExpected: List List ZZ := [_
[0, 0, 0], [0, 0, 1], [0, 0, 2],_
[1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 0, 3],_
[2, 0, 0], [2, 0, 1], [2, 0, 2], [2, 0, 3], [2, 0, 4],_
[2, 1, 0], [2, 1, 1],_
[3, 0, 0], [3, 0, 1], [3, 0, 2], [3, 0, 3], [3, 0, 4],_
[3, 1, 0], [3, 1, 1], [3, 1, 2],_
[4, 0, 0], [4, 0, 1], [4, 0, 2], [4, 0, 3], [4, 0, 4],_
[4, 1, 0], [4, 1, 1], [4, 1, 2], [4, 1, 3],_
[4, 2, 0],_
[5, 0, 0], [5, 0, 1], [5, 0, 2], [5, 0, 3], [5, 0, 4],_
[5, 1, 0], [5, 1, 1], [5, 1, 2], [5, 1, 3],_
[5, 2, 0], [5, 2, 1],_
[6, 0, 0], [6, 0, 1], [6, 0, 2], [6, 0, 3], [6, 0, 4],_
[6, 1, 0], [6, 1, 1], [6, 1, 2], [6, 1, 3],_
[6, 2, 0], [6, 2, 1], [6, 2, 2],_
[7, 0, 0], [7, 0, 1], [7, 0, 2], [7, 0, 3], [7, 0, 4],_
[7, 1, 0], [7, 1, 1], [7, 1, 2], [7, 1, 3],_
[7, 2, 0], [7, 2, 1], [7, 2, 2],_
[7, 3, 0],_
[8, 0, 0], [8, 0, 1], [8, 0, 2], [8, 0, 3], [8, 0, 4],_
[8, 1, 0], [8, 1, 1], [8, 1, 2], [8, 1, 3],_
[8, 2, 0], [8, 2, 1], [8, 2, 2],_
[8, 3, 0], [8, 3, 1],_
[9, 0, 0], [9, 0, 1], [9, 0, 2], [9, 0, 3],_
[9, 1, 0], [9, 1, 1], [9, 1, 2], [9, 1, 3],_
[9, 2, 0], [9, 2, 1], [9, 2, 2],_
[9, 3, 0], [9, 3, 1],_
[10, 0, 0], [10, 0, 1], [10, 0, 2], [10, 0, 3],_
[10, 1, 0], [10, 1, 1], [10, 1, 2], [10, 1, 3],_
[10, 2, 0], [10, 2, 1], [10, 2, 2],_
[10, 3, 0], [10, 3, 1],_
[10, 4, 0],_
[11, 0, 0], [11, 0, 1], [11, 0, 2],_
[11, 1, 0], [11, 1, 1], [11, 1, 2],_
[11, 2, 0], [11, 2, 1], [11, 2, 2],_
[11, 3, 0], [11, 3, 1],_
[11, 4, 0],_
[12, 0, 0], [12, 0, 1], [12, 0, 2],_
[12, 1, 0], [12, 1, 1], [12, 1, 2],_
[12, 2, 0], [12, 2, 1], [12, 2, 2],_
[12, 3, 0], [12, 3, 1],_
[12, 4, 0],_
[13, 0, 0], [13, 0, 1],_
[13, 1, 0], [13, 1, 1],_
[13, 2, 0], [13, 2, 1],_
[13, 3, 0], [13, 3, 1],_
[13, 4, 0],_
[14, 0, 0], [14, 0, 1],_
[14, 1, 0], [14, 1, 1],_
[14, 2, 0], [14, 2, 1],_
[14, 3, 0], [14, 3, 1],_
[14, 4, 0],_
[15, 0, 0], [15, 1, 0], [15, 2, 0], [15, 3, 0], [15, 4, 0],_
[16, 0, 0], [16, 1, 0], [16, 2, 0], [16, 3, 0], [16, 4, 0]];
assertEquals(sort tups, tupsExpected)
Size of numerator and denominators of the coefficients of the linear combination of the powerproducts.
sz(x) ==> floor((log(abs(numer(x::QQ)::Float))/log(10.0))::Float)::ZZ
sizes := remove(0, sort [sz x for x in coefficients r])
assertEquals(min sizes, 2324)
assertEquals(max sizes, 2395)
degs := sort [degree(x, T) for x in mr]
degsExpected: List NN := _
[2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,_
6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,_
8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,_
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,_
11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,_
12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,_
14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15,_
16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18]
assertEquals(degs, degsExpected)
Check the relation¶
Plugging in the series $f$, $j$, $j_p$, $t$, for the indeterminates $F$, $J$, $J_p$, $T$ in $r$ should result in the zero series.
-- approx. 45 seconds
fjjpt: List Symbol := [F, J, Jp, T];
z := eval(r, c+->c::A1, fjjpt, [first f, first j, first jp, first t])_
$ PolynomialEvaluation(C, A1)
assertTrue(zero? z)
Let's check whether the relation interpreted with rational
coefficients also yields zero. This checks against bugs in
IntegerLocalizedAtPrime
.
-- approx. 30 seconds
rq := r::Polynomial(Fraction Integer);
zq := eval(rq, c+->c::LQQ, fjjpt, [cqmap first f, cqmap i, cqmap ip, zqmap tz])_
$ PolynomialEvaluation(QQ, LQQ)
assertTrue(zero? zq)
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
The same algorithm can be used over the rational numbers $\mathbb{Q}$¶
-------------------------------------------------------------------
--test:Klein_rational
-------------------------------------------------------------------
However, that computation leads to only 5 elements in the algebra basis.
nn := 11
idxs := etaFunctionIndices nn
LQQ ==> A1 QQ
XQ ==> X1 QQ
i0 := kleinJInvariant()$QFunctions(QQ, LQQ); --: LQQ
i1 := multiplyExponents(i0, 11); --: LQQ
xj0 := toX1(QQ, i0, J0); --: XQ
xj1 := toX1(QQ, i1, J1); --: XQ
tt := specM0A1(QQ) eqSPEC(nn,[12,-12])
xt := toX1(QQ, tt, T); --: XQ
xgens := [xt, xj0*xt^3, xj1*xt]; --: List XQ
xab := samba(xgens)$QSAMBA(QQ,X1,QRED);
assertEquals(# basis xab, 4)
-- numOfGaps:=[384, -1] -- numOfGaps:=[291, -1] -- numOfGaps:=[197, -1] -- numOfGaps:=[106, -1] -- numOfGaps:=[15, -1] -- numOfGaps:=[14, -1] -- numOfGaps:=[13, -1] -- numOfGaps:=[12, -1] -- numOfGaps:=[11, -1] -- numOfGaps:=[10, -1] -- numOfGaps:=[9, -1] -- numOfGaps:=[8, -1] -- numOfGaps:=[7, -1] -- numOfGaps:=[6, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1] -- numOfGaps:=[5, -1]
bas := sort(smallerGrade?, basis xab);
degs := [[qetaGrade i, unitCanonical qetaLeadingCoefficient i] for i in bas]
degsExpected := [[7, 1], [8, 1], [9, 1], [11, 1]]$List(List QQ)
assertEquals(degs, degsExpected)
Compiling function smallerGrade? with type (QEtaExtendedAlgebra(Fraction( Integer),ModularFunctionQSeriesInfinity(Fraction(Integer)),QEtaLazyAlgebra( Fraction(Integer),Polynomial(Fraction(Integer)))), QEtaExtendedAlgebra( Fraction(Integer),ModularFunctionQSeriesInfinity(Fraction(Integer)), QEtaLazyAlgebra(Fraction(Integer),Polynomial(Fraction(Integer))))) -> Boolean
rspec := eqSPEC(1,[-1]); m := 11; t := 6;
sspec := cofactInfM0(nn, idxs, rspec, m, t)
xf := toX1(QQ, specM0A1(QQ)(sspec,rspec,m,t), F) --: X
-- == z:=[zinhom=[[0]], zhom=[], zfree=[]]
As we have seen above, $U(3)$ lies in the $\mathbb{Q}[t]$-module generated by 1 and the elements of the algebra basis.
qreds := [zero? reduce(xt^v * xf, xab)$QTOPRED(QQ,X1) for v in 1..7]
qredsExpected := [false, true, true, true, true, true, true]
assertEquals(qreds, qredsExpected)
xr := reduce(xt^2 * xf, xab)$QTOPRED(QQ,X1);
assertTrue(zero? xr)
pol := x1Pol(QQ,xr);
cfq := coefficient(pol, 'F, 1)
lcfq := leadingCoefficient cfq
rq := inv(lcfq)*pol - F*T^2
fl := factors factor rq;
assertEquals(fl.1.factor, T)
assertEquals(fl.1.exponent, 2)
cfs := coefficients fl.2.factor
No denominator is divisible by 11.
zdens := [zero? positiveRemainder(denom x, 11) for x in cfs]
assertEquals(removeDuplicates zdens, [false])
There are, however, some numerators that are not divisible by 11, so the relation does not reveal a divisibility by 11 for p(11n+6).
znums := [zero? positiveRemainder(numer x, 11) for x in cfs]
assertTrue(member?(false, znums))
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
The relation in $M_i$'s with integer coefficients¶
-----------------------------------------------------------------
--test:integer
-----------------------------------------------------------------
Here $\mathbb{Z}$ is considered as a Euclidean domain wrt the absolute value as the Euclidean size function.
C ==> ZZ
--LZ ==> A1 ZZ
--XZ ==> X1 ZZ
nn := 22;
idxs := etaFunctionIndices nn;
mspecs := mSPECSInfM0(nn,idxs);
egens := [specM0A1(C)(spec) for spec in mspecs]
msyms := indexedSymbols("M", #egens)
xgens := [toX1(C, x, s) for x in egens for s in msyms]
-- We only achieve a relation that shows divisibility by 11 with xgens.3.
xt := xgens.3
xab := samba(cons(xt, xgens))$QSAMBA(C,X1,QTOPRED)
assertEquals(# basis xab, 5)
-- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1]
rspec := eqSPEC(1,[-1]); nn := 22; m := 11; t := 6;
sspec: SPEC := cofactInfM0(nn, idxs, rspec, m, t)
assertEquals(sspec, eqSPEC(nn,[10,2,11,-22]))
xf := toX1(C, specM0A1(C)(sspec,rspec,m,t), F)
-- == 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=[]]
Interestingly, we have to multiply by 4, because otherwise the reduction would not return 0.
xr := reduce(4*xf, xab)$QTOPRED(ZZ,X1)
assertTrue(zero? xr)
pol := x1Pol(C,xr)
polExpected := (11*(_
(-1800*M3-1734656)*M5_
+ (-4696*M3+6504960)*M4_
- 4*M3^3_
+ (16*M2-12*M1-12529)*M3^2_
+ (50633*M2-74080*M1-1492480)*M3_
- 37566144*M2_
+ 10284032*M1_
- 47703040)_
+ 4*F)$PolZ
assertEquals(pol, polExpected)
lcxr := [leadingCoefficient x for x in monomials(pol-4*F)];
divisibility11 := removeDuplicates [positiveRemainder(x, 11) for x in lcxr]
assertEquals(divisibility11, [0])
e := eval(pol, c+->c::LZZ, cons('F, msyms), cons(first xf, egens))_
$ PolynomialEvaluation(ZZ, A1(ZZ))
assertTrue(zero? e)
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
Paule's proof via computation in $C[t,F]$¶
-----------------------------------------------------------------
--test:Paule
-----------------------------------------------------------------
rspec := eqSPEC(1,[-1]); nn := 11; m := 11; t := 6;
idxs := etaFunctionIndices nn
sspec := cofactInfM0(nn, idxs, rspec, m, t)
xf := toX1(C, specM0A1(C)(sspec,rspec,m,t), 'F)
xt := toX1(C, specM0A1(C) eqSPEC(11,[12,-12]), 'T)
xab := samba([xt, xf])$QSAMBA(C,X1,QTOPRED);
assertEquals(# basis xab, 4)
pols := sort((x,y)+->degree x < degree y, [x1Pol(C,x) for x in basis xab])
polsExpected := [F, F^2, F^3, F^4]$List(PolC)
assertEquals(pols, polsExpected)
-- == z:=[zinhom=[[0]], zhom=[], zfree=[]]
-- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1] -- numOfGaps:=[120, -1]
xr := reduce(xf^5, xab)$QTOPRED(C,X1)
assertTrue(zero? xr)
pol := x1Pol(C,xr)
c := coefficient(pol, F, 5)
polExpected := (-F^5_
+ 5*11^4*F^4_
+ 11^4*(251*T-2*5*11^4)*F^3_
+ 11^3*(4093*T^2+2*3*5*11^5*31*T+2*5*11^9)*F^2_
+ 11^4*(3*41*T^3-2^2*3*11^3*1289*T^2+2*5*11^8*17*T-5*11^12)*F_
+ 11^5*(T+11^4)*(T^3+11^2*1321*T^2-3*7*11^7*T+11^11))$PolZ
assertEquals(-pol, polExpected)
The above polynomial agrees with the relation that Peter Paule has on his Slide 32 of hia talk at "The 2016 International Number Theory Conference in honor of Krishna Alladi's 60th birthday" (Gainesville, March 17-21, 2016). Compare with formula (8) in \cite{Hemmecke::DancingSambaRamanujan:2018}.
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
With $\mathbb{Z}_{(11)}$ and division by 11¶
-----------------------------------------------------------------
--test:Hemmecke2
-----------------------------------------------------------------
TODO: Introduce vectors in the second component so that we can track whether the just reduced element is divisible by 11.
C ==> IntegerLocalizedAtPrime 11
nn := 22::PP; -- level
idxs := etaFunctionIndices nn
m := 11::PP;
rspec: SPEC := eqSPEC(1,[-1])
orbs := [orb for tt in 0..m-1 | (orb := ORBIT(rspec,m,tt); one? # orb)]
t := first(first orbs) :: NN
Let's compute the expansion (at $\infty$) of $$ F(\tau) = g_r(\tau) q^{\frac{e}{24}} \sum_{k=0}^{\infty}p(m k + t)q^k. $$
Create modular series for p(11n+6)¶
sspec := cofactInfM0(nn, idxs, rspec, m, t)
xf := toX1(C, specM0A1(C)(sspec,rspec,m,t), 'F)
-- == 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=[]]
The generators of the eta-quotients of level 22 are given by
these exponents for the eta-functions (with arguments being the
divisors of 22). The variable mspecs
corresponds to the generators
of $R^\infty(22)$.
mspecs := mSPECSInfM0(nn, idxs);
egens := [specM0A1(C)(spec) for spec in mspecs]
msyms := indexedSymbols("M", #mspecs)
xgens := [toX1(C, x, sym) for x in egens for sym in msyms];
xgens := cons(toX1(C, egens.1, 'T), rest xgens);
xt := xgens.1
xab := samba(xgens)$QSAMBA(C,X1,QTOPRED)
-- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1]
Due to another critical element selection strategy, the resulting polynomial is a bit different.
be := basisElements xab
bas := sort(smallerGrade?, basis xab);
We show that the basis element of degree 3 has coefficients that are all divisible by 11. So we can divide it by 11. The method is to multiply by t and track the cofactors of the basis elements used in this reduction. That this reduction should give 0 is clear, since xab is an algebra basis.
x3 := xt*be.3.1 - 11*(be.3.2 + 6*be.2.1 +10*be.1.1 + 10*xt - 11*be.4.1 - ((1/3)::C)*be.3.1 -11::C*1$X)
assertTrue(zero? x3)
It's still not a representation in terms of the Mi.
p := x1Pol(C,x3)
l := [[e, x] for x in monomials(p)| zero?(e:=exponent leadingCoefficient x)]
assertTrue(not empty? l)
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------
With $\mathbb{Z}_{(11)}$ and different strategy¶
-----------------------------------------------------------------
--test:Hemmecke3
-----------------------------------------------------------------
This test shows divisibility by 11, but uses a specifically tailored computation of an algebra basis and additional mamual reduction.
C ==> IntegerLocalizedAtPrime 11
nn := 22::PP; -- level
idxs := etaFunctionIndices nn
m := 11::PP;
rspec: SPEC := eqSPEC(1,[-1])
orbs := [orb for tt in 0..m-1 | (orb := ORBIT(rspec,m,tt); one? # orb)]
t := first(first orbs) :: NN
Let's compute the expansion (at $\infty$) of $$ F(\tau) = g_r(\tau) q^{\frac{e}{24}} \sum_{k=0}^{\infty}p(m k + t)q^k. $$
Create modular series for p(11n+6)¶
sspec := cofactInfM0(nn, idxs, rspec, m, t)
xf := toX1(C, specM0A1(C)(sspec,rspec,m,t), 'F)
-- == 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=[]]
The generators of the eta-quotients of level 22 are given by
these exponents for the eta-functions (with arguments being the
divisors of 22). The variable mspecs
corresponds to the generators
of $R^\infty(22)$.
mspecs := mSPECSInfM0(nn, idxs);
egens := [specM0A1(C)(spec) for spec in mspecs]
msyms := indexedSymbols("M", #mspecs)
xgens := [toX1(C, x, sym) for x in egens for sym in msyms];
xgens := cons(toX1(C, egens.1, 'T), rest xgens);
Because we observed that using all generators of grade 5 leads to a
series (of grade 3) with leading coefficient 11 in the basis, we
compute a basis with just one of those generators. Of course,
we cannot expect that this leads to a basis by which we can reduce
xf
to zero. However, we hope that we arrive at a zero reduction
if we later use the other grade 5 elements.
#xgens
xgens0 := [xgens.i for i in [1,4,5,6,7]]
xab0 := samba(xgens0)$QSAMBA(C,X1,QTOPRED)
-- numOfGaps:=[216, -1] -- numOfGaps:=[163, -1] -- numOfGaps:=[110, -1] -- numOfGaps:=[57, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1] -- numOfGaps:=[4, -1]
bas := sort(smallerGrade?, basis xab0);
[qetaGrade x for x in bas]
xr0 := reduce(xf,xab0)$QTOPRED(C,X1)
As was to be expected that reduction does not lead to zero.
xab := samba(xgens)$QSAMBA(C,X1,QTOPRED);
xr := reduce(xr0,xab)$QTOPRED(C,X1)
-- numOfGaps:=[216, -1] -- numOfGaps:=[216, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[162, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[109, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[56, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1] -- numOfGaps:=[2, -1]
And, voila, we have a representation that reveals divisibility by 11.
pol := x1Pol(C, xr)
fpol := F - ((1/coefficient(pol,'F,1))::C)*pol
assertTrue(not member?('F, variables(fpol)))
c11s := [exponent leadingCoefficient m for m in monomials fpol]
assertEquals(removeDuplicates [x>0 for x in c11s], [true])
syms := cons('T,rest msyms)
rf := eval(fpol, c+->c*1$A1(C),syms,egens)$PolynomialEvaluation(C,A1 C)
assertTrue(zero?(x1A1(C,xf) - rf))
-------------------------------------------------------------------
--endtest
-------------------------------------------------------------------