QEtaIdealCategory C¶

QEtaIdealCategory(C) is a category that implements a number of functions connected to relations among Dedekind eta-functions. It allows for differend implementation of the function relationsIdealGenerator, which does the main job of computing the generators of the ideal of relations of modular eta-quotients having a pole at most at infinity.

etaLaurentIdealGenerators: (PositiveInteger, List QEtaSpecification, List Polynomial C) -> List Polynomial C

etaLaurentIdealGenerators(level, bspecs, eqigens) assumes that epigens is a list of polynomials in the variables M_i, for example, eqigens = etaQuotientIdealGenerators(level, bspecs) and replaces each of the M_i by the corresponding product of E_d and Y_d variables given by bspecs.i. Positive entries in bspecs.i correspond to E variables and negative entries to Y variables, the Y variables correspond to inverses of eta-functions. The generators E_d*Y_d-1 for each divisor of level are also added to the resulting polynomials from above.

etaLaurentIdealGenerators: PositiveInteger -> List Polynomial C

etaLaurentIdealGenerators(level) returns etaLaurentIdealGenerators(level, bspecs, eqigens) for bspecs := etaQuotientMonoidSpecifications(level) and eqigens := etaQuotientIdealGenerators(level, bspecs)

etaQuotientIdealGenerators: (PositiveInteger, List QEtaSpecification) -> List Polynomial C

etaQuotientIdealGenerators(level, bspecs) returns polynomials in the variables M_i (where i runs from 1 to #bspecs) that generate the ideal of all relations of the eta-quotients of the given level where bspecs is assumed to be the specifications of the eta-quotients given by etaQuotientMonoidSpecifications(level) from the package QEtaQuotientSpecifications4ti2. This function just sets up a the q-series and then calls relationsIdealGenerators on these series.

etaQuotientIdealGenerators: PositiveInteger -> List Polynomial C

etaQuotientIdealGenerators(level) returns etaQuotientIdealGenerators(level, bspecs) where bspecs is given by bspecs := etaQuotientMonoidSpecifications(level) from the package QEtaQuotientSpecifications4ti2.

etaRelations: (PositiveInteger, List Polynomial C) -> List Polynomial C

etaRelations(level, eligens) eliminates the Y variables from the input and returns the resulting Groebner basis.

etaRelations: PositiveInteger -> List Polynomial C

etaRelations(n) returns etaRelations(n, etaLaurentIdealGenerators(n)). The result describes the ideal of all relations among the eta-functions of level n where the variable E_d stands for the eta-function $eta(d*tau)$.

laurentRelations: (List Symbol, List Symbol) -> List Polynomial C

laurentRelations(esyms, ysyms) returns [e*y-1 for e in esyms for y in ysyms].

laurentRelations: PositiveInteger -> List Polynomial C

laurentRelations(level) returns laurentRelations(esyms, ysyms) where esyms and ysyms correspond to the variables E_d and Y_d indexed by the divisors of level.

relationsIdealGenerators: List Finite0Series C -> List Polynomial C

relationsIdealGenerators(qseries) returns a set of generators in the variables M_i of the ideal of all relations among the given qseries. The initial series correspond to the variables M_i in the output of this function. We assume that qseries is a list of Laurent series in q that correspond to modular functions for $Gamma_0(N)$ having a pole (if any) at infinity only. The samba algorithm can be used in its extended form in order to also get a representation of resulting algebra basis in terms of the original elements. Algoritm samba is described in: Ralf Hemmecke, “Dancing Samba with Ramanujan Partition Congruences”, Journal of Symbolic Computation, 84, 2018. See cite{Hemmecke+Radu:EtaRelations:2019} for more detail and the package QEtaIdealHemmecke.