QEtaSpecification¶
qetaspec.spad line 215 [edit on github]
QEtaSpecification helps translate various formats of user data into a common format that specifies a (generalized) eta-quotient.
- 1: %
from MagmaWithUnit
- <=: (%, %) -> Boolean
from PartialOrder
- <: (%, %) -> Boolean
from PartialOrder
- >=: (%, %) -> Boolean
from PartialOrder
- >: (%, %) -> Boolean
from PartialOrder
- ^: (%, Integer) -> %
from Group
- ^: (%, NonNegativeInteger) -> %
from MagmaWithUnit
- ^: (%, PositiveInteger) -> %
from Magma
- allGeneralizedEtaFunctionIndices: PositiveInteger -> List List Integer
allGeneralizedEtaFunctionIndices(nn)returns all indices that can be used. In fact it is the union of etaFunctionIndices(nn) and properGeneralizedEtaFunctionIndices(d) wheredruns over all divisors ofnn.
- allPureExponents: % -> List Integer
allPureExponents(x)returns the exponents of the pure eta-quotient part of the specification. The resulting list correspontds to divisors(x).
- alphaInfinity: (%, %, PositiveInteger, List NonNegativeInteger) -> Integer
alphaInfinity(sspec,rspec,m,orb)implements the definition eqref{eq:alphaInfinity}, i.e. the definition of Radu in cite{Radu_RamanujanKolberg_2015},DOI=10.1016/j.jsc.2017.02.001, https://www.risc.jku.at/publications/download/risc_5338/DancingSambaRamanujan.pdfand can also be extracted from from formula (10.4) of cite{ChenDuZhao_FindingModularFunctionsRamanujan_2019} when the respective cofactor part is taken into account. Note that it does not agree with alpha(t) as defined in cite{ChenDuZhao_FindingModularFunctionsRamanujan_2019}.
- coerce: % -> OutputForm
from CoercibleTo OutputForm
- commutator: (%, %) -> %
from Group
- denom: % -> %
- dilate: (%, PositiveInteger) -> %
- etaFunctionIndices: PositiveInteger -> List List Integer
etaFunctionIndices(nn)returns the divisors ofnas indices in the form [[d] fordin divisorsnn].
- etaPolynomial: (Polynomial Integer, List %) -> Polynomial Integer
etaPolynomial(mpol,mspecs)returns etaPolynomial(mpol,mspecs,”e”,"y").
- etaPolynomial: (Polynomial Integer, List %, String, String) -> Polynomial Integer
etaPolynomial(mpol,mspecs,e,y)returns etaPolynomial(mpol,mspecs,m,e,y) where the common letter for the variables is extracted via first(string(first(variables(first(mpol))))).
- etaPolynomial: (Polynomial Integer, List %, String, String, String) -> Polynomial Integer
etaPolynomial(mpol,mspecs,m,e,y)assumes thatmpolis given in variablesmi(iin 1..#mspecs) that corresponds tomspecs.i. This function replacesmiinmpolby monomial(mspecs.i,e,y).
- etaQuotient: (%, (Integer, Integer) -> OutputForm) -> OutputForm
etaQuotient(rspec, v, e)returns the generalized eta-quotient given byrspecwhere each part is formatted by the functionv.
- etaRationalFunction: (Polynomial Integer, List %) -> Fraction Polynomial Integer
etaRationalFunction(mpol,mspecs)returns etaRationalFunction(mpol,mspecs,”e”).
- etaRationalFunction: (Polynomial Integer, List %, String) -> Fraction Polynomial Integer
etaRationalFunction(mpol,mspecs,e)returns etaRationalFunction(mpol,mspecs,m,e) where the common letter for the variables is extracted via first(string(first(variables(first(mpol))))).
- etaRationalFunction: (Polynomial Integer, List %, String, String) -> Fraction Polynomial Integer
etaRationalFunction(mpol,mspecs,m,e)assumes thatmpolis given in variablesmi(iin 1..#mspecs) that corresponds tomspecs.i. This function replacesmiinmpolby quotient(mspecs.i,e).
- exponent: (%, Vector Integer) -> Integer
exponent(x,idx)returns the exponent ofxcorresponding to the indexidx. The index is either given as a two element list [d,g] with 0<2*g<=d or as [d] or [d,0]. The latter two cases are equivalent and correspond to asking for the exponent of a pure eta-function.
- exponents: (%, List List Integer) -> List Integer
exponents(x,idxs)returns the exponents ofxcorresponding to the indicesidxs.
- expression: (Integer, Integer) -> OutputForm
expression(d,g)generates $eta_{d,g}(tau)$ as an OutputForm. Requirement: 0<2*g<d.
- generalizedEtaFunctionIndices: PositiveInteger -> List List Integer
generalizedEtaFunctionIndices(nn)returns all the indices of a generalized eta-quotient of levelnn(without exponents), i.e. it return the list in eqref{eq:sorted-indices} where the 0 in the second argument is removed. To be precise, it returns [[d1],[d2],…,[dn],[d2,1],…,[d2,f2],…,[dn,1],…,[dn,fn]] wherediis thei-th positive divisor ofnnand fi=ceiling(di/2)-1.
- hash: % -> SingleInteger
from Hashable
- hashUpdate!: (HashState, %) -> HashState
from Hashable
- indices: % -> List List Integer
indices(x)returns the indices ofxcorresponding to non-zero exponents.
- latex: % -> String
from SetCategory
- leftPower: (%, NonNegativeInteger) -> %
from MagmaWithUnit
- leftPower: (%, PositiveInteger) -> %
from Magma
- leftRecip: % -> Union(%, failed)
from MagmaWithUnit
- level: % -> PositiveInteger
- max: (%, %) -> %
from OrderedSet
- min: (%, %) -> %
from OrderedSet
- modularGamma0?: PositiveInteger -> % -> Boolean
modularGamma0?(nn)(x) returnstrueiffxcorresponds to a eta-quotient that is a modular function forGamma_0(nn). It is equivalent to zero?(modularGamma0(x)).
- modularGamma0: PositiveInteger -> % -> Integer
modularGamma0(nn)(x) returns 0 if all conditions are fulfilled thatxspecifies a modular function forGamma0(nn). 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 forR(N,i,j,k,l) on page 226 of cite{Radu_RamanujanKolberg_2015} and to the conditions eqref{eq:sum=0}, eqref{eq:pure-rhoinfinity}, eqref{eq:rho0}, and eqref{eq:productsquare} in qeta.tex. It is an error if pure?(x) isfalse.
- modularGamma1?: PositiveInteger -> % -> Boolean
modularGamma1?(nn)(x) returnstrueiff the generalized eta-quotient corresponding toxis a modular function forGamma_1(nn). It is equivalent to zero?(modularGamma1(nn)(x)).
- modularGamma1: PositiveInteger -> % -> Integer
modularGamma1(nn)(x) returns 0 if the parameters specify a generalized eta-quotient that is modular forGamma1(nn). It returns 1, if condition eqref{eq:generalized-weight} is not met, 2, if condition eqref{eq:rhoInfinity} is not met, and 3 if condition eqref{eq:rho0} does not hold.
- monomial: % -> Polynomial Integer
- monomial: (%, (Integer, Integer) -> OutputForm) -> OutputForm
monomial(spec,v)appliesvto parts(spec) and multiplies the results together.- monomial: (%, String, String) -> Polynomial Integer
- monomialQuotient: (%, (Integer, Integer) -> OutputForm) -> OutputForm
monomialQuotient(spec,v)essentually returns monomial(numer(spec))/monomial(denom(spec))
- numer: % -> %
- one?: % -> Boolean
from MagmaWithUnit
- pretty: % -> OutputForm
pretty(x)returns pretty(x, expression), i.e. showsxas a product of eta-functions.
- pretty: (%, (Integer, Integer) -> OutputForm) -> OutputForm
pretty(x, v)showsxwith possibly negative exponents where the format is given byv.
- prettyQuotient: % -> OutputForm
prettyQuotient(x)returns prettyQuootient(x, expression), i.e. showsxas a quotient of eta-functions.
- prettyQuotient: (%, (Integer, Integer) -> OutputForm) -> OutputForm
prettyQuotient(x)basically returns pretty(numer(x),v)/pretty(denom(x),v), i.e. showsxas a quotient.
- properGeneralizedEtaFunctionIndices: PositiveInteger -> List List Integer
properGeneralizedEtaFunctionIndices(nn)returns the indices of a proper generalized eta-quotient of levelnn. The first entries of the indices are alwaysnn,i.e, it returns [[nn,1],…,[nn,floor(nn/2)]].
- properGeneralizedParts: % -> List List Integer
properGeneralizedParts(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)returnstrueifxcontains no proper generalized eta-functions, i.e. if empty?(generalizedParts(x)).
- pureExponents: % -> List Integer
pureExponents returnsthe exponents of the pure eta-quotient part of the specification. It returns allPureExponents(x) with zeros at the end of the list removed.
- pureParts: % -> List List Integer
pureParts(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$.
- purify: % -> %
- qEtaQuotient: (%, (Integer, Integer) -> OutputForm) -> OutputForm
qEtauotient(rspec,
v) returns qQuotient(rspec,v,e) with e=rhoInfinity(rspec).
- qQuotient: (%, (Integer, Integer) -> OutputForm, Fraction Integer) -> OutputForm
qQuotient(rspec, v, e)returns the generalized eta-quotient given byrspecwhere each part is formatted by the functionv. The whole eta-quotient comes multiplied with aqpower with exponente.
- quotient: % -> Fraction Polynomial Integer
- quotient: (%, String) -> Fraction Polynomial Integer
- recip: % -> Union(%, failed)
from MagmaWithUnit
- rho0: (PositiveInteger, %) -> Fraction Integer
rho0(mm,x)returnsmm*rhobar0(x) See eqref{eq:rhozero} in qeta.tex.
- rho0ProperGeneralized: (PositiveInteger, %) -> Fraction Integer
rho0ProperGeneralized(mm,x)returns mm*rhobar0ProperGeneralized(x). See eqref{eq:rhozero} in qeta.tex.
- rho0Pure: (PositiveInteger, %) -> Fraction Integer
rho0Pure(mm,x)returnsmm*rhobar0(x). See eqref{eq:rhozero} in qeta.tex.
- rhobar0: % -> Fraction Integer
rhobar0(x)returns the value corresponding to eqref{eq:rhobarzero} in qeta.tex.
- rhobar0ProperGeneralized: % -> Fraction Integer
rhobar0ProperGeneralized(x)returns the value ofrhobar0(x) considering only the properGeneralizedParts ofx. See eqref{eq:rhobarzero} in qeta.tex.
- rhobar0Pure: % -> Fraction Integer
rhobar0Pure(x)returns the value ofrhobar0(x) considering only the pureParts ofx. See eqref{eq:rhozero} in qeta.tex.
- rhoInfinity: % -> Fraction Integer
rhoInfinity(x)returns the value corresponding to eqref{eq:rhoinfty} in qeta.tex.
- rhoInfinity: (%, PositiveInteger, NonNegativeInteger) -> Fraction Integer
rhoInfinity(x,m,k)returns the value corresponding to $frac{k+rho_infty(r)}{m}$ in eqref{eq:alphaInfinity} in qeta.tex. This is, in fact, part of eqref{eq:beta}.
- rightPower: (%, NonNegativeInteger) -> %
from MagmaWithUnit
- rightPower: (%, PositiveInteger) -> %
from Magma
- rightRecip: % -> Union(%, failed)
from MagmaWithUnit
- sample: %
from MagmaWithUnit
- smaller?: (%, %) -> Boolean
from Comparable
- specDelta: List Integer -> PositiveInteger
If
xis a specification andl=[d,e] orl=[d,g,e] is an element of parts(x), then specDelta(l) returnsd.
- specExponent: List Integer -> Integer
If
xis a specification andl=[d,e] orl=[d,g,e] is an element of parts(x), then specExponent(l) returnse.
- specification: (Fraction Polynomial Integer, String) -> %
specification(f,e)returns nspec/dspec for nspec:=specification(numer(f),e) and dspec:=specification(denom(f),e).
- specification: (List List Integer, List Integer) -> %
specification(idxs,le)returns specification(rbar) where rbar is [concat(i,e) foreinleforiinidxs] without the entries whose corresponding exponenteis zero.
- specification: (List List Integer, Vector Integer) -> %
specification(idxs,v)returns specification(idxs,members(v)). Input condition: #idxs=#v.
- specification: (List PositiveInteger, List Integer) -> %
specification(divs, r)returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ wheredruns overdivs. The two input lists are supposed to be of the same length.
- specification: (Polynomial Integer, String) -> %
specification(p,e)assumes thatpis a polynomial with only one monomial. Furthermore, it assumes thatpis in the variables ed or ed_g and 0<=g<=d) and no other variables. The coefficient of this monomial is ignored. The function collects thed'sandg'sand the corresponding exponent of the variable and creates the respective eta-specification.
- specification: (PositiveInteger, List Integer) -> %
specification(mm, r)returns the specification for the eta-quotient $prod_{d} eta(d*tau)^{r_d}$ wheredruns over all divisors ofmm.- specification: Fraction Polynomial Integer -> %
- specification: List List Integer -> %
specification(rbar)returns the specification of a generalized eta-quotient given by a listlof (index,exponent) pairs where an index can be either a positive integerdor a pair (d,g) with 0<=g<=d. In more detail an elementlofrbarcan 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$. Note that [d,g,e] will silently be translated to [d,d-g,e] if 2*g>d. Note that you can apply the function purify to such an eta-quotient. Ifrbaris empty, then the result corresponds to 1.- specification: Polynomial Integer -> %
- specIndex: List Integer -> List Integer
If
xis a specification andlis an element of parts(x), then specIndex(l) returns [d] ifl=[d,e] and [d,g] ifl=[d,g,e].
- specSubindex: List Integer -> Integer
If
xis a specification andlis an element of parts(x), then specSubindex(l) returnsg, iflis of the form [d,g,e] and 0 ofl=[d,e].
- var: Symbol -> (Integer, Integer) -> OutputForm
var(v)(d,g) generates vd_g as an OutputForm. Requirement: 0<2*g<d.
- varPower: (List Integer, (Integer, Integer) -> OutputForm) -> OutputForm
varPower([d,g,e], v)returnsv(d,g)^e as an OutputForm.
- varsub: Symbol -> (Integer, Integer) -> OutputForm
varsub(v)(d,g) generates subscript(v,[d,g]) as an OutputForm. Requirement: 0<2*g<d.
- weaklyModularGamma0?: PositiveInteger -> % -> Boolean
weaklyModularGamma0?(nn)(x) returnstrueiff the eta-quotient corresponding toris a weakly modular function forGamma_0(nn). It is equivalent to zero?(weaklyModularGamma0(nn,x)).
- weaklyModularGamma0: PositiveInteger -> % -> Integer
We refer 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:pure-rhoinfinity}, eqref{eq:pure-rho0}, and eqref{eq:productsquare} in qeta.tex where condition eqref{eq:sum=0} is replaced (according to the Theorem of Gordon-Hughes-Newman, see cite{Ono_ParityOfThePartitionFunctionInArithmeticProgression_1996}) by $sum_{d|nn}r_d= 2k$ or $weight(r)=k$ for some integerk.weaklyModularGamma0(nn)(r) returns 0 if all conditions are fulfilled. Otherwise it returns a positive number in the range 1 to 4 that corresponds to the condition that is not met. It is equivalent to check whether there is an extensionvofrsuch that matrixModular(nn)*vis 0 (except for the first row where an integer weight is checked).
- weaklyModularGamma1?: PositiveInteger -> % -> Boolean
weaklyModularGamma1?(nn)(x) returnstrueiff the generalized eta-quotient corresponding toxis a weakly modular function forGamma_1(nn). It is equivalent to zero?(weaklyModularGamma1(nn)(x)).
- weaklyModularGamma1: PositiveInteger -> % -> Integer
modularGamma1(nn)(x) returns 0 if the parameters specify a generalized eta-quotient that is weakly modular forGamma1(nn). It returns 1, if (instead of condition eqref{eq:generalized-weight}) $weight(x)$ is not an integer, 2, if condition eqref{eq:rhoInfinity} is not met, and 3 if condition eqref{eq:rho0} does not hold.