Basic Properties#

BaseRing(M): ModFrmAlg -> Rng#
CoefficientRing(M): ModFrmAlg -> Rng#

The ring of coefficients of the space \(M\).

FieldOfDefinition(M): ModFrmAlg -> FldOrd#

The field on which the space \(M\) was defined.

InnerForm(M): ModFrmAlg -> AlgMatElt#

The inner form associated with the space \(M\).

Weight(M): ModFrmAlg -> GrpRep#

The weight of the space \(M\).

Level(M): ModFrmAlg -> LatNF#

The level of the space \(M\).

IsOrthogonal(M): ModFrmAlg -> BoolElt#

Returns true if \(M\) is the space of algebraic modular forms for a group isogenous to an orthogonal group. (i.e of type B or D).

IsSpecialOrthogonal(M): ModFrmAlg -> BoolElt#

Returns true if \(M\) is the space of algebraic modular forms for a special orthogonal group (\({\operatorname{SO}}(V)\) for some quadratic space \(V\)).

Dimension(M): ModFrmAlg -> RngIntElt#
DimensionsOfDirectSummands(M): ModFrmAlg -> [RngIntElt]#
ThetaPrec: RngIntElt                    Default: 25

The dimension of the space \(M\) of algebraic modular forms, or the dimensions of the direct summands \(W^{\Gamma_i}\). The dimension is determined by explicitly constructing the space. ThetaPrec determines the precision to which one computes the theta series of lattices for isometry testing in the process.

VectorSpace(M): ModFrmAlg -> ModTupFld#
Representation(M): ModFrmAlg -> ModTupFld#

The underlying vector space of \(M\).

Example: Basic Example (ex-b1aea0)#

We continue with the first example above.

> Q := SymmetricMatrix([6,0,2,-4,-1,12,3,1,6,12]);
> M := OrthogonalModularForms(Q);
> Level(M);
lattice whose discriminant has norm 193
> Norm(Discriminant(Level(M)));
193
> Weight(M);
free module of rank 1 over Rational Field with an action of GL(4,
RationalField())
> IsTrivial(Weight(M));
true
> time Dimension(M);
9
Time: 0.200
> IsOrthogonal(M);
true
> IsSpecialOrthogonal(M);
false

Run in calculator

This indicates that \(M\) is a space of algebraic modular forms for \({\rm O}(Q)\), rather than \({\operatorname{SO}}(Q)\).

> M_SO := OrthogonalModularForms(Q : Special);
> time Dimension(M_SO);
10
Time: 0.110
> IsOrthogonal(M_SO);
true
> IsSpecialOrthogonal(M_SO);
true

Run in calculator

Genus(M): ModFrmAlg -> SymGen#
UseAuto  : BoolElt                      Default: true
ThetaPrec: RngIntElt                    Default: 25

The genus of the level lattice. If UseAuto is true, uses the action of the automorphism group to check only one lattice of each orbit. ThetaPrec determines the precision of the theta series of lattices to keep track of when checking for isometry.

GenusReps(M): ModFrmAlg -> [ Lat ]#
GenusReps(M): ModFrmAlg -> [ LatNF ]#
UseAuto  : BoolElt                      Default: true
ThetaPrec: RngIntElt                    Default: 25

The genus representatives of the level lattice. If UseAuto is true, uses the action of the automorphism group to check only one lattice of each orbit. ThetaPrec determines the precision of the theta series of lattices to keep track of when checking for isometry.

SetGenus(M, reps): ModFrmAlg, [ Lat ]#
GramFactor: RngIntElt                    Default: 2

Set the genus representatives of \(M\) to be the lattices in reps. GramFactor Determines the scaling between the bilinear form and the quadratic / unitary form.

AutomorphismGroups(M): ModFrmAlg -> [GrpMat]#
NaturalAction: BoolElt                    Default: false

The automorphism groups \(\Gamma_i\) stabilizing each of the genus representatives of \(M\). If NaturalAction is true, returns the groups embedded in the automorphism group of the ambient polar space.

SetAutomorphismGroups(M, groups): ModFrmAlg, [GrpMat]#

Set the automorphism groups \(\Gamma_i\) stabilizing each of the genus representatives of \(M\) to groups.