QEtaModularGamma1¶
qetamod.spad line 661 [edit on github]
QEtaModularGamma0
provides functions to check modularity for Gamma1
. TODO: conditionCoEtaQuotient?(nn
,rspec,m
,t
) returns true
iff the conditions in Chapter 10 of cite{ChenDuZhao_FindingModularFunctionsRamanujan_2019
} just before Theorem 10.1 are fulfilled. See Definition~ref{def:condition-co-eta-quotient-gamma1
}. These are conditions for the existence of a product of eta- and generalized eta-quotient to exist as a cofactor for a disection of such a quotient. The parameter rbar specifies the generalized eta-quotient via etaQuotient(rbar). These are slight modifications of conditions appearing in Definition 35 of cite{Radu_RamanujanKolberg_2015
} in case the defining eta-quotient is not a generalized one. candidateLevelsCoEtaQuotient(rspec,m
,t
) returns an ascendingly sorted list of the nn
up to 24*m*level(rspec) such that conditionCoEtaQuotient?(nn
,rspec,m
,t
) is true
, i.e. that (nn
,mm
,rbar m
,t
) fulfills the 10 conditions as defined in Section 10 of cite{ChenDuZhao_FindingModularFunctionsRamanujan_2019
}. The parameter rbar specifies the generalized eta-quotient via etaQuotient(rbar). z:=matrixEtaOrderElement(nn
,cusp,idx). The parameter corresponds to the index of a (generalized) eta-quotient, i.e. it can be of the form idx=[delta,g
] or of the form idx=[delta] with g
in the range 0..delta. Then z
is the coefficient of r_
{delta,g
} in cite[Thm
.~4
]{Robins_GeneralizedDedekindEtaProducts_1994
}, except for the case nn=4
, gcd
(denom(cusp),nn
)=2
(or Gamma1
(4)-equivalent) where we return half of this coefficient. If idx=[delta] then z=1/2*matrixEtaOrderElement(nn
,cusp,[delta,0])/2
. and thus corresponds to the coefficient of $r_
delta$ in eqref{eq:order-rbar-non-adjusted} in Theorem~ref{thm:matrixEtaOrderRobins}. Note that Robins refers to an expansion in the uniformizing variable q^
(gcd
(c
,nn
)/nn
) (where cusp=a/c). That is equal to q^
(1/width(c
)$CongruenceSubgroupGamma1
(nn
)) except for the case nn=4
and gcd
(nn
,c
)=2
. In that case the width of the cusp 1/2 is 1 and not 2=4/gcd(4.2). For this case, we deviate from Robins’ coefficients and adapt to an expansion in q
rather than an expansion in q^
(1/2). matrixModular(nn
,idxs) returns a matrix mat with 3 rows and n+2
colums (where n=#idxs such that mat*v=0
for an (extended) exponent vector where the exponents correspond to generalizedEtaFunctionIndices(nn
). mat*v=0
encodes the conditions eqref{eq:generalized-weight}, eqref{eq:generalized-sigmaInfinity}, and eqref{eq:generalized-sigma0
}, but corresponding to the given indices idxs. See also modularGamm1
and modularGamma1?. The first row encodes that the some of the exponents of the pure part must be zero. The second row encodes that order at infinity must be an integer. The third row encodes that the order at 0 must be an integer. For the last two rows, the “is-an-integer” property is encoded by a 1 in the (n+1
)-
th and (n+2
)-
th column, respectively. All other entries are 0. modular?(sspec,rspec,m
,t
) returns true
iff all the conditions of Theorem~10
.1 of cite{ChenDuZhao_FindingModularFunctionsRamanujan_2019
} are fulfilled. Here the parameter sspec stands for the exponents $a_delta$ and $a_{delta,g
}$. See also Theorem~ref{thm:condition-co-eta-quotient-gamma1
}.
- candidateLevelsCoEtaQuotient: (QEtaSpecification, PositiveInteger, NonNegativeInteger) -> List PositiveInteger
from QEtaModularCategory
- conditionCoEtaQuotient?: (PositiveInteger, QEtaSpecification, PositiveInteger, NonNegativeInteger) -> Boolean
from QEtaModularCategory
- cusps: PositiveInteger -> List Cusp
from QEtaModularCategory
- cuspToMatrix: (PositiveInteger, Cusp) -> Matrix Integer
from QEtaModularCategory
- etaCofactorSpace: (PositiveInteger, QEtaSpecification, PositiveInteger, NonNegativeInteger, List List Integer) -> Record(indices: List List Integer, particular: Union(Vector Integer, failed), basis: List Vector Integer)
from QEtaModularCategory
- etaCofactorSpaceSystem: (PositiveInteger, QEtaSpecification, PositiveInteger, NonNegativeInteger, List List Integer) -> Record(qmat: Matrix Fraction Integer, zrels: Vector Integer, qrhs: Vector Fraction Integer)
from QEtaModularCategory
- etaQuotientMonoidSystem: (PositiveInteger, List Cusp, List List Integer) -> Record(qmat: Matrix Fraction Integer, zrels: Vector Integer, qrhs: Vector Fraction Integer)
from QEtaModularCategory
- matrixEtaOrder: (PositiveInteger, List Cusp, List List Integer) -> Matrix Fraction Integer
from QEtaModularCategory
- matrixEtaOrderElement: (PositiveInteger, Cusp, List Integer) -> Fraction Integer
from QEtaModularCategory
- matrixEtaOrderFull: (PositiveInteger, List Cusp, List List Integer) -> Matrix Fraction Integer
from QEtaModularCategory
- matrixEtaOrderRow: (PositiveInteger, Cusp, List List Integer) -> List Fraction Integer
from QEtaModularCategory
- matrixModular: (PositiveInteger, List List Integer) -> Matrix Fraction Integer
from QEtaModularCategory
- minimalLevelCoEtaQuotient: (QEtaSpecification, PositiveInteger, NonNegativeInteger) -> PositiveInteger
from QEtaModularCategory
- modular?: (QEtaSpecification, QEtaSpecification, PositiveInteger, NonNegativeInteger) -> Boolean
from QEtaModularCategory
- modular?: QEtaSpecification -> Boolean
from QEtaModularCategory
- modularOrbit: (QEtaSpecification, PositiveInteger, NonNegativeInteger) -> List NonNegativeInteger
from QEtaModularCategory
- width: (PositiveInteger, Cusp) -> PositiveInteger
from QEtaModularCategory
- width: (PositiveInteger, Matrix Integer) -> PositiveInteger
from QEtaModularCategory