Creation of Spaces of Algebraic Modular Forms

In the current implementation only algebraic modular forms for orthogonal, special orthogonal and unitary groups are supported. In future releases it will be possible to compute algebraic modular forms for other algebraic groups.

AlgebraicModularForms(G) : GrpRed -> ModFrmAlg
AlgebraicModularForms(G, W) : GrpRed, GrpRep -> ModFrmAlg
AlgebraicModularForms(G, W, L) : GrpRed, GrpRep, AlgMatElt -> ModFrmAlg
AlgebraicModularForms(G, W, L) : GrpRed, GrpRep, LatNF -> ModFrmAlg
AlgebraicModularForms(G, W, L) : GrpRed, GrpRep, Lat -> ModFrmAlg
    GramFactor: RngIntElt               Default: 2
This creates the space of algebraic modular forms for the reductive group G with weight W and level L. Here the level L should be a lattice in the underlying polar space on which G is acting, and W should be a representation of the group G.

GramFactor indicates the relation between the bilinear form and the quadratic or hermitian form. By default, the GramFactor is 2, meaning that the bilinear form on the lattice is B(x, y) = Q(x + y) - Q(x) - Q(y) and not (1/2) B(x, y).

If the weight W is not specified, uses the trivial weight representation. If the level L is not specified, takes the standard maximal even integral lattice in the underlying polar space.

AlgebraicModularForms(data) : List -> ModFrmAlg
Returns an algebraic modular forms object described by data, where data is formed as a list of pairs, each pair consisting of a field name and field value. The possible fields are "GROUP", "WEIGHT", "LEVEL", "FIXED_SUBSPACES", "GENUS", "HECKE" and "EIGENFORMS". The fields "GROUP" and "WEIGHT" must appear, and their corresponding values G and W, should be of type GrpRed and GrpRep, respectively, specifying the reductive group and the weight representation. The other fields are all optional. The value of the field "GENUS" should be of type SymGen and consist of the genus on which M is based. The value of the field "LEVEL" should be of type LatNF or Lat and consist of a lattice representing the level. The value of the field "FIXED_SUBSPACES" should be of type SeqEnum[GrpRep], consisting of the fixed subspaces in the representation space under the action of the automorphism groups. The value of the field "HECKE" should be of type ModHecke and consist of the Hecke module data of M. The value of the field "EIGENFORMS" should be a list of tuples (v, e, aP, k, c), each of length 4 consisting of a vector v in the underlying vector space, a boolean e specifying whether this is an eigenform, a list of Hecke eigenvalues aP, k given as a list of length 3 of arrays, the first lists the positive integers k, the second lists the ideals, using sequences of sequences of integers representing generators of the ideal P, and the third lists the eigenvalues given as array of arrays of rational numbers.
OrthogonalModularForms(Q, W) : AlgMatElt, GrpRep -> ModFrmAlg
OrthogonalModularForms(Q, W) : AlgMatElt, [RngIntElt] -> ModFrmAlg
OrthogonalModularForms(Q) : AlgMatElt -> ModFrmAlg
    Special: BoolElt                    Default: false
    d: RngIntElt                        Default: 1
This creates the space of orthogonal modular forms for G = OO(V), where V is a quadratic space with Gram matrix Q, with weight W. Here W should be a representation of the group G, or an irreducbile highest weight representation, represented as a non-increasing sequence of integers. If the weight W is not specified, uses the trivial weight representation.

If Special is set to true, takes G = SO(V) instead. The integer d specifies a twist by a character applied to the spinor norm, determined by a divisor d of the discriminant of the lattice. By default d = 1, meaning the representation is untwisted.

OrthogonalModularForms(F, Q, W, p) : Fld, AlgMatElt, [RngIntElt], RngIntElt -> ModFrmAlg
    Special: BoolElt                    Default: false
    d: RngIntElt                        Default: 1
