Subspaces of modular forms for Hecke triangle groups

AUTHORS:

  • Jonas Jermann (2013): initial version
sage.modular.modform_hecketriangle.subspace.ModularFormsSubSpace(*args, **kwargs)

Create a modular forms subspace generated by the supplied arguments if possible. Instead of a list of generators also multiple input arguments can be used. If reduce=True then the corresponding ambient space is choosen as small as possible. If no subspace is available then the ambient space is returned.

EXAMPLES:

sage: from sage.modular.modform_hecketriangle.subspace import ModularFormsSubSpace
sage: from sage.modular.modform_hecketriangle.space import ModularForms
sage: MF = ModularForms()
sage: subspace = ModularFormsSubSpace(MF.E4()^3, MF.E6()^2+MF.Delta(), MF.Delta())
sage: subspace
Subspace of dimension 2 of ModularForms(n=3, k=12, ep=1) over Integer Ring
sage: subspace.ambient_space()
ModularForms(n=3, k=12, ep=1) over Integer Ring
sage: subspace.gens()
[1 + 720*q + 179280*q^2 + 16954560*q^3 + 396974160*q^4 + O(q^5), 1 - 1007*q + 220728*q^2 + 16519356*q^3 + 399516304*q^4 + O(q^5)]
sage: ModularFormsSubSpace(MF.E4()^3-MF.E6()^2, reduce=True).ambient_space()
CuspForms(n=3, k=12, ep=1) over Integer Ring
sage: ModularFormsSubSpace(MF.E4()^3-MF.E6()^2, MF.J_inv()*MF.E4()^3, reduce=True)
WeakModularForms(n=3, k=12, ep=1) over Integer Ring
sage.modular.modform_hecketriangle.subspace.SubSpaceForms

Submodule of (Hecke) forms in the given ambient space for the given basis.

sage.modular.modform_hecketriangle.subspace.canonical_parameters(ambient_space, basis, check=True)

Return a canonical version of the parameters. In particular the list/tuple basis is replaced by a tuple of linearly independent elements in the ambient space.

If check=False (default: True) then basis is assumed to already be a basis.

EXAMPLES:

sage: from sage.modular.modform_hecketriangle.subspace import canonical_parameters
sage: from sage.modular.modform_hecketriangle.space import ModularForms
sage: MF = ModularForms(n=6, k=12, ep=1)
sage: canonical_parameters(MF, [MF.Delta().as_ring_element(), MF.gen(0), 2*MF.gen(0)])
(ModularForms(n=6, k=12, ep=1) over Integer Ring,
 (q + 30*q^2 + 333*q^3 + 1444*q^4 + O(q^5),
  1 + 26208*q^3 + 530712*q^4 + O(q^5)))