The theta series of an integral lattice L is (the q-expansion of) a modular form whose weight is half the dimension of the lattice, and whose level and nebentypus are determined by the quotient L^# /L. The space of forms with given weight, level and character is finite dimensional, which means the theta series is uniquely characterised as an element of that space from knowledge of finitely many of its coefficients.
The routine described below carries this out explicitly: given an integral lattice, it returns an element of a Magma space of modular forms, Moreover this is done with the least possible effort spent determining coefficients via lattice enumeration. Several ideas are used here, the most important of which is that linear constraints can be obtained from knowing coefficients of the theta series of L and of its partial dual lattices; in practice, one needs a certain number of coefficients in total, and the EnumerationCost functionality is useful for balancing how many to compute for each of the duals.
We say L is q-modular if it is isomorphic to its qth partial dual Lq. Knowledge that modularities exist is of some use in the algorithm, because q-modularity clearly implies that L and Lq have the same theta series.
Normalisation of theta series: We use a normalisation that is most natural in this context, in order that the theta series is a modular form on Γ0(N) with the level N as small as possible. In this section, the theta series of an even integral lattice L will mean Σv ∈L q1/2 |v|2, while the theta series of an odd integral lattice L will mean Σv ∈L q|v|2, where q = e2 i π z.
Given an integral lattice L, this returns the space of modular forms which contains the theta series of L. Note: the theta series is normalised as described above.
KnownTheta: RngSerPowElt Default:
KnownDualThetas: SeqEnum[Tup] Default:
KnownModularities: Set[RngIntElt] Default:
ComputeModularities: Set[RngIntElt] Default:
Given an integral lattice L, this returns the theta series of L as a modular form in the appropriate space: more precisely, in ThetaSeriesModularFormSpace(L). Note: the theta series is normalised as described above.If some coefficients of the theta series of L are already known, this information may be specified by setting the optional argument KnownTheta to be a power series f, indicating that L has theta series equal to f up to the precision of f.
More generally, if coefficients are known for any partial dual lattices, these may be specified by setting KnownDualThetas. This argument must be a sequence of tuples of the form <q, fq>, indicating that the qth partial dual Lq has theta series equal to fq up to the precision of fq. (Warning: care must be taken to use the expected normalisation of the partial duals here.)
If L is known to possess modularities, the optional argument KnownModularities may be set equal to any set of integers q such that L is q-modular (as defined above). In addition, ComputeModularities may be specified to control whether the function checks for q-modularities (for possible q, that are not listed as KnownModularities); its value may be a boolean, or a set of integers.