QEtaModularPackage QMOD¶
qetamodpkg.spad line 124 [edit on github]
QMOD: QEtaModularCategory
undocumented
- etaCofactorInfinity: (PositiveInteger, List List Integer, List QEtaSpecification) -> QEtaSpecification
etaCofactorInfinity(nn,idxs,rspecs)
returns a specification sspec such that sspec has only indices fromidxs
and for every rspec fromrspecs
modular?(sspec,rspec,1,0)$QMOD istrue
and etaQuotient(sspec,rspec,1,0)$SymbolicModularEtaQuotient(QMOD) corresponds to a modular function with poles only at infinity and with smallest pole order. It is an error if allrspecs
cannot be made modular by a common cofactor, i.e. we require that for every rspec inrspecs
the specification (rspec/rspecs.1) specifies a modular eta-quotient.
- etaCofactorInfinity: (PositiveInteger, List List Integer, QEtaSpecification, PositiveInteger, NonNegativeInteger) -> QEtaSpecification
etaCofactorInfinity(nn,idxs,rspec,m,t)
returns a specification sspec such that sspec has only indices fromidxs
, modular?(sspec,rspec
,m
,t
)$QMOD and etaQuotient(sspec,rspec
,m
,t
)$SymbolicModularEtaQuotient(QMOD) corresponds to a modular function with poles only at infinity and with smallest pole order. It returns etaCofactorNoPoles(nn
,idxs
,rspec
,m
,t
,nopolesat) for nopolesat:=remove(ininity$Cusp,cusps(nn
)$QMOD).
- etaCofactorNoPoles: (PositiveInteger, List List Integer, QEtaSpecification, PositiveInteger, NonNegativeInteger, List Cusp) -> QEtaSpecification
etaCofactorNoPoles(nn,idxs,rspec,m,t,nopolesat)
returns a specification sspec such that sspec has only indices fromidxs
, modular?(sspec,rspec
,m
,t
)$QMOD and etaQuotient(sspec,rspec
,m
,t
)$SymbolicModularEtaQuotient(QMOD) corresponds to a modular function with no poles at the cuspsnopolesat
and with minimal length order vector at these cusps.
- etaCofactorNoPolesSystem: (Record(level: PositiveInteger, indices: List List Integer, particular: Union(Vector Integer, failed), basis: List Vector Integer), List Integer, List Cusp) -> Record(zmat: Matrix Integer, zrels: Vector Integer, zrhs: Vector Integer, zsgn: List Integer)
etaCofactorNoPolesSystem(bspecs,ords,nopolesat)
is used as a second step to etaCofactorSpace for the computation of a cofactor that has no poles at the cuspsnopolesat
, for example in etaCofactorInfinity or etaCofactorNoPoles. The inputbspecs
(usually) represents the group generators for the group of all eta-quotients that are modular functionswrt
. QMOD (and poles only at the cusps), i.e. they come from ecs:=etaCofactorSpace(nn
,idxs,rspec,m
,t
); bspecs:=[etaQuotientSpecification(nn
,idxs,x
) forx
in ecs.basis] (see implementation of etaCofactorInfinity). It returns anr
timesc
matrix A and a right-hand sidev
for a system A*x>=v where r=#ords=#nopolesat, c=#bspecs and the right-hand side isv=
-ords
(which is the expansion orders at the cuspsnopolesat
of (sspec,rspec,m
,t
) where sspec comes from the particular solution of ecs) and A is the expansion orders of the basis elements given bybspecs
(one order column for each element of bspec). The rows are indexed by the cuspsnopolesat
, which also means thatords
corresponds to order atnopolesat
for each entry respectively. A solution to this system should give rise to an sspec such that (sspec,rspec,m
,t
) specifies a modular function with no poles at the cuspsnopolesat
.
- etaCofactorSpace: (PositiveInteger, List List Integer, QEtaSpecification, PositiveInteger, NonNegativeInteger) -> Record(level: PositiveInteger, indices: List List Integer, particular: Union(Vector Integer, failed), basis: List Vector Integer)
etaCofactorSpace(nn,idxs,rspec,m,t)
returns etaCofactorSpace(nn
,idxs
,rspec
,m
,t
,cusps(nn
)$QMOD).
- etaCofactorSpace: (PositiveInteger, List List Integer, QEtaSpecification, PositiveInteger, NonNegativeInteger, List Cusp) -> Record(level: PositiveInteger, indices: List List Integer, particular: Union(Vector Integer, failed), basis: List Vector Integer)
etaCofactorSpace(nn,idxs,rspec,m,t,spitzen)
computes ecs:=etaCofactorSpace(nn
,idxs
,rspec
,m
,t
)$QMOD and then applies minimizeOrderVectors to ecs.basis and minimizeVector to ecs.particular (with the just computed minimized basis) and returns the result as an ECS (eta cofactor space) structure. minimizeOrderVectors is applied to ecs.basis even if ecs.particular is “failed”. For the special case that spitzen=cusps(``nn`)$QMOD`, only those integer-linear combination of ecs.basis elements are returned that give rise to sspec such that (sspec,``rspec`,m
,t
)` is a constant modular function. This list might be empty.
- minimizeOrderVectors: (PositiveInteger, List List Integer, List Vector Integer, List Cusp) -> List Vector Integer
mbasis:=minimizeOrderVectors(
nn
,idxs,hbasis,spitzen) returns aZZ
-linear combinations of the basis given by hbasis such that (1) mbasis generates the sameZZ
-module as hbasis, (2) the order vectors of mbasis are not longer than the order vectors of hbasis and possibly as small as (cheaply) computable. Here an “order vector of e” is meant to be the orders at the cusps given by spitzen of the) eta-quotient given by etaQuotient(nn
,idx,e
) (without considering the (c*tau+d) factor). Minimality of the lengths is not required. Note that an input condition is that the elements of hbasis must represent modular eta-quotients with poles only at the cusps.
- qetaGrades: (QEtaSpecification, QEtaSpecification, PositiveInteger, NonNegativeInteger) -> List Integer
qetaGrades(sspec,rspec,m,t)
returns qetaGrades(y
) where y=etaQuotient(sspec
,rspec
,m
,t
)$SymbolicModularEtaQuotient(QMOD).
- qetaGrades: (QEtaSpecification, QEtaSpecification, PositiveInteger, NonNegativeInteger, List Cusp) -> List Integer
qetaGrades(sspec,rspec,m,t,spitzen)
returns qetaGrades(y
) where y=etaQuotient(sspec
,rspec
,m
,t
,spitzen
) from SymbolicModularEtaQuotient(QMOD).
- qetaGrades: SymbolicModularEtaQuotient QMOD -> List Integer
qetaGrades(y)
returns the poleorders of the modular function corresponding toy
. In the special case whene
is the expansion and qetaGrade(e
.c
) is less than 0 for every cuspc
in transformationMatrices(y
), the function returns a value of-1
for each cusp although this might not be thetrue
poleorder of the expansion, it rather is the value for the case thaty
represents zero. This special treatment avoids running into an infinite loop ify
represents the zero function. If the dissection is done with multiplier 1, then this function computes the grades without an explicit series expansion.
- reduceSystem: Record(zmat: Matrix Integer, zrels: Vector Integer, zrhs: Vector Integer, zsgn: List Integer) -> Record(zmat: Matrix Integer, zrels: Vector Integer, zrhs: Vector Integer, zsgn: List Integer)
reduceSystem([A,v])
returns a matrixB
and a right-hand sidew
such that A*x>=
v
andB*x
>=
w
have the same solutions, butB
has duplicate rows removed. The order of distinct rows is kept.