QEtaQuotientSortPackage QMOD

qetaqmspecs.spad line 114 [edit on github]

QEtaQuotientSortPackage provides sorting functions for (modular) eta-quotients.

lessLex?: (List List Integer, List List Integer) -> Boolean

lessLex?(w1,w2) returns false if w1=w2. It returns true if first(w1)<first(w2) or (first(w1)=first(w2) and lessLex?(rest(w1),rest(w2))).

sortByComponentGrade: (List QEtaSpecification, List Cusp) -> List QEtaSpecification

sortByComponentGrade(specs,spitzen) computes the level nn, the common indices idxs and the respective exponent vectors gens and then sorts the specs like sortByComponentGrade(nn,idxs,gens,spitzen).

sortByComponentGrade: (PositiveInteger, List List Integer, List Vector Integer, List Cusp) -> List Vector Integer

sortByComponentGrade(nn,idxs,gens,spitzen) returns gens sorted in the following way. Note that spec=etaQuotientSpecification(nn,idxs,s) is for each s from gens supposed to be a (modular) eta-quotient specification. Let grd(s)=g=(g1,…,gk) be the grades (=poleorders) at the cusps (given by spitzen) of a (modular) eta-specification s, sw(g)=sort(>,[[g1,1],…[gk,k]]), len2(g)=reduce(+,[l(1)z^2 for l in sw(g)],0), and w(g)=cons([len2(g),0],sw(g)), then s1<s2 is true if lessLex?(w(grd(s1)),w(grd(s2))), s1<s2 is false if lessLex?(w(grd(s2)),w(grd(s1))). If w(grd(s1))=w(grd(s2), then ties are broken by a similar comparison at setDifference(cusps(nn),spitzen) where the cusps remain in the order given by cusps$QMOD.