# QEtaIdealCategory C¶

qetaicat.spad line 132 [edit on github]

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.