Analytic types of modular forms.¶
Properties of modular forms and their generalizations are assembled
into one partially ordered set. See AnalyticType
for a
list of handled properties.
AUTHORS:
 Jonas Jermann (2013): initial version

class
sage.modular.modform_hecketriangle.analytic_type.
AnalyticType
¶ Bases:
sage.combinat.posets.lattices.FiniteLatticePoset
Container for all possible analytic types of forms and/or spaces.
The
analytic type
of forms spaces or rings describes all possible occuring basicanalytic properties
of elements in the space/ring (or more).For ambient spaces/rings this means that all elements with those properties (and the restrictions of the space/ring) are contained in the space/ring.
The analytic type of an element is the analytic type of its minimal ambient space/ring.
The basic
analytic properties
are:quasi
 Whether the element is quasi modular (and not modular) or modular.
mero
meromorphic
: If the element is meromorphic and meromorphic at infinity.
weak
weakly holomorphic
: If the element is holomorphic and meromorphic at infinity.
holo
holomorphic
: If the element is holomorphic and holomorphic at infinity.
cusp
cuspidal
: If the element additionally has a positive order at infinity.
The
zero
elements/property have no analytic properties (or onlyquasi
).For ring elements the property describes whether one of its homogeneous components satisfies that property and the “union” of those properties is returned as the
analytic type
.Similarly for quasi forms the property describes whether one of its quasi components satisfies that property.
There is a (natural) partial order between the basic properties (and analytic types) given by “inclusion”. We name the analytic type according to its maximal analytic properties.
For \(n=3\) the quasi form
el = E6  E2^3
has the quasi componentsE6
which isholomorphic
andE2^3
which isquasi holomorphic
. So the analytic type ofel
isquasi holomorphic
despite the fact that the sum (el
) describes a function which is zero at infinity.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms sage: x,y,z,d = var("x,y,z,d") sage: el = QuasiModularForms(n=3, k=6, ep=1)(yz^3) sage: el.analytic_type() quasi modular Similarly the type of the ring element ``el2 = E4/Delta  E6/Delta`` is ``weakly holomorphic`` despite the fact that the sum (``el2``) describes a function which is holomorphic at infinity. sage: from sage.modular.modform_hecketriangle.graded_ring import WeakModularFormsRing sage: x,y,z,d = var("x,y,z,d") sage: el2 = WeakModularFormsRing(n=3)(x/(x^3y^2)y/(x^3y^2)) sage: el2.analytic_type() weakly holomorphic modular

Element
¶ alias of
AnalyticTypeElement

base_poset
()¶ Return the base poset from which everything of
self
was constructed. Elements of the base poset correspond to the basicanalytic properties
.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: from sage.combinat.posets.posets import FinitePoset sage: AT = AnalyticType() sage: P = AT.base_poset() sage: P Finite poset containing 5 elements with distinguished linear extension sage: isinstance(P, FinitePoset) True sage: P.is_lattice() False sage: P.is_finite() True sage: P.cardinality() 5 sage: P.is_bounded() False sage: P.list() [cusp, holo, weak, mero, quasi] sage: len(P.relations()) 11 sage: P.cover_relations() [[cusp, holo], [holo, weak], [weak, mero]] sage: P.has_top() False sage: P.has_bottom() False

lattice_poset
()¶ Return the underlying lattice poset of
self
.EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AnalyticType().lattice_poset() Finite lattice containing 10 elements

class
sage.modular.modform_hecketriangle.analytic_type.
AnalyticTypeElement
(poset, element, vertex)¶ Bases:
sage.combinat.posets.elements.LatticePosetElement
Analytic types of forms and/or spaces.
An analytic type element describes what basic analytic properties are contained/included in it.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import (AnalyticType, AnalyticTypeElement) sage: from sage.combinat.posets.elements import LatticePosetElement sage: AT = AnalyticType() sage: el = AT(["quasi", "cusp"]) sage: el quasi cuspidal sage: isinstance(el, AnalyticTypeElement) True sage: isinstance(el, LatticePosetElement) True sage: el.parent() == AT True sage: sorted(el.element,key=str) [cusp, quasi] sage: from sage.sets.set import Set_object_enumerated sage: isinstance(el.element, Set_object_enumerated) True sage: first = sorted(el.element,key=str)[0]; first cusp sage: first.parent() == AT.base_poset() True sage: el2 = AT("holo") sage: sum = el + el2 sage: sum quasi modular sage: sorted(sum.element,key=str) [cusp, holo, quasi] sage: el * el2 cuspidal

analytic_name
()¶ Return a string representation of the analytic type.
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AT = AnalyticType() sage: AT([“quasi”, “weak”]).analytic_name() ‘quasi weakly holomorphic modular’ sage: AT([“quasi”, “cusp”]).analytic_name() ‘quasi cuspidal’ sage: AT([“quasi”]).analytic_name() ‘zero’ sage: AT([]).analytic_name() ‘zero’

analytic_space_name
()¶ Return the (analytic part of the) name of a space with the analytic type of
self
.This is used for the string representation of such spaces.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AT = AnalyticType() sage: AT(["quasi", "weak"]).analytic_space_name() 'QuasiWeakModular' sage: AT(["quasi", "cusp"]).analytic_space_name() 'QuasiCusp' sage: AT(["quasi"]).analytic_space_name() 'Zero' sage: AT([]).analytic_space_name() 'Zero'

extend_by
(extend_type)¶ Return a new analytic type which contains all analytic properties specified either in
self
or inextend_type
.INPUT:
extend_type
– an analytic type or something which is convertible to an analytic type
OUTPUT:
The new extended analytic type.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AT = AnalyticType() sage: el = AT(["quasi", "cusp"]) sage: el2 = AT("holo") sage: el.extend_by(el2) quasi modular sage: el.extend_by(el2) == el + el2 True

latex_space_name
()¶ Return the short (analytic part of the) name of a space with the analytic type of
self
for usage with latex.This is used for the latex representation of such spaces.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AT = AnalyticType() sage: AT("mero").latex_space_name() '\\tilde{M}' sage: AT("weak").latex_space_name() 'M^!' sage: AT(["quasi", "cusp"]).latex_space_name() 'QC' sage: AT([]).latex_space_name() 'Z'

reduce_to
(reduce_type)¶ Return a new analytic type which contains only analytic properties specified in both
self
andreduce_type
.INPUT:
reduce_type
– an analytic type or something which is convertible to an analytic type
OUTPUT:
The new reduced analytic type.
EXAMPLES:
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType sage: AT = AnalyticType() sage: el = AT(["quasi", "cusp"]) sage: el2 = AT("holo") sage: el.reduce_to(el2) cuspidal sage: el.reduce_to(el2) == el * el2 True
