passagemath-schemes 10.6.47__cp312-cp312-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
- passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
- passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
- passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
- passagemath_schemes/__init__.py +3 -0
- passagemath_schemes-10.6.47.dist-info/METADATA +204 -0
- passagemath_schemes-10.6.47.dist-info/METADATA.bak +205 -0
- passagemath_schemes-10.6.47.dist-info/RECORD +311 -0
- passagemath_schemes-10.6.47.dist-info/WHEEL +6 -0
- passagemath_schemes-10.6.47.dist-info/top_level.txt +3 -0
- sage/all__sagemath_schemes.py +23 -0
- sage/databases/all__sagemath_schemes.py +7 -0
- sage/databases/cremona.py +1723 -0
- sage/dynamics/all__sagemath_schemes.py +2 -0
- sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
- sage/dynamics/arithmetic_dynamics/all.py +14 -0
- sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
- sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
- sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
- sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
- sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
- sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
- sage/dynamics/arithmetic_dynamics/projective_ds.py +9558 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-312-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +745 -0
- sage/lfunctions/pari.py +818 -0
- sage/lfunctions/zero_sums.cpython-312-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5135 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
- sage/modular/abvar/abvar_newform.py +244 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +186 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +720 -0
- sage/modular/abvar/homspace.py +998 -0
- sage/modular/abvar/lseries.py +415 -0
- sage/modular/abvar/morphism.py +935 -0
- sage/modular/abvar/torsion_point.py +274 -0
- sage/modular/abvar/torsion_subgroup.py +740 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1402 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +363 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +653 -0
- sage/modular/arithgroup/congroup_gammaH.py +1469 -0
- sage/modular/arithgroup/congroup_generic.py +628 -0
- sage/modular/arithgroup/congroup_sl2z.py +267 -0
- sage/modular/arithgroup/farey_symbol.cpython-312-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1066 -0
- sage/modular/arithgroup/tests.py +418 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3753 -0
- sage/modular/btquotients/pautomorphicform.py +2570 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1109 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +569 -0
- sage/modular/dirichlet.py +3310 -0
- sage/modular/drinfeld_modform/all.py +2 -0
- sage/modular/drinfeld_modform/element.py +446 -0
- sage/modular/drinfeld_modform/ring.py +773 -0
- sage/modular/drinfeld_modform/tutorial.py +236 -0
- sage/modular/etaproducts.py +1065 -0
- sage/modular/hecke/algebra.py +746 -0
- sage/modular/hecke/all.py +20 -0
- sage/modular/hecke/ambient_module.py +1019 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +325 -0
- sage/modular/hecke/hecke_operator.py +780 -0
- sage/modular/hecke/homspace.py +206 -0
- sage/modular/hecke/module.py +1767 -0
- sage/modular/hecke/morphism.py +174 -0
- sage/modular/hecke/submodule.py +989 -0
- sage/modular/hypergeometric_misc.cpython-312-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2017 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1071 -0
- sage/modular/local_comp/smoothchar.py +1825 -0
- sage/modular/local_comp/type_space.py +748 -0
- sage/modular/modform/all.py +30 -0
- sage/modular/modform/ambient.py +815 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +124 -0
- sage/modular/modform/ambient_g1.py +204 -0
- sage/modular/modform/constructor.py +545 -0
- sage/modular/modform/cuspidal_submodule.py +708 -0
- sage/modular/modform/defaults.py +14 -0
- sage/modular/modform/eis_series.py +505 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4131 -0
- sage/modular/modform/find_generators.py +59 -0
- sage/modular/modform/half_integral.py +154 -0
- sage/modular/modform/hecke_operator_on_qexp.py +247 -0
- sage/modular/modform/j_invariant.py +47 -0
- sage/modular/modform/l_series_gross_zagier.py +133 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-312-darwin.so +0 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
- sage/modular/modform/notes.py +45 -0
- sage/modular/modform/numerical.py +514 -0
- sage/modular/modform/periods.py +14 -0
- sage/modular/modform/ring.py +1257 -0
- sage/modular/modform/space.py +1860 -0
- sage/modular/modform/submodule.py +118 -0
- sage/modular/modform/tests.py +64 -0
- sage/modular/modform/theta.py +110 -0
- sage/modular/modform/vm_basis.py +381 -0
- sage/modular/modform/weight1.py +220 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
- sage/modular/modform_hecketriangle/all.py +30 -0
- sage/modular/modform_hecketriangle/analytic_type.py +590 -0
- sage/modular/modform_hecketriangle/constructor.py +416 -0
- sage/modular/modform_hecketriangle/element.py +351 -0
- sage/modular/modform_hecketriangle/functors.py +752 -0
- sage/modular/modform_hecketriangle/graded_ring.py +541 -0
- sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
- sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
- sage/modular/modform_hecketriangle/readme.py +1214 -0
- sage/modular/modform_hecketriangle/series_constructor.py +580 -0
- sage/modular/modform_hecketriangle/space.py +1037 -0
- sage/modular/modform_hecketriangle/subspace.py +423 -0
- sage/modular/modsym/all.py +17 -0
- sage/modular/modsym/ambient.py +3846 -0
- sage/modular/modsym/boundary.py +1420 -0
- sage/modular/modsym/element.py +336 -0
- sage/modular/modsym/g1list.py +178 -0
- sage/modular/modsym/ghlist.py +182 -0
- sage/modular/modsym/hecke_operator.py +73 -0
- sage/modular/modsym/manin_symbol.cpython-312-darwin.so +0 -0
- sage/modular/modsym/manin_symbol.pxd +5 -0
- sage/modular/modsym/manin_symbol.pyx +497 -0
- sage/modular/modsym/manin_symbol_list.py +1295 -0
- sage/modular/modsym/modsym.py +400 -0
- sage/modular/modsym/modular_symbols.py +384 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-312-darwin.so +0 -0
- sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
- sage/modular/modsym/space.py +2468 -0
- sage/modular/modsym/subspace.py +455 -0
- sage/modular/modsym/tests.py +375 -0
- sage/modular/multiple_zeta.py +2632 -0
- sage/modular/multiple_zeta_F_algebra.py +786 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1878 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +778 -0
- sage/modular/pollack_stevens/all.py +4 -0
- sage/modular/pollack_stevens/distributions.py +874 -0
- sage/modular/pollack_stevens/fund_domain.py +1572 -0
- sage/modular/pollack_stevens/manin_map.py +859 -0
- sage/modular/pollack_stevens/modsym.py +1593 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1076 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +845 -0
- sage/modular/quasimodform/ring.py +828 -0
- sage/modular/quatalg/all.py +3 -0
- sage/modular/quatalg/brandt.py +1642 -0
- sage/modular/ssmod/all.py +8 -0
- sage/modular/ssmod/ssmod.py +827 -0
- sage/rings/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/binary_form_reduce.py +585 -0
- sage/schemes/all.py +41 -0
- sage/schemes/berkovich/all.py +6 -0
- sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
- sage/schemes/berkovich/berkovich_space.py +748 -0
- sage/schemes/curves/affine_curve.py +2928 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +381 -0
- sage/schemes/curves/curve.py +542 -0
- sage/schemes/curves/plane_curve_arrangement.py +1283 -0
- sage/schemes/curves/point.py +463 -0
- sage/schemes/curves/projective_curve.py +3026 -0
- sage/schemes/curves/zariski_vankampen.py +1932 -0
- sage/schemes/cyclic_covers/all.py +2 -0
- sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
- sage/schemes/cyclic_covers/constructor.py +137 -0
- sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
- sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
- sage/schemes/elliptic_curves/BSD.py +1036 -0
- sage/schemes/elliptic_curves/Qcurves.py +592 -0
- sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
- sage/schemes/elliptic_curves/all.py +49 -0
- sage/schemes/elliptic_curves/cardinality.py +609 -0
- sage/schemes/elliptic_curves/cm.py +1102 -0
- sage/schemes/elliptic_curves/constructor.py +1552 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
- sage/schemes/elliptic_curves/ell_egros.py +459 -0
- sage/schemes/elliptic_curves/ell_field.py +2836 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
- sage/schemes/elliptic_curves/ell_generic.py +3760 -0
- sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
- sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
- sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
- sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
- sage/schemes/elliptic_curves/ell_point.py +4787 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
- sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
- sage/schemes/elliptic_curves/ell_torsion.py +436 -0
- sage/schemes/elliptic_curves/ell_wp.py +352 -0
- sage/schemes/elliptic_curves/formal_group.py +760 -0
- sage/schemes/elliptic_curves/gal_reps.py +1459 -0
- sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7335 -0
- sage/schemes/elliptic_curves/height.py +2109 -0
- sage/schemes/elliptic_curves/hom.py +1406 -0
- sage/schemes/elliptic_curves/hom_composite.py +934 -0
- sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
- sage/schemes/elliptic_curves/hom_scalar.py +531 -0
- sage/schemes/elliptic_curves/hom_sum.py +682 -0
- sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
- sage/schemes/elliptic_curves/homset.py +271 -0
- sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +237 -0
- sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
- sage/schemes/elliptic_curves/kraus.py +1014 -0
- sage/schemes/elliptic_curves/lseries_ell.py +943 -0
- sage/schemes/elliptic_curves/mod5family.py +105 -0
- sage/schemes/elliptic_curves/mod_poly.py +197 -0
- sage/schemes/elliptic_curves/mod_sym_num.cpython-312-darwin.so +0 -0
- sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
- sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
- sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
- sage/schemes/elliptic_curves/padics.py +1816 -0
- sage/schemes/elliptic_curves/period_lattice.py +2234 -0
- sage/schemes/elliptic_curves/period_lattice_region.cpython-312-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +715 -0
- sage/schemes/elliptic_curves/sha_tate.py +1158 -0
- sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
- sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
- sage/schemes/hyperelliptic_curves/all.py +6 -0
- sage/schemes/hyperelliptic_curves/constructor.py +291 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
- sage/schemes/hyperelliptic_curves/invariants.py +410 -0
- sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
- sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
- sage/schemes/hyperelliptic_curves/mestre.py +302 -0
- sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
- sage/schemes/jacobians/abstract_jacobian.py +277 -0
- sage/schemes/jacobians/all.py +2 -0
- sage/schemes/overview.py +161 -0
- sage/schemes/plane_conics/all.py +22 -0
- sage/schemes/plane_conics/con_field.py +1296 -0
- sage/schemes/plane_conics/con_finite_field.py +158 -0
- sage/schemes/plane_conics/con_number_field.py +456 -0
- sage/schemes/plane_conics/con_rational_field.py +406 -0
- sage/schemes/plane_conics/con_rational_function_field.py +580 -0
- sage/schemes/plane_conics/constructor.py +249 -0
- sage/schemes/plane_quartics/all.py +2 -0
- sage/schemes/plane_quartics/quartic_constructor.py +71 -0
- sage/schemes/plane_quartics/quartic_generic.py +73 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
- sage_wheels/share/cremona/cremona_mini.db +0 -0
- sage_wheels/share/ellcurves/rank0 +30427 -0
- sage_wheels/share/ellcurves/rank1 +31871 -0
- sage_wheels/share/ellcurves/rank10 +6 -0
- sage_wheels/share/ellcurves/rank11 +6 -0
- sage_wheels/share/ellcurves/rank12 +1 -0
- sage_wheels/share/ellcurves/rank14 +1 -0
- sage_wheels/share/ellcurves/rank15 +1 -0
- sage_wheels/share/ellcurves/rank17 +1 -0
- sage_wheels/share/ellcurves/rank19 +1 -0
- sage_wheels/share/ellcurves/rank2 +2388 -0
- sage_wheels/share/ellcurves/rank20 +1 -0
- sage_wheels/share/ellcurves/rank21 +1 -0
- sage_wheels/share/ellcurves/rank22 +1 -0
- sage_wheels/share/ellcurves/rank23 +1 -0
- sage_wheels/share/ellcurves/rank24 +1 -0
- sage_wheels/share/ellcurves/rank28 +1 -0
- sage_wheels/share/ellcurves/rank3 +836 -0
- sage_wheels/share/ellcurves/rank4 +10 -0
- sage_wheels/share/ellcurves/rank5 +5 -0
- sage_wheels/share/ellcurves/rank6 +5 -0
- sage_wheels/share/ellcurves/rank7 +5 -0
- sage_wheels/share/ellcurves/rank8 +6 -0
- sage_wheels/share/ellcurves/rank9 +7 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
r"""
|
|
3
|
+
AUTHORS:
|
|
4
|
+
|
|
5
|
+
- Jonas Jermann (2013): initial version
|
|
6
|
+
"""
|
|
7
|
+
# ****************************************************************************
|
|
8
|
+
# Copyright (C) 2013-2014 Jonas Jermann <jjermann2@gmail.com>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
12
|
+
# the License, or (at your option) any later version.
|
|
13
|
+
# https://www.gnu.org/licenses/
|
|
14
|
+
# ****************************************************************************
|
|
15
|
+
from sage.modular.modform_hecketriangle.hecke_triangle_groups import HeckeTriangleGroup
|
|
16
|
+
|
|
17
|
+
from sage.modular.modform_hecketriangle.series_constructor import MFSeriesConstructor
|
|
18
|
+
|
|
19
|
+
from sage.modular.modform_hecketriangle.graded_ring import (QuasiMeromorphicModularFormsRing,
|
|
20
|
+
QuasiWeakModularFormsRing, QuasiModularFormsRing,
|
|
21
|
+
QuasiCuspFormsRing, MeromorphicModularFormsRing,
|
|
22
|
+
WeakModularFormsRing,
|
|
23
|
+
ModularFormsRing, CuspFormsRing)
|
|
24
|
+
|
|
25
|
+
from sage.modular.modform_hecketriangle.space import (QuasiMeromorphicModularForms, QuasiWeakModularForms,
|
|
26
|
+
QuasiModularForms, QuasiCuspForms,
|
|
27
|
+
MeromorphicModularForms, WeakModularForms, ModularForms,
|
|
28
|
+
CuspForms, ZeroForm)
|
|
29
|
+
|
|
30
|
+
from sage.modular.modform_hecketriangle.subspace import ModularFormsSubSpace
|
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
# sage.doctest: needs sage.graphs
|
|
3
|
+
r"""
|
|
4
|
+
Analytic types of modular forms
|
|
5
|
+
|
|
6
|
+
Properties of modular forms and their generalizations are assembled
|
|
7
|
+
into one partially ordered set. See :class:`AnalyticType` for a
|
|
8
|
+
list of handled properties.
|
|
9
|
+
|
|
10
|
+
AUTHORS:
|
|
11
|
+
|
|
12
|
+
- Jonas Jermann (2013): initial version
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
# ****************************************************************************
|
|
16
|
+
# Copyright (C) 2013-2014 Jonas Jermann <jjermann2@gmail.com>
|
|
17
|
+
#
|
|
18
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
19
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
20
|
+
# the License, or (at your option) any later version.
|
|
21
|
+
# https://www.gnu.org/licenses/
|
|
22
|
+
# ****************************************************************************
|
|
23
|
+
|
|
24
|
+
from sage.sets.set import Set
|
|
25
|
+
from sage.combinat.posets.posets import Poset, FinitePoset
|
|
26
|
+
from sage.combinat.posets.lattices import FiniteLatticePoset
|
|
27
|
+
from sage.combinat.posets.elements import LatticePosetElement
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class AnalyticTypeElement(LatticePosetElement):
|
|
31
|
+
r"""
|
|
32
|
+
Analytic types of forms and/or spaces.
|
|
33
|
+
|
|
34
|
+
An analytic type element describes what basic analytic
|
|
35
|
+
properties are contained/included in it.
|
|
36
|
+
|
|
37
|
+
EXAMPLES::
|
|
38
|
+
|
|
39
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import (AnalyticType, AnalyticTypeElement)
|
|
40
|
+
sage: from sage.combinat.posets.elements import LatticePosetElement
|
|
41
|
+
sage: AT = AnalyticType()
|
|
42
|
+
sage: el = AT(["quasi", "cusp"])
|
|
43
|
+
sage: el
|
|
44
|
+
quasi cuspidal
|
|
45
|
+
sage: isinstance(el, AnalyticTypeElement)
|
|
46
|
+
True
|
|
47
|
+
sage: isinstance(el, LatticePosetElement)
|
|
48
|
+
True
|
|
49
|
+
sage: el.parent() == AT
|
|
50
|
+
True
|
|
51
|
+
sage: sorted(el.element,key=str)
|
|
52
|
+
[cusp, quasi]
|
|
53
|
+
sage: from sage.sets.set import Set_object_enumerated
|
|
54
|
+
sage: isinstance(el.element, Set_object_enumerated)
|
|
55
|
+
True
|
|
56
|
+
sage: first = sorted(el.element,key=str)[0]; first
|
|
57
|
+
cusp
|
|
58
|
+
sage: first.parent() == AT.base_poset()
|
|
59
|
+
True
|
|
60
|
+
|
|
61
|
+
sage: el2 = AT("holo")
|
|
62
|
+
sage: sum = el + el2
|
|
63
|
+
sage: sum
|
|
64
|
+
quasi modular
|
|
65
|
+
sage: sorted(sum.element,key=str)
|
|
66
|
+
[cusp, holo, quasi]
|
|
67
|
+
sage: el * el2
|
|
68
|
+
cuspidal
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
# We use the same constructor as LatticePosetElement
|
|
72
|
+
# def __init__(self, poset, element, vertex):
|
|
73
|
+
# super().__init__(poset, element, vertex)
|
|
74
|
+
|
|
75
|
+
def _repr_(self):
|
|
76
|
+
r"""
|
|
77
|
+
Return the string representation of ``self``.
|
|
78
|
+
|
|
79
|
+
EXAMPLES::
|
|
80
|
+
|
|
81
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
82
|
+
sage: AnalyticType()(["quasi", "cusp"])
|
|
83
|
+
quasi cuspidal
|
|
84
|
+
"""
|
|
85
|
+
return self.analytic_name()
|
|
86
|
+
|
|
87
|
+
def _latex_(self):
|
|
88
|
+
r"""
|
|
89
|
+
Return the LaTeX representation of ``self``.
|
|
90
|
+
|
|
91
|
+
EXAMPLES::
|
|
92
|
+
|
|
93
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
94
|
+
sage: latex(AnalyticType()(["quasi", "cusp"]))
|
|
95
|
+
\text{\texttt{quasi{ }cuspidal}}
|
|
96
|
+
"""
|
|
97
|
+
from sage.misc.latex import latex
|
|
98
|
+
return latex(self.analytic_name())
|
|
99
|
+
|
|
100
|
+
def analytic_space_name(self):
|
|
101
|
+
r"""
|
|
102
|
+
Return the (analytic part of the) name of a space
|
|
103
|
+
with the analytic type of ``self``.
|
|
104
|
+
|
|
105
|
+
This is used for the string representation of such spaces.
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
110
|
+
sage: AT = AnalyticType()
|
|
111
|
+
sage: AT(["quasi", "weak"]).analytic_space_name()
|
|
112
|
+
'QuasiWeakModular'
|
|
113
|
+
sage: AT(["quasi", "cusp"]).analytic_space_name()
|
|
114
|
+
'QuasiCusp'
|
|
115
|
+
sage: AT(["quasi"]).analytic_space_name()
|
|
116
|
+
'Zero'
|
|
117
|
+
sage: AT([]).analytic_space_name()
|
|
118
|
+
'Zero'
|
|
119
|
+
"""
|
|
120
|
+
name = ""
|
|
121
|
+
if self.parent()("quasi") <= self:
|
|
122
|
+
name += "Quasi"
|
|
123
|
+
if self.parent()("mero") <= self:
|
|
124
|
+
name += "MeromorphicModular"
|
|
125
|
+
elif self.parent()("weak") <= self:
|
|
126
|
+
name += "WeakModular"
|
|
127
|
+
elif self.parent()("holo") <= self:
|
|
128
|
+
name += "Modular"
|
|
129
|
+
elif self.parent()("cusp") <= self:
|
|
130
|
+
name += "Cusp"
|
|
131
|
+
else:
|
|
132
|
+
name = "Zero"
|
|
133
|
+
return name
|
|
134
|
+
|
|
135
|
+
def latex_space_name(self):
|
|
136
|
+
r"""
|
|
137
|
+
Return the short (analytic part of the) name of a space
|
|
138
|
+
with the analytic type of ``self`` for usage with latex.
|
|
139
|
+
|
|
140
|
+
This is used for the latex representation of such spaces.
|
|
141
|
+
|
|
142
|
+
EXAMPLES::
|
|
143
|
+
|
|
144
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
145
|
+
sage: AT = AnalyticType()
|
|
146
|
+
sage: AT("mero").latex_space_name()
|
|
147
|
+
'\\tilde{M}'
|
|
148
|
+
sage: AT("weak").latex_space_name()
|
|
149
|
+
'M^!'
|
|
150
|
+
sage: AT(["quasi", "cusp"]).latex_space_name()
|
|
151
|
+
'QC'
|
|
152
|
+
sage: AT([]).latex_space_name()
|
|
153
|
+
'Z'
|
|
154
|
+
"""
|
|
155
|
+
name = ""
|
|
156
|
+
if self.parent()("quasi") <= self:
|
|
157
|
+
name += "Q"
|
|
158
|
+
if self.parent()("mero") <= self:
|
|
159
|
+
name += "\\tilde{M}"
|
|
160
|
+
elif self.parent()("weak") <= self:
|
|
161
|
+
name += "M^!"
|
|
162
|
+
elif self.parent()("holo") <= self:
|
|
163
|
+
name += "M"
|
|
164
|
+
elif self.parent()("cusp") <= self:
|
|
165
|
+
name += "C"
|
|
166
|
+
else:
|
|
167
|
+
name = "Z"
|
|
168
|
+
return name
|
|
169
|
+
|
|
170
|
+
def analytic_name(self):
|
|
171
|
+
r"""
|
|
172
|
+
Return a string representation of the analytic type.
|
|
173
|
+
|
|
174
|
+
EXAMPLES::
|
|
175
|
+
|
|
176
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
177
|
+
sage: AT = AnalyticType()
|
|
178
|
+
sage: AT(["quasi", "weak"]).analytic_name()
|
|
179
|
+
'quasi weakly holomorphic modular'
|
|
180
|
+
sage: AT(["quasi", "cusp"]).analytic_name()
|
|
181
|
+
'quasi cuspidal'
|
|
182
|
+
sage: AT(["quasi"]).analytic_name()
|
|
183
|
+
'zero'
|
|
184
|
+
sage: AT([]).analytic_name()
|
|
185
|
+
'zero'
|
|
186
|
+
"""
|
|
187
|
+
name = ""
|
|
188
|
+
if self.parent()("quasi") <= self:
|
|
189
|
+
name += "quasi "
|
|
190
|
+
if self.parent()("mero") <= self:
|
|
191
|
+
name += "meromorphic modular"
|
|
192
|
+
elif self.parent()("weak") <= self:
|
|
193
|
+
name += "weakly holomorphic modular"
|
|
194
|
+
elif self.parent()("holo") <= self:
|
|
195
|
+
name += "modular"
|
|
196
|
+
elif self.parent()("cusp") <= self:
|
|
197
|
+
name += "cuspidal"
|
|
198
|
+
else:
|
|
199
|
+
name = "zero"
|
|
200
|
+
return name
|
|
201
|
+
|
|
202
|
+
def reduce_to(self, reduce_type):
|
|
203
|
+
r"""
|
|
204
|
+
Return a new analytic type which contains only analytic properties
|
|
205
|
+
specified in both ``self`` and ``reduce_type``.
|
|
206
|
+
|
|
207
|
+
INPUT:
|
|
208
|
+
|
|
209
|
+
- ``reduce_type`` -- an analytic type or something which is
|
|
210
|
+
convertible to an analytic type
|
|
211
|
+
|
|
212
|
+
OUTPUT: the new reduced analytic type
|
|
213
|
+
|
|
214
|
+
EXAMPLES::
|
|
215
|
+
|
|
216
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
217
|
+
sage: AT = AnalyticType()
|
|
218
|
+
sage: el = AT(["quasi", "cusp"])
|
|
219
|
+
sage: el2 = AT("holo")
|
|
220
|
+
|
|
221
|
+
sage: el.reduce_to(el2)
|
|
222
|
+
cuspidal
|
|
223
|
+
sage: el.reduce_to(el2) == el * el2
|
|
224
|
+
True
|
|
225
|
+
"""
|
|
226
|
+
|
|
227
|
+
reduce_type = self.parent()(reduce_type)
|
|
228
|
+
return self * reduce_type
|
|
229
|
+
|
|
230
|
+
def extend_by(self, extend_type):
|
|
231
|
+
r"""
|
|
232
|
+
Return a new analytic type which contains all analytic properties
|
|
233
|
+
specified either in ``self`` or in ``extend_type``.
|
|
234
|
+
|
|
235
|
+
INPUT:
|
|
236
|
+
|
|
237
|
+
- ``extend_type`` -- an analytic type or something which is
|
|
238
|
+
convertible to an analytic type
|
|
239
|
+
|
|
240
|
+
OUTPUT: the new extended analytic type
|
|
241
|
+
|
|
242
|
+
EXAMPLES::
|
|
243
|
+
|
|
244
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
245
|
+
sage: AT = AnalyticType()
|
|
246
|
+
sage: el = AT(["quasi", "cusp"])
|
|
247
|
+
sage: el2 = AT("holo")
|
|
248
|
+
|
|
249
|
+
sage: el.extend_by(el2)
|
|
250
|
+
quasi modular
|
|
251
|
+
sage: el.extend_by(el2) == el + el2
|
|
252
|
+
True
|
|
253
|
+
"""
|
|
254
|
+
|
|
255
|
+
extend_type = self.parent()(extend_type)
|
|
256
|
+
return self + extend_type
|
|
257
|
+
|
|
258
|
+
def __iter__(self):
|
|
259
|
+
r"""
|
|
260
|
+
Return an iterator of ``self`` which gives the basic analytic
|
|
261
|
+
properties contained in ``self`` as strings.
|
|
262
|
+
|
|
263
|
+
EXAMPLES::
|
|
264
|
+
|
|
265
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
266
|
+
sage: el = AnalyticType()(["quasi", "weak"])
|
|
267
|
+
sage: sorted(el)
|
|
268
|
+
['cusp', 'holo', 'quasi', 'weak']
|
|
269
|
+
sage: "mero" in el
|
|
270
|
+
False
|
|
271
|
+
sage: "cusp" in el
|
|
272
|
+
True
|
|
273
|
+
"""
|
|
274
|
+
return iter([el.element for el in self.element])
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
class AnalyticType(FiniteLatticePoset):
|
|
278
|
+
r"""
|
|
279
|
+
Container for all possible analytic types of forms and/or spaces.
|
|
280
|
+
|
|
281
|
+
The ``analytic type`` of forms spaces or rings describes all possible
|
|
282
|
+
occurring basic ``analytic properties`` of elements in the space/ring
|
|
283
|
+
(or more).
|
|
284
|
+
|
|
285
|
+
For ambient spaces/rings this means that all elements with those properties
|
|
286
|
+
(and the restrictions of the space/ring) are contained in the space/ring.
|
|
287
|
+
|
|
288
|
+
The analytic type of an element is the analytic type of its minimal
|
|
289
|
+
ambient space/ring.
|
|
290
|
+
|
|
291
|
+
The basic ``analytic properties`` are:
|
|
292
|
+
|
|
293
|
+
- ``quasi`` -- whether the element is quasi modular (and not modular)
|
|
294
|
+
or modular.
|
|
295
|
+
- ``mero`` -- ``meromorphic`` -- if the element is meromorphic
|
|
296
|
+
and meromorphic at infinity
|
|
297
|
+
- ``weak`` -- ``weakly holomorphic`` -- if the element is holomorphic
|
|
298
|
+
and meromorphic at infinity
|
|
299
|
+
- ``holo`` -- ``holomorphic`` -- if the element is holomorphic and
|
|
300
|
+
holomorphic at infinity
|
|
301
|
+
- ``cusp`` -- ``cuspidal`` -- if the element additionally has a positive
|
|
302
|
+
order at infinity
|
|
303
|
+
|
|
304
|
+
The ``zero`` elements/property have no analytic properties (or only ``quasi``).
|
|
305
|
+
|
|
306
|
+
For ring elements the property describes whether one of its homogeneous
|
|
307
|
+
components satisfies that property and the "union" of those properties
|
|
308
|
+
is returned as the ``analytic type``.
|
|
309
|
+
|
|
310
|
+
Similarly for quasi forms the property describes whether one of its
|
|
311
|
+
quasi components satisfies that property.
|
|
312
|
+
|
|
313
|
+
There is a (natural) partial order between the basic properties
|
|
314
|
+
(and analytic types) given by "inclusion". We name the analytic type
|
|
315
|
+
according to its maximal analytic properties.
|
|
316
|
+
|
|
317
|
+
For `n=3` the quasi form ``el = E6 - E2^3`` has the quasi components ``E6``
|
|
318
|
+
which is ``holomorphic`` and ``E2^3`` which is ``quasi holomorphic``.
|
|
319
|
+
So the analytic type of ``el`` is ``quasi holomorphic`` despite the fact
|
|
320
|
+
that the sum (``el``) describes a function which is zero at infinity.
|
|
321
|
+
|
|
322
|
+
EXAMPLES::
|
|
323
|
+
|
|
324
|
+
sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
|
|
325
|
+
sage: x,y,z,d = var("x,y,z,d") # needs sage.symbolic
|
|
326
|
+
sage: el = QuasiModularForms(n=3, k=6, ep=-1)(y-z^3) # needs sage.symbolic
|
|
327
|
+
sage: el.analytic_type() # needs sage.symbolic
|
|
328
|
+
quasi modular
|
|
329
|
+
|
|
330
|
+
Similarly the type of the ring element ``el2 = E4/Delta - E6/Delta`` is
|
|
331
|
+
``weakly holomorphic`` despite the fact that the sum (``el2``) describes
|
|
332
|
+
a function which is holomorphic at infinity::
|
|
333
|
+
|
|
334
|
+
sage: from sage.modular.modform_hecketriangle.graded_ring import WeakModularFormsRing
|
|
335
|
+
sage: x,y,z,d = var("x,y,z,d") # needs sage.symbolic
|
|
336
|
+
sage: el2 = WeakModularFormsRing(n=3)(x/(x^3-y^2)-y/(x^3-y^2)) # needs sage.symbolic
|
|
337
|
+
sage: el2.analytic_type() # needs sage.symbolic
|
|
338
|
+
weakly holomorphic modular
|
|
339
|
+
"""
|
|
340
|
+
|
|
341
|
+
Element = AnalyticTypeElement
|
|
342
|
+
|
|
343
|
+
@staticmethod
|
|
344
|
+
def __classcall__(cls):
|
|
345
|
+
r"""
|
|
346
|
+
Directly return the classcall of UniqueRepresentation
|
|
347
|
+
(skipping the classcalls of the other superclasses).
|
|
348
|
+
|
|
349
|
+
That's because ``self`` is supposed to be used as a Singleton.
|
|
350
|
+
It initializes the FinitelatticePoset with the proper arguments
|
|
351
|
+
by itself in ``self.__init__()``.
|
|
352
|
+
|
|
353
|
+
EXAMPLES::
|
|
354
|
+
|
|
355
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
356
|
+
sage: AT = AnalyticType()
|
|
357
|
+
sage: AT2 = AnalyticType()
|
|
358
|
+
sage: AT is AT2
|
|
359
|
+
True
|
|
360
|
+
"""
|
|
361
|
+
return super(FinitePoset, cls).__classcall__(cls)
|
|
362
|
+
|
|
363
|
+
def __init__(self):
|
|
364
|
+
r"""
|
|
365
|
+
Container for all possible analytic types of forms and/or spaces.
|
|
366
|
+
|
|
367
|
+
This class is supposed to be used as a Singleton.
|
|
368
|
+
|
|
369
|
+
It first creates a ``Poset`` that contains all basic analytic
|
|
370
|
+
properties to be modeled by the AnalyticType. Then the order
|
|
371
|
+
ideals lattice of that Poset is taken as the underlying
|
|
372
|
+
FiniteLatticePoset of ``self``.
|
|
373
|
+
|
|
374
|
+
In particular elements of ``self`` describe what basic analytic
|
|
375
|
+
properties are contained/included in that element.
|
|
376
|
+
|
|
377
|
+
EXAMPLES::
|
|
378
|
+
|
|
379
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
380
|
+
sage: from sage.combinat.posets.lattices import FiniteLatticePoset
|
|
381
|
+
sage: AT = AnalyticType()
|
|
382
|
+
sage: AT
|
|
383
|
+
Analytic Type
|
|
384
|
+
sage: isinstance(AT, FiniteLatticePoset)
|
|
385
|
+
True
|
|
386
|
+
|
|
387
|
+
sage: AT.is_lattice()
|
|
388
|
+
True
|
|
389
|
+
sage: AT.is_finite()
|
|
390
|
+
True
|
|
391
|
+
sage: AT.cardinality()
|
|
392
|
+
10
|
|
393
|
+
sage: AT.is_modular()
|
|
394
|
+
True
|
|
395
|
+
sage: AT.is_bounded()
|
|
396
|
+
True
|
|
397
|
+
sage: AT.is_distributive()
|
|
398
|
+
True
|
|
399
|
+
sage: sorted(AT, key=str)
|
|
400
|
+
[cuspidal,
|
|
401
|
+
meromorphic modular,
|
|
402
|
+
modular,
|
|
403
|
+
quasi cuspidal,
|
|
404
|
+
quasi meromorphic modular,
|
|
405
|
+
quasi modular,
|
|
406
|
+
quasi weakly holomorphic modular,
|
|
407
|
+
weakly holomorphic modular,
|
|
408
|
+
zero,
|
|
409
|
+
zero]
|
|
410
|
+
sage: len(AT.relations())
|
|
411
|
+
45
|
|
412
|
+
sage: sortkey = lambda xy: (str(xy[0]), str(xy[1]))
|
|
413
|
+
sage: sorted(AT.cover_relations(), key=sortkey)
|
|
414
|
+
[[cuspidal, modular],
|
|
415
|
+
[cuspidal, quasi cuspidal],
|
|
416
|
+
[meromorphic modular, quasi meromorphic modular],
|
|
417
|
+
[modular, quasi modular],
|
|
418
|
+
[modular, weakly holomorphic modular],
|
|
419
|
+
[quasi cuspidal, quasi modular],
|
|
420
|
+
[quasi modular, quasi weakly holomorphic modular],
|
|
421
|
+
[quasi weakly holomorphic modular, quasi meromorphic modular],
|
|
422
|
+
[weakly holomorphic modular, meromorphic modular],
|
|
423
|
+
[weakly holomorphic modular, quasi weakly holomorphic modular],
|
|
424
|
+
[zero, cuspidal],
|
|
425
|
+
[zero, quasi cuspidal],
|
|
426
|
+
[zero, zero]]
|
|
427
|
+
sage: AT.has_top()
|
|
428
|
+
True
|
|
429
|
+
sage: AT.has_bottom()
|
|
430
|
+
True
|
|
431
|
+
sage: AT.top()
|
|
432
|
+
quasi meromorphic modular
|
|
433
|
+
sage: AT.bottom()
|
|
434
|
+
zero
|
|
435
|
+
"""
|
|
436
|
+
# We (arbitrarily) choose to model by inclusion instead of restriction
|
|
437
|
+
P_elements = ["cusp", "holo", "weak", "mero", "quasi"]
|
|
438
|
+
P_relations = [["cusp", "holo"], ["holo", "weak"], ["weak", "mero"]]
|
|
439
|
+
|
|
440
|
+
self._base_poset = Poset([P_elements, P_relations], cover_relations=True,
|
|
441
|
+
linear_extension=True, facade=False)
|
|
442
|
+
|
|
443
|
+
L = self._base_poset.order_ideals_lattice()
|
|
444
|
+
H = L._hasse_diagram.relabel(dict(enumerate(L._elements)),
|
|
445
|
+
inplace=False)
|
|
446
|
+
FiniteLatticePoset.__init__(self, hasse_diagram=H,
|
|
447
|
+
elements=L._elements, category=L.category(),
|
|
448
|
+
facade=False, key=None)
|
|
449
|
+
|
|
450
|
+
def _repr_(self):
|
|
451
|
+
r"""
|
|
452
|
+
Return the string representation of ``self``.
|
|
453
|
+
|
|
454
|
+
EXAMPLES::
|
|
455
|
+
|
|
456
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
457
|
+
sage: AnalyticType()
|
|
458
|
+
Analytic Type
|
|
459
|
+
"""
|
|
460
|
+
|
|
461
|
+
return "Analytic Type"
|
|
462
|
+
|
|
463
|
+
def __call__(self, *args, **kwargs):
|
|
464
|
+
r"""
|
|
465
|
+
Return the result of the corresponding call function
|
|
466
|
+
of ``FiniteLatticePoset``.
|
|
467
|
+
|
|
468
|
+
If more than one argument is given it is called with
|
|
469
|
+
the list of those arguments instead.
|
|
470
|
+
|
|
471
|
+
.. NOTE::
|
|
472
|
+
|
|
473
|
+
The function just extends the ``__call__`` function to allow multiple arguments
|
|
474
|
+
(see the example below).
|
|
475
|
+
|
|
476
|
+
EXAMPLES::
|
|
477
|
+
|
|
478
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
479
|
+
sage: AT = AnalyticType()
|
|
480
|
+
sage: AT("holo", "quasi") == AT(["holo", "quasi"])
|
|
481
|
+
True
|
|
482
|
+
"""
|
|
483
|
+
if len(args) > 1:
|
|
484
|
+
return super().__call__(list(args), **kwargs)
|
|
485
|
+
else:
|
|
486
|
+
return super().__call__(*args, **kwargs)
|
|
487
|
+
|
|
488
|
+
def _element_constructor_(self, element):
|
|
489
|
+
r"""
|
|
490
|
+
Return ``element`` coerced into an element of ``self``.
|
|
491
|
+
|
|
492
|
+
INPUT:
|
|
493
|
+
|
|
494
|
+
- ``element`` -- either something which coerces in the
|
|
495
|
+
``FiniteLatticePoset`` of ``self`` or a string or a list of strings
|
|
496
|
+
of basic properties that should be contained in the new element
|
|
497
|
+
|
|
498
|
+
OUTPUT:
|
|
499
|
+
|
|
500
|
+
An element of ``self`` corresponding to ``element``
|
|
501
|
+
(resp. containing all specified basic analytic properties).
|
|
502
|
+
|
|
503
|
+
EXAMPLES::
|
|
504
|
+
|
|
505
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import (AnalyticType, AnalyticTypeElement)
|
|
506
|
+
sage: AT = AnalyticType()
|
|
507
|
+
sage: AT("holo") == AT(["holo"])
|
|
508
|
+
True
|
|
509
|
+
sage: el = AT(["quasi", "holo"])
|
|
510
|
+
sage: el
|
|
511
|
+
quasi modular
|
|
512
|
+
sage: el == AT(("holo", "quasi"))
|
|
513
|
+
True
|
|
514
|
+
sage: el.parent() == AT
|
|
515
|
+
True
|
|
516
|
+
sage: isinstance(el, AnalyticTypeElement)
|
|
517
|
+
True
|
|
518
|
+
sage: sorted(el.element,key=str)
|
|
519
|
+
[cusp, holo, quasi]
|
|
520
|
+
"""
|
|
521
|
+
if isinstance(element, str):
|
|
522
|
+
element = [element]
|
|
523
|
+
if isinstance(element, (list, tuple)):
|
|
524
|
+
element = Set(self._base_poset.order_ideal([self._base_poset(s)
|
|
525
|
+
for s in element]))
|
|
526
|
+
|
|
527
|
+
return super()._element_constructor_(element)
|
|
528
|
+
|
|
529
|
+
# res = self.first()
|
|
530
|
+
# for element in args:
|
|
531
|
+
# if type(element)==str:
|
|
532
|
+
# element=[element]
|
|
533
|
+
# if isinstance(element,list) or isinstance(element,tuple):
|
|
534
|
+
# element = Set(self._base_poset.order_ideal([self._base_poset(s) for s in element]))
|
|
535
|
+
# element = super()._element_constructor_(element)
|
|
536
|
+
# res += element
|
|
537
|
+
# return res
|
|
538
|
+
|
|
539
|
+
def base_poset(self):
|
|
540
|
+
r"""
|
|
541
|
+
Return the base poset from which everything of ``self``
|
|
542
|
+
was constructed. Elements of the base poset correspond
|
|
543
|
+
to the basic ``analytic properties``.
|
|
544
|
+
|
|
545
|
+
EXAMPLES::
|
|
546
|
+
|
|
547
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
548
|
+
sage: from sage.combinat.posets.posets import FinitePoset
|
|
549
|
+
sage: AT = AnalyticType()
|
|
550
|
+
sage: P = AT.base_poset()
|
|
551
|
+
sage: P
|
|
552
|
+
Finite poset containing 5 elements with distinguished linear extension
|
|
553
|
+
sage: isinstance(P, FinitePoset)
|
|
554
|
+
True
|
|
555
|
+
|
|
556
|
+
sage: P.is_lattice()
|
|
557
|
+
False
|
|
558
|
+
sage: P.is_finite()
|
|
559
|
+
True
|
|
560
|
+
sage: P.cardinality()
|
|
561
|
+
5
|
|
562
|
+
sage: P.is_bounded()
|
|
563
|
+
False
|
|
564
|
+
sage: P.list()
|
|
565
|
+
[cusp, holo, weak, mero, quasi]
|
|
566
|
+
|
|
567
|
+
sage: len(P.relations())
|
|
568
|
+
11
|
|
569
|
+
sage: P.cover_relations()
|
|
570
|
+
[[cusp, holo], [holo, weak], [weak, mero]]
|
|
571
|
+
sage: P.has_top()
|
|
572
|
+
False
|
|
573
|
+
sage: P.has_bottom()
|
|
574
|
+
False
|
|
575
|
+
"""
|
|
576
|
+
|
|
577
|
+
return self._base_poset
|
|
578
|
+
|
|
579
|
+
def lattice_poset(self):
|
|
580
|
+
r"""
|
|
581
|
+
Return the underlying lattice poset of ``self``.
|
|
582
|
+
|
|
583
|
+
EXAMPLES::
|
|
584
|
+
|
|
585
|
+
sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
|
|
586
|
+
sage: AnalyticType().lattice_poset()
|
|
587
|
+
Finite lattice containing 10 elements
|
|
588
|
+
"""
|
|
589
|
+
|
|
590
|
+
return FiniteLatticePoset(self._base_poset.order_ideals_lattice(), facade=False)
|