# 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]`

```magma
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.

```magma
> 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

```

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

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

```

## `Genus(M): ModFrmAlg -> SymGen`

```magma
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 ]`

```magma
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 ]`

```magma
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]`

```magma
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`.
