# Invariants

The defining data and invariants of the curves are accessed through standard functions.

## `Level(X): CrvMod -> RngIntElt`

Returns the level of the modular curve $X$ as an integer.

## `Genus(X): CrvMod -> RngIntElt`

Returns the genus of the modular curve $X$ .

## `ModelType(X): CrvMod -> MonStgElt`

Returns the type of the model for the modular curve $X$, presently limited to “Atkin”, “Canonical”, or “Classical”. This is used to determine the algorithm by which parameterized isogenies are determined.

## `Indices(X): CrvMod -> SeqEnum`

Returns a sequence of integers, of the form $[N,M,P]$, classifying the class of the modular curve $X$. The integer sequence defines a congruence subgroup of ${\operatorname{PSL}}_2({\mathbb{Z}})$ defined by

$$
\Gamma(N,M,P) =
       \left\{
           \left.\left({a\ b\atop c\ d}\right)\ \right\vert
               \ c \equiv 0 \bmod N,
               \ b \equiv 0 \bmod P,
               \ a \equiv 1 \bmod M
       \ \right\},
$$

where $M$ divides ${\rm LCM}(N,P)$. For the models presently available, this will be the sequence $[N,1,1]$, where is the level of $X = X_0(N)$.
