# QEtaSpecification¶

QEtaSpecification helps translate various formats of user date into a common format that specifies a (generalized) eta-quotient.

1: %

from MagmaWithUnit

*: (%, %) -> %

from Magma

/: (%, %) -> %

from Group

=: (%, %) -> Boolean

from BasicType

^: (%, Integer) -> %

from Group

^: (%, NonNegativeInteger) -> %

from MagmaWithUnit

^: (%, PositiveInteger) -> %

from Magma

~=: (%, %) -> Boolean

from BasicType

allPureExponents: % -> List Integer

allPureExponents(x) returns the exponents of the pure eta-quotient part of the specification. The resulting list has as many entries as divisors(x).

coerce: % -> OutputForm
commutator: (%, %) -> %

from Group

conjugate: (%, %) -> %

from Group

denom: % -> %

denom(x) returns the part of the specification that corresponds to negative exponents. It holds: x=numer(x)/denom(x).

divisors: % -> List PositiveInteger

divisors(x) returns divisors(level(x)). This data is precomputed and stored inside the structure.

etaQuotientSpecification: (List PositiveInteger, List Integer) -> %

etaQuotientSpecification(divs, r) returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ where d runs over divs. The two input lists are supposed to be of the same length.

etaQuotientSpecification: (PositiveInteger, List Integer) -> %

etaQuotientSpecification(mm, r) returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ where d runs over all divisors of mm.

etaQuotientSpecification: (PositiveInteger, List List Integer) -> %

etaQuotientSpecification(mm, rbar) returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ where [d,rd] are the elements of rbar. The eta-quotient is considered to belong to level mm.

etaQuotientSpecification: List List Integer -> %

etaQuotientSpecification(rbar) returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ where [d,rd] are the elements of rbar.

generalizedEtaQuotientSpecification: (PositiveInteger, List List Integer) -> %

generalizedEtaQuotientSpecification(mm, rbar) returns the specification of a generalized eta-quotient given by a list of (index, exponent) pairs where an index can be either a divisor of mm or a pair (d,g) of a divisor d and a number g (0<g<d/2). In more detail an element l of rbar can have the following form: a) [d[ -- this is equivalent to [d,1], b) [d,e] -- stands for $eta(d*tau)^e$, c) [d,g,e] -- stands for $eta_{d,g}^{[R]}(tau)^e$. In order to ease specifications, we automatically translate [2*g,g,e] into the pair [[g,2*e],[2*g,-2*e]].

generalizedEtaQuotientSpecification: (PositiveInteger, List List Integer, List Integer) -> %

generalizedEtaQuotientSpecification(mm,idxs,le) returns generalizedEtaQuotientSpecification(mm, rbar) where rbar is [concat(i,e) for e in le for i in idxs] without the entries whose corresponding exponent e is zero.

generalizedEtaQuotientSpecification: List List Integer -> %

generalizedEtaQuotientSpecification(rbar) returns generalizedEtaQuotientSpecification(mm, rbar) for mm=lcm[first l for l in rbar]. mm is 1 if rbar is empty.

hash: % -> SingleInteger

from SetCategory

hashUpdate!: (HashState, %) -> HashState

from SetCategory

inv: % -> %

from Group

latex: % -> String

from SetCategory

leftPower: (%, NonNegativeInteger) -> %

from MagmaWithUnit

leftPower: (%, PositiveInteger) -> %

from Magma

leftRecip: % -> Union(%, failed)

from MagmaWithUnit

level: % -> PositiveInteger

level(x) returns either the level that was given at specification time or the lcm of all the indices.

modularGamma0?: % -> Boolean

modularGamma0?(x) returns true iff x corresponds to a eta-quotient that is a modular function for Gamma_0(level(x)). It is equivalent to zero?(modularGamma0(x)).

modularGamma0: % -> Integer

modularGamma0(x) returns 0 if all conditions are fulfilled that x specifies a modular function for Gamma0(level(x)). Otherwise it returns a positive number in the range 1 to 4 that corresponds to the condition that is not met. This corresponds to the conditions given for R(N,i,j,k,l) on page 226 of cite{Radu:RamanujanKolberg:2015} and to the conditions eqref{eq:sum=0}, eqref{eq:sigmainfinity}, eqref{eq:sigma0}, and eqref{eq:productsquare} in qeta.tex. It is an error if pure?(x) is false.

modularGamma1?: % -> Boolean

modularGamma1?(x) returns true iff the generalized eta-quotient corresponding to x is a modular function for Gamma_1(level(x)). It is equivalent to zero?(modularGamma1(x)).

modularGamma1: % -> Integer

modularGamma1(x) returns 0 if the parameters specify a generalized eta-quotient that is modular for Gamma1(level(x)). It returns 1, if condition eqref{eq:generalized-weight} is not met, 2, if condition eqref{eq:generalized-sigmaInfinity} is not met, and 3 if condition eqref{eq:generalized-sigma0} does not hold.

numer: % -> %

numer(x) returns the part of the specification that corresponds to positive exponents.

one?: % -> Boolean

from MagmaWithUnit

properGeneralizedPart: % -> List List Integer

properGeneralizedPart(x) returns the list of indicies and exponents of the proper generalized part of the (generalized) eta-quotient. Each element is a 3-element list of the form [d, g, e] that stands for $eta_{d,g}^{[R]}(tau)^e$.

pure?: % -> Boolean

pure?(x) returns true if x contains no proper generalized eta-functions, i.e. if empty?(generalizedPart(x)).

pureExponents: % -> List Integer

pureExponents returns the exponents of the pure eta-quotient part of the specification. Zeros at the end of the list are removed.

purePart: % -> List List Integer

purePart(x) returns the part of the (generalized) eta-quotient that corresponds to pure eta-functions. Each element of the result is a two-element list [d,e] that stands for $eta(d*tau)^e$.

recip: % -> Union(%, failed)

from MagmaWithUnit

rightPower: (%, NonNegativeInteger) -> %

from MagmaWithUnit

rightPower: (%, PositiveInteger) -> %

from Magma

rightRecip: % -> Union(%, failed)

from MagmaWithUnit

sample: %

from MagmaWithUnit

sigma0: % -> Integer

sigma0(x) returns the value corresponding to eqref{eq:sigmazerobar} in qeta.tex or to eqref{eq:sigmazero} for the pure eta-quotient case.

sigmaInfinity: % -> Fraction Integer

sigmaInfinity(x) returns the value corresponding to eqref{eq:sigmainftybar} in qeta.tex or to eqref{eq:sigmainfty} for the pure eta-quotient case.

BasicType

CommutativeStar

Group

Magma

MagmaWithUnit

Monoid

SemiGroup

SetCategory

TwoSidedRecip

unitsKnown