def __init__(self, group, base_ring, k, ep): r""" Return the zero Module for the zero form of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. The ZeroForm space coerces into any forms space or ring with a compatible group. EXAMPLES:: sage: MF = ZeroForm(6, CC, 3, -1) sage: MF ZeroForms(n=6, k=3, ep=-1) over Complex Field with 53 bits of precision sage: MF.analytic_type() zero sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision sage: MF.module() Vector space of dimension 0 over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision sage: MF.ambient_module() == MF.module() True sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT([]) self._module = FreeModule(self.coeff_ring(), self.dimension())
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) quasi cusp forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms sage: MF = QuasiCuspForms(8, ZZ, 16/3) sage: MF QuasiCuspForms(n=8, k=16/3, ep=1) over Integer Ring sage: MF.analytic_type() quasi cuspidal sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.is_ambient() True sage: QuasiCuspForms(n=infinity) QuasiCuspForms(n=+Infinity, k=0, ep=1) over Integer Ring """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["jacobi", "quasi", "cusp"])
def __init__(self, group, base_ring, k, ep): r""" Return the Module of (Hecke) cusp forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: MF = CuspForms(6, ZZ, 6, 1) sage: MF CuspForms(n=6, k=6, ep=1) over Integer Ring sage: MF.analytic_type() cuspidal sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.module() Vector space of dimension 1 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.ambient_module() == MF.module() True sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["cusp"]) self._module = FreeModule(self.coeff_ring(), self.dimension())
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import ModularForms sage: MF = ModularForms() sage: MF ModularForms(n=3, k=0, ep=1) over Integer Ring sage: MF.analytic_type() modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.module() Vector space of dimension 1 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.ambient_module() == MF.module() True sage: MF.is_ambient() True sage: MF = ModularForms(n=infinity, k=8) sage: MF ModularForms(n=+Infinity, k=8, ep=1) over Integer Ring sage: MF.analytic_type() modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type = self.AT(["jacobi", "holo"])
def __init__(self, group, base_ring, k, ep, n): r""" Return the zero Module for the zero form of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. The ZeroForm space coerces into any forms space or ring with a compatible group. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: MF = ZeroForm(6, CC, 3, -1) sage: MF ZeroForms(n=6, k=3, ep=-1) over Complex Field with 53 bits of precision sage: MF.analytic_type() zero sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision sage: MF.module() Vector space of dimension 0 over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision sage: MF.ambient_module() == MF.module() True sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT([]) self._module = FreeModule(self.coeff_ring(), self.dimension())
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) cusp forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import CuspForms sage: MF = CuspForms(6, ZZ, 6, 1) sage: MF CuspForms(n=6, k=6, ep=1) over Integer Ring sage: MF.analytic_type() cuspidal sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.module() Vector space of dimension 1 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.ambient_module() == MF.module() True sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["cusp"]) self._module = FreeModule(self.coeff_ring(), self.dimension())
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) quasi cusp forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms sage: MF = QuasiCuspForms(8, ZZ, 16/3) sage: MF QuasiCuspForms(n=8, k=16/3, ep=1) over Integer Ring sage: MF.analytic_type() quasi cuspidal sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.is_ambient() True sage: QuasiCuspForms(n=infinity) QuasiCuspForms(n=+Infinity, k=0, ep=1) over Integer Ring """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["quasi", "cusp"]) self._module = FreeModule(self.coeff_ring(), self.dimension())
def __init__(self, group, base_ring, k, ep): r""" Return the Module of (Hecke) weakly holomorphic modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: MF = WeakModularForms(5, CC, 20/3) sage: MF WeakModularForms(n=5, k=20/3, ep=1) over Complex Field with 53 bits of precision sage: MF.analytic_type() weakly holomorphic modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["weak"])
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) weakly holomorphic modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import WeakModularForms sage: MF = WeakModularForms(5, CC, 20/3) sage: MF WeakModularForms(n=5, k=20/3, ep=1) over Complex Field with 53 bits of precision sage: MF.analytic_type() weakly holomorphic modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Complex Field with 53 bits of precision """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["weak"])
def __init__(self, group, base_ring, k, ep): r""" Return the Module of (Hecke) quasi meromorphic modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: MF = QMModularForms(5, ZZ, 20/3, 1) sage: MF QuasiMeromorphicModularForms(n=5, k=20/3, ep=1) over Integer Ring sage: MF.analytic_type() quasi meromorphic modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.ambient_space() == MF True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["quasi", "mero"])
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) quasi weakly holomorphic modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import QuasiWeakModularForms sage: MF = QuasiWeakModularForms(4, ZZ, 8, 1) sage: MF QuasiWeakModularForms(n=4, k=8, ep=1) over Integer Ring sage: MF.analytic_type() quasi weakly holomorphic modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["jacobi", "quasi", "weak"])
def __init__(self, group, base_ring, k, ep, n): r""" Return the Module of (Hecke) meromorphic modular forms of weight ``k`` with multiplier ``ep`` for the given ``group`` and ``base_ring``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import MeromorphicModularForms sage: MF = MeromorphicModularForms() sage: MF MeromorphicModularForms(n=3, k=0, ep=1) over Integer Ring sage: MF.analytic_type() meromorphic modular sage: MF.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: MF.is_ambient() True """ FormsSpace_abstract.__init__(self, group=group, base_ring=base_ring, k=k, ep=ep, n=n) Module.__init__(self, base=self.coeff_ring()) self._analytic_type=self.AT(["mero"])
def __init__(self, ambient_space, basis, check): r""" Return the Submodule of (Hecke) forms in ``ambient_space`` for the given ``basis``. INPUT: - ``ambient_space`` -- An ambient forms space. - ``basis`` -- A tuple of (not necessarily linearly independent) elements of ``ambient_space``. - ``check`` -- If ``True`` (default) then a maximal linearly independent subset of ``basis`` is choosen. Otherwise it is assumed that ``basis`` is linearly independent. OUTPUT: The corresponding submodule. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import ModularForms, QuasiCuspForms sage: MF = ModularForms(n=6, k=20, ep=1) sage: MF ModularForms(n=6, k=20, ep=1) over Integer Ring sage: MF.dimension() 4 sage: subspace = MF.subspace([MF.Delta()*MF.E4()^2, MF.gen(0), 2*MF.gen(0)]) sage: subspace Subspace of dimension 2 of ModularForms(n=6, k=20, ep=1) over Integer Ring sage: subspace.analytic_type() modular sage: subspace.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.module() Vector space of degree 4 and dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring Basis matrix: [ 1 0 0 0] [ 0 1 13/(18*d) 103/(432*d^2)] sage: subspace.ambient_module() Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.ambient_module() == MF.module() True sage: subspace.ambient_space() == MF True sage: subspace.basis() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.basis()[0].parent() == MF True sage: subspace.gens() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.gens()[0].parent() == subspace True sage: subspace.is_ambient() False sage: MF = QuasiCuspForms(n=infinity, k=12, ep=1) sage: MF.dimension() 4 sage: subspace = MF.subspace([MF.Delta(), MF.E4()*MF.f_inf()*MF.E2()*MF.f_i(), MF.E4()*MF.f_inf()*MF.E2()^2, MF.E4()*MF.f_inf()*(MF.E4()-MF.E2()^2)]) sage: subspace.default_prec(3) sage: subspace Subspace of dimension 3 of QuasiCuspForms(n=+Infinity, k=12, ep=1) over Integer Ring sage: subspace.gens() [q + 24*q^2 + O(q^3), q - 24*q^2 + O(q^3), q - 8*q^2 + O(q^3)] """ FormsSpace_abstract.__init__(self, group=ambient_space.group(), base_ring=ambient_space.base_ring(), k=ambient_space.weight(), ep=ambient_space.ep(), n=ambient_space.hecke_n()) Module.__init__(self, base=self.coeff_ring()) self._ambient_space = ambient_space self._basis = [v for v in basis] # self(v) instead would somehow mess up the coercion model self._gens = [self._element_constructor_(v) for v in basis] self._module = ambient_space._module.submodule( [ambient_space.coordinate_vector(v) for v in basis]) # TODO: get the analytic type from the basis #self._analytic_type=self.AT(["quasi", "mero"]) self._analytic_type = ambient_space._analytic_type
def __init__(self, ambient_space, basis): r""" Return the Submodule of (Hecke) forms in ``ambient_space`` for the given ``basis``. INPUT: - ``ambient_space`` - An ambient forms space. - ``basis``` - A tuple of linearly independent elements of ``ambient_space``. OUTPUT: The corresponding submodule. EXAMPLES:: sage: from space import ModularForms sage: MF = ModularForms(group=6, k=20, ep=1) sage: MF ModularForms(n=6, k=20, ep=1) over Integer Ring sage: MF.dimension() 4 sage: subspace = MF.subspace([MF.Delta()*MF.E4()^2, MF.gen(0)]) sage: subspace Subspace of dimension 2 of ModularForms(n=6, k=20, ep=1) over Integer Ring sage: subspace.analytic_type() modular sage: subspace.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.module() Vector space of degree 4 and dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring Basis matrix: [ 1 0 0 0] [ 0 1 13/(18*d) 103/(432*d^2)] sage: subspace.ambient_module() Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.ambient_module() == MF.module() True sage: subspace.ambient_space() == MF True sage: subspace.basis() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.basis()[0].parent() == MF True sage: subspace.gens() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.gens()[0].parent() == subspace True sage: subspace.is_ambient() False """ FormsSpace_abstract.__init__(self, group=ambient_space.group(), base_ring=ambient_space.base_ring(), k=ambient_space.weight(), ep=ambient_space.ep()) Module.__init__(self, base=self.coeff_ring()) self._ambient_space = ambient_space self._basis = [v for v in basis] # self(v) instead would somehow mess up the coercion model self._gens = [self._element_constructor_(v) for v in basis] self._module = ambient_space._module.submodule([ambient_space.coordinate_vector(v) for v in basis]) # TODO: get the analytic type from the basis #self._analytic_type=self.AT(["quasi", "mero"]) self._analytic_type = ambient_space._analytic_type
def __init__(self, ambient_space, basis, check): r""" Return the Submodule of (Hecke) forms in ``ambient_space`` for the given ``basis``. INPUT: - ``ambient_space`` -- An ambient forms space. - ``basis`` -- A tuple of (not necessarily linearly independent) elements of ``ambient_space``. - ``check`` -- If ``True`` (default) then a maximal linearly independent subset of ``basis`` is choosen. Otherwise it is assumed that ``basis`` is linearly independent. OUTPUT: The corresponding submodule. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.space import ModularForms, QuasiCuspForms sage: MF = ModularForms(n=6, k=20, ep=1) sage: MF ModularForms(n=6, k=20, ep=1) over Integer Ring sage: MF.dimension() 4 sage: subspace = MF.subspace([MF.Delta()*MF.E4()^2, MF.gen(0), 2*MF.gen(0)]) sage: subspace Subspace of dimension 2 of ModularForms(n=6, k=20, ep=1) over Integer Ring sage: subspace.analytic_type() modular sage: subspace.category() Category of vector spaces over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.module() Vector space of degree 4 and dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring Basis matrix: [ 1 0 0 0] [ 0 1 13/(18*d) 103/(432*d^2)] sage: subspace.ambient_module() Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: subspace.ambient_module() == MF.module() True sage: subspace.ambient_space() == MF True sage: subspace.basis() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.basis()[0].parent() == MF True sage: subspace.gens() [q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5), 1 + 360360*q^4 + O(q^5)] sage: subspace.gens()[0].parent() == subspace True sage: subspace.is_ambient() False sage: MF = QuasiCuspForms(n=infinity, k=12, ep=1) sage: MF.dimension() 4 sage: subspace = MF.subspace([MF.Delta(), MF.E4()*MF.f_inf()*MF.E2()*MF.f_i(), MF.E4()*MF.f_inf()*MF.E2()^2, MF.E4()*MF.f_inf()*(MF.E4()-MF.E2()^2)]) sage: subspace.default_prec(3) sage: subspace Subspace of dimension 3 of QuasiCuspForms(n=+Infinity, k=12, ep=1) over Integer Ring sage: subspace.gens() [q + 24*q^2 + O(q^3), q - 24*q^2 + O(q^3), q - 8*q^2 + O(q^3)] """ FormsSpace_abstract.__init__(self, group=ambient_space.group(), base_ring=ambient_space.base_ring(), k=ambient_space.weight(), ep=ambient_space.ep(), n=ambient_space.hecke_n()) Module.__init__(self, base=self.coeff_ring()) self._ambient_space = ambient_space self._basis = [v for v in basis] # self(v) instead would somehow mess up the coercion model self._gens = [self._element_constructor_(v) for v in basis] self._module = ambient_space._module.submodule([ambient_space.coordinate_vector(v) for v in basis]) # TODO: get the analytic type from the basis #self._analytic_type=self.AT(["quasi", "mero"]) self._analytic_type = ambient_space._analytic_type