This creates the space of orthogonal modular forms for G = OO(V), where V is a quadratic space with Gram matrix Q over a field F, with weight W and coefficient field in characteristic p. Here W ahould be an irreducbile highest weight representation represented as a non-increasing sequence of integers, and p is either a prime or 0.

If Special is set to true, takes G = SO(V) instead. The integer d specifies a twist by a character applied to the spinor norm, determined by a divisor d of the discriminant of the lattice. By default d = 1, meaning the representation is untwisted.

OrthogonalModularForms(L) : Lat -> ModFrmAlg
    weight: [RngIntElt]                 Default: [0]
    Special: BoolElt                    Default: false
    d: RngIntElt                        Default: 1
This creates the space of orthogonal modular forms for the quadratic space V containing L, of level L.

The parameter weight specifies a highest weight representation, which defaults to the trivial weight representation. If Special is set to true, takes G = SO(V) instead. The integer d specifies a twist by a character applied to the spinor norm, determined by a divisor d of the discriminant of the lattice. By default d = 1, meaning the representation is untwisted.

Example ModFrmAlg_creation-example (H151E1)

Here we create some spaces of modular forms for orthogonal groups.
> Q := SymmetricMatrix([6,0,2,-4,-1,12,3,1,6,12]);
> M := OrthogonalModularForms(Q);
This returns instantly because no nontrivial computations have been done yet.

We now define a space with level of rank 4 and discriminant 372.

> Q := SymmetricMatrix([2,0,4,1,1,10,1,2,1,20]);
> M := OrthogonalModularForms(LatticeWithGram(Q));
This does not return instantly, as it constructs the underlying quadratic space and reductive group for the lattice. We can find out which lattices are being used as genus representatives (basis for this space of orthogonal modular forms).
> Lambdas := [GramMatrix(ZLattice(Lambda)) : Lambda in GenusReps(M)];
> Lambdas;
[
    [ 2  0  1  1]
    [ 0  4  1  2]
    [ 1  1 10  1]
    [ 1  2  1 20],
    [ 4 -1 -1  1]
    [-1  6  3 -1]
    [-1  3  8  1]
    [ 1 -1  1 10],
    [ 2  1  0 -1]
    [ 1  8 -1 -4]
    [ 0 -1 10 -2]
    [-1 -4 -2 12],
    [ 4 -1 -1  0]
    [-1  4  2 -1]
    [-1  2  6  2]
    [ 0 -1  2 20]
]
UnitaryModularForms(Q, W) : AlgMatElt, GrpRep -> ModFrmAlg
UnitaryModularForms(Q, W) : AlgMatElt, [RngIntElt] -> ModFrmAlg
UnitaryModularForms(Q) : AlgMatElt -> ModFrmAlg
This creates the space of orthogonal modular forms for G = UU(V), where V is a hermitian space with Gram matrix Q, with weight W, and level a maximal integral lattice. Here W should be a representation of the group G, or an irreducbile highest weight representation, represented as a non-increasing sequence of integers. If the weight W is not specified, uses the trivial weight representation.
UnitaryModularForms(F, Q, W, p) : Fld, AlgMatElt, [RngIntElt], RngIntElt -> ModFrmAlg
UnitaryModularForms(F, n, W, p) : Fld, RngIntElt, [RngIntElt], RngIntElt -> ModFrmAlg
UnitaryModularForms(F, n, W) : Fld, RngIntElt, GrpRep -> ModFrmAlg
UnitaryModularForms(F, n) : Fld, RngIntElt -> ModFrmAlg
This creates the space of unitary modular forms for G = UU(V), where V is a hermitian space over a field F, either standard of dimension n, or given by its Gram Matrix Q, with weight W and coefficient field in characteristic p. Here W should be either a representation of G, or an irreducbile highest weight representation represented as a non-increasing sequence of integers, and p is either a prime or 0. The level is taken to be a maximal integral lattice.
V2.29, 21 October 2025