# Predicates

## `IsAmbientSpace(M): ModFrm -> BoolElt`

Returns `true` if and only if $M$ is an ambient space. Ambient spaces are those space constructed in Section [Ambient Spaces](creation.md#sec-ambient-spaces).

## `IsCuspidal(M): ModFrm -> BoolElt`

Returns `true` if $M$ is contained in the cuspidal subspace of the ambient space.

## `IsEisenstein(M): ModFrm -> BoolElt`

Returns `true` if $M$ is contained in the Eisenstein subspace of the ambient space.

## `IsEisensteinSeries(f): ModFrmElt -> BoolElt`

Returns `true` if $f$ is an Eisenstein newform or was computed using the intrinsic `EisensteinSeries`. (See Section [Eisenstein Series](eisenstein-series.md#sec-eisenstein).)

## `IsGamma0(M): ModFrm -> BoolElt`

Returns `true` if $M$ is a space of modular forms for $\Gamma_0(N)$.

## `IsGamma1(M): ModFrm -> BoolElt`

Returns `true` if $M$ was created explicitly as a space of modular forms for $\Gamma_1(N)$, or if the `AmbientSpace` of $M$ is such a space. (Note that `IsGamma1` will return `false` for any space `ModularForms(chars,k)`, even if `chars` consists of all mod $N$ Dirichlet characters.)

## `IsNew(M): ModFrm -> BoolElt`

Returns `true` if $M$ is contained in the new subspace of its `AmbientSpace`.

## `IsNewform(f): ModFrmElt -> BoolElt`

Returns `true` if $f$ was created using `Newforms`. (Sometimes `true` in other cases in which $f$ is obviously a newform. In number theory, “newform” means “normalized eigenform that lies in the new subspace”.)

## `IsRingOfAllModularForms(M): ModFrm -> BoolElt`

Returns `true` if and only if $M$ is the ring of all modular forms over a given ring.

## `Example: Predicates (ex-830f17)`

We illustrate each of the above predicates with some simple computations in $M_3(\Gamma_1(11))$.

```magma
> M := ModularForms(Gamma1(11),3);
> f := Newform(M,1);
> IsAmbientSpace(M);
true
> IsAmbientSpace(CuspidalSubspace(M));
false
> IsCuspidal(M);
false
> IsCuspidal(CuspidalSubspace(M));
true
> IsEisenstein(CuspidalSubspace(M));
false
> IsEisenstein(EisensteinSubspace(M));
true
> IsGamma1(M);
true
> IsNew(M);
true
> IsNewform(M.1);
false
> IsNewform(f);
true
> IsRingOfAllModularForms(M);
false
> Level(f);
11
> Level(M);
11
> Weight(f);
3
> Weight(M);
3
> Weight(M.1);
3

```
