Modular forms for Hecke triangle groups#
AUTHORS:
Jonas Jermann (2013): initial version
- class sage.modular.modform_hecketriangle.space.CuspForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) cusp forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import CuspForms sage: MF = CuspForms(n=12, k=72/5, ep=-1) sage: MF.default_prec(4) sage: MF.dimension() 2 sage: el = MF(MF.f_i()*MF.Delta()) sage: el q - 1/(288*d)*q^2 - 96605/(1327104*d^2)*q^3 + O(q^4) sage: vec = el.coordinate_vector() sage: vec (1, -1/(288*d)) sage: vec.parent() Vector space of dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: vec.parent() == MF.module() True sage: el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1) True sage: el == MF.element_from_coordinates(vec) True sage: MF = CuspForms(n=infinity, k=16) sage: el2 = MF(MF.Delta()*MF.E4()) sage: vec2 = el2.coordinate_vector() sage: vec2 (1, 5/(8*d), 187/(1024*d^2)) sage: el2 == MF.element_from_coordinates(vec2) True
- dimension()#
Return the dimension of
self.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import CuspForms sage: MF = CuspForms(n=12, k=72/5, ep=1) sage: MF.dimension() 3 sage: len(MF.gens()) == MF.dimension() True sage: CuspForms(n=infinity, k=8).dimension() 1
- gens()#
Return a basis of
selfas a list of basis elements.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import CuspForms sage: MF=CuspForms(n=12, k=72/5, ep=1) sage: MF CuspForms(n=12, k=72/5, ep=1) over Integer Ring sage: MF.dimension() 3 sage: MF.gens() [q + 296888795/(10319560704*d^3)*q^4 + O(q^5), q^2 + 6629/(221184*d^2)*q^4 + O(q^5), q^3 - 25/(96*d)*q^4 + O(q^5)] sage: MF = CuspForms(n=infinity, k=8, ep=1) sage: MF.gen(0) == MF.E4()*MF.f_inf() True
- class sage.modular.modform_hecketriangle.space.MeromorphicModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) meromorphic modular forms for the given group, base ring, weight and multiplier
- class sage.modular.modform_hecketriangle.space.ModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) modular forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ModularForms sage: MF = ModularForms(n=6, k=20, ep=1) sage: MF.dimension() 4 sage: el = MF.E4()^2*MF.Delta() sage: el q + 78*q^2 + 2781*q^3 + 59812*q^4 + O(q^5) sage: vec = el.coordinate_vector() sage: vec (0, 1, 13/(18*d), 103/(432*d^2)) sage: vec.parent() Vector space of dimension 4 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: vec.parent() == MF.module() True sage: el == vec[0]*MF.gen(0) + vec[1]*MF.gen(1) + vec[2]*MF.gen(2) + vec[3]*MF.gen(3) True sage: el == MF.element_from_coordinates(vec) True sage: MF = ModularForms(n=infinity, k=8, ep=1) sage: (MF.E4()^2).coordinate_vector() (1, 1/(2*d), 15/(128*d^2))
- dimension()#
Return the dimension of
self.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ModularForms sage: MF = ModularForms(n=6, k=20, ep=1) sage: MF.dimension() 4 sage: len(MF.gens()) == MF.dimension() True sage: ModularForms(n=infinity, k=8).dimension() 3
- gens()#
Return a basis of
selfas a list of basis elements.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ModularForms sage: MF = ModularForms(n=6, k=20, ep=1) sage: MF.dimension() 4 sage: MF.gens() [1 + 360360*q^4 + O(q^5), q + 21742*q^4 + O(q^5), q^2 + 702*q^4 + O(q^5), q^3 - 6*q^4 + O(q^5)] sage: ModularForms(n=infinity, k=4).gens() [1 + 240*q^2 + 2160*q^4 + O(q^5), q - 8*q^2 + 28*q^3 - 64*q^4 + O(q^5)]
- class sage.modular.modform_hecketriangle.space.QuasiCuspForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi cusp forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms sage: MF = QuasiCuspForms(n=6, k=20, ep=1) sage: MF.dimension() 12 sage: el = MF(MF.E4()^2*MF.Delta() + MF.E4()*MF.E2()^2*MF.Delta()) sage: el 2*q + 120*q^2 + 3402*q^3 + 61520*q^4 + O(q^5) sage: vec = el.coordinate_vector() # long time sage: vec # long time (1, 13/(18*d), 103/(432*d^2), 0, 0, 1, 1/(2*d), 0, 0, 0, 0, 0) sage: vec.parent() # long time Vector space of dimension 12 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: vec.parent() == MF.module() # long time True sage: el == MF(sum([vec[l]*MF.gen(l) for l in range(0,12)])) # long time True sage: el == MF.element_from_coordinates(vec) # long time True sage: MF.gen(1).coordinate_vector() == vector([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # long time True sage: MF = QuasiCuspForms(n=infinity, k=10, ep=-1) sage: el2 = MF(MF.E4()*MF.f_inf()*(MF.f_i() - MF.E2())) sage: el2.coordinate_vector() (1, -1) sage: el2 == MF.element_from_coordinates(el2.coordinate_vector()) True
- dimension()#
Return the dimension of
self.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms sage: MF = QuasiCuspForms(n=8, k=46/3, ep=-1) sage: MF.default_prec(3) sage: MF.dimension() 7 sage: len(MF.gens()) == MF.dimension() True sage: QuasiCuspForms(n=infinity, k=10, ep=-1).dimension() 2
- gens()#
Return a basis of
selfas a list of basis elements.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiCuspForms sage: MF = QuasiCuspForms(n=8, k=46/3, ep=-1) sage: MF.default_prec(4) sage: MF.dimension() 7 sage: MF.gens() [q - 17535/(262144*d^2)*q^3 + O(q^4), q^2 - 47/(128*d)*q^3 + O(q^4), q - 9/(128*d)*q^2 + 15633/(262144*d^2)*q^3 + O(q^4), q^2 - 7/(128*d)*q^3 + O(q^4), q - 23/(64*d)*q^2 - 3103/(262144*d^2)*q^3 + O(q^4), q - 3/(64*d)*q^2 - 4863/(262144*d^2)*q^3 + O(q^4), q - 27/(64*d)*q^2 + 17217/(262144*d^2)*q^3 + O(q^4)] sage: MF = QuasiCuspForms(n=infinity, k=10, ep=-1) sage: MF.gens() [q - 16*q^2 - 156*q^3 - 256*q^4 + O(q^5), q - 60*q^3 - 256*q^4 + O(q^5)]
- class sage.modular.modform_hecketriangle.space.QuasiMeromorphicModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi meromorphic modular forms for the given group, base ring, weight and multiplier
- class sage.modular.modform_hecketriangle.space.QuasiModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi modular forms for the given group, base ring, weight and multiplier
- coordinate_vector(v)#
Return the coordinate vector of
vwith respect to the basisself.gens().INPUT:
v– An element ofself.
OUTPUT:
An element of
self.module(), namely the corresponding coordinate vector ofvwith respect to the basisself.gens().The module is the free module over the coefficient ring of
selfwith the dimension ofself.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms sage: MF = QuasiModularForms(n=6, k=20, ep=1) sage: MF.dimension() 22 sage: el = MF(MF.E4()^2*MF.E6()^2 + MF.E4()*MF.E2()^2*MF.Delta() + MF.E2()^3*MF.E4()^2*MF.E6()) sage: el 2 + 25*q - 2478*q^2 - 82731*q^3 - 448484*q^4 + O(q^5) sage: vec = el.coordinate_vector() # long time sage: vec # long time (1, 1/(9*d), -11/(81*d^2), -4499/(104976*d^3), 0, 0, 0, 0, 1, 1/(2*d), 1, 5/(18*d), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) sage: vec.parent() # long time Vector space of dimension 22 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring sage: vec.parent() == MF.module() # long time True sage: el == MF(sum([vec[l]*MF.gen(l) for l in range(0,22)])) # long time True sage: el == MF.element_from_coordinates(vec) # long time True sage: MF.gen(1).coordinate_vector() == vector([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # long time True sage: MF = QuasiModularForms(n=infinity, k=4, ep=1) sage: el2 = MF.E4() + MF.E2()^2 sage: el2 2 + 160*q^2 + 512*q^3 + 1632*q^4 + O(q^5) sage: el2.coordinate_vector() (1, 1/(4*d), 0, 1) sage: el2 == MF.element_from_coordinates(el2.coordinate_vector()) True
- dimension()#
Return the dimension of
self.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms sage: MF = QuasiModularForms(n=5, k=6, ep=-1) sage: MF.dimension() 3 sage: len(MF.gens()) == MF.dimension() True
- gens()#
Return a basis of
selfas a list of basis elements.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms sage: MF = QuasiModularForms(n=5, k=6, ep=-1) sage: MF.default_prec(2) sage: MF.gens() [1 - 37/(200*d)*q + O(q^2), 1 + 33/(200*d)*q + O(q^2), 1 - 27/(200*d)*q + O(q^2)] sage: MF = QuasiModularForms(n=infinity, k=2, ep=-1) sage: MF.default_prec(2) sage: MF.gens() [1 - 24*q + O(q^2), 1 - 8*q + O(q^2)]
- class sage.modular.modform_hecketriangle.space.QuasiWeakModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) quasi weakly holomorphic modular forms for the given group, base ring, weight and multiplier
- class sage.modular.modform_hecketriangle.space.WeakModularForms(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationModule of (Hecke) weakly holomorphic modular forms for the given group, base ring, weight and multiplier
- class sage.modular.modform_hecketriangle.space.ZeroForm(group, base_ring, k, ep, n)#
Bases:
FormsSpace_abstract,Module,UniqueRepresentationZero Module for the zero form for the given group, base ring weight and multiplier
- coordinate_vector(v)#
Return the coordinate vector of
vwith respect to the basisself.gens().Since this is the zero module which only contains the zero form the trivial vector in the trivial module of dimension
0is returned.INPUT:
v– An element ofself, i.e. in this case the zero vector.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: MF = ZeroForm(6, QQ, 3, -1) sage: el = MF(0) sage: el O(q^5) sage: vec = el.coordinate_vector() sage: vec () sage: vec.parent() Vector space of dimension 0 over Fraction Field of Univariate Polynomial Ring in d over Rational Field sage: vec.parent() == MF.module() True
- dimension()#
Return the dimension of
self. Since this is the zero module0is returned.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: ZeroForm(6, CC, 3, -1).dimension() 0
- gens()#
Return a basis of
selfas a list of basis elements. Since this is the zero module an empty list is returned.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import ZeroForm sage: ZeroForm(6, CC, 3, -1).gens() []
- sage.modular.modform_hecketriangle.space.canonical_parameters(group, base_ring, k, ep, n=None)#
Return a canonical version of the parameters.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import canonical_parameters sage: canonical_parameters(5, ZZ, 20/3, int(1)) (Hecke triangle group for n = 5, Integer Ring, 20/3, 1, 5) sage: canonical_parameters(infinity, ZZ, 2, int(-1)) (Hecke triangle group for n = +Infinity, Integer Ring, 2, -1, +Infinity)