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,455 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
# sage.doctest: needs sage.libs.flint
|
|
3
|
+
"""
|
|
4
|
+
Subspace of ambient spaces of modular symbols
|
|
5
|
+
"""
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Sage: Open Source Mathematical Software
|
|
8
|
+
#
|
|
9
|
+
# Copyright (C) 2005 William Stein <wstein@gmail.com>
|
|
10
|
+
#
|
|
11
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
12
|
+
#
|
|
13
|
+
# This code is distributed in the hope that it will be useful,
|
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
# General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# The full text of the GPL is available at:
|
|
19
|
+
#
|
|
20
|
+
# https://www.gnu.org/licenses/
|
|
21
|
+
# ****************************************************************************
|
|
22
|
+
|
|
23
|
+
import sage.modular.hecke.all as hecke
|
|
24
|
+
import sage.structure.factorization
|
|
25
|
+
import sage.modular.modsym.space
|
|
26
|
+
from sage.misc.cachefunc import cached_method
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ModularSymbolsSubspace(sage.modular.modsym.space.ModularSymbolsSpace, hecke.HeckeSubmodule):
|
|
30
|
+
"""
|
|
31
|
+
Subspace of ambient space of modular symbols
|
|
32
|
+
"""
|
|
33
|
+
################################
|
|
34
|
+
# Special Methods
|
|
35
|
+
################################
|
|
36
|
+
def __init__(self, ambient_hecke_module, submodule,
|
|
37
|
+
dual_free_module=None, check=False):
|
|
38
|
+
"""
|
|
39
|
+
INPUT:
|
|
40
|
+
|
|
41
|
+
- ``ambient_hecke_module`` -- the ambient space of
|
|
42
|
+
modular symbols in which we're constructing a submodule
|
|
43
|
+
|
|
44
|
+
- ``submodule`` -- the underlying free module of the
|
|
45
|
+
submodule
|
|
46
|
+
|
|
47
|
+
- ``dual_free_module`` -- underlying free module of
|
|
48
|
+
the dual of the submodule (optional)
|
|
49
|
+
|
|
50
|
+
- ``check`` -- boolean (default: ``False``); whether to check that
|
|
51
|
+
the submodule is invariant under all Hecke operators `T_p`
|
|
52
|
+
|
|
53
|
+
EXAMPLES::
|
|
54
|
+
|
|
55
|
+
sage: M = ModularSymbols(15,4) ; S = M.cuspidal_submodule() # indirect doctest
|
|
56
|
+
sage: S
|
|
57
|
+
Modular Symbols subspace of dimension 8 of Modular Symbols space of dimension 12
|
|
58
|
+
for Gamma_0(15) of weight 4 with sign 0 over Rational Field
|
|
59
|
+
sage: S == loads(dumps(S))
|
|
60
|
+
True
|
|
61
|
+
sage: M = ModularSymbols(1,24)
|
|
62
|
+
sage: A = M.ambient_hecke_module()
|
|
63
|
+
sage: B = A.submodule([ x.element() for x in M.cuspidal_submodule().gens() ])
|
|
64
|
+
sage: S = sage.modular.modsym.subspace.ModularSymbolsSubspace(A, B.free_module())
|
|
65
|
+
sage: S
|
|
66
|
+
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 5
|
|
67
|
+
for Gamma_0(1) of weight 24 with sign 0 over Rational Field
|
|
68
|
+
sage: S == loads(dumps(S))
|
|
69
|
+
True
|
|
70
|
+
"""
|
|
71
|
+
self.__ambient_hecke_module = ambient_hecke_module
|
|
72
|
+
A = ambient_hecke_module
|
|
73
|
+
sage.modular.modsym.space.ModularSymbolsSpace.__init__(self, A.group(),
|
|
74
|
+
A.weight(),
|
|
75
|
+
A.character(), A.sign(), A.base_ring())
|
|
76
|
+
hecke.HeckeSubmodule.__init__(self, A, submodule, dual_free_module=dual_free_module, check=check)
|
|
77
|
+
|
|
78
|
+
def _repr_(self):
|
|
79
|
+
"""
|
|
80
|
+
Return the string representation of ``self``.
|
|
81
|
+
|
|
82
|
+
EXAMPLES::
|
|
83
|
+
|
|
84
|
+
sage: ModularSymbols(24,4).cuspidal_subspace()._repr_()
|
|
85
|
+
'Modular Symbols subspace of dimension 16 of Modular Symbols space of dimension 24 for Gamma_0(24) of weight 4 with sign 0 over Rational Field'
|
|
86
|
+
"""
|
|
87
|
+
return "Modular Symbols subspace of dimension %s of %s" % (
|
|
88
|
+
self.rank(), self.ambient_module())
|
|
89
|
+
|
|
90
|
+
################################
|
|
91
|
+
# Public functions
|
|
92
|
+
################################
|
|
93
|
+
def boundary_map(self):
|
|
94
|
+
"""
|
|
95
|
+
The boundary map to the corresponding space of boundary modular
|
|
96
|
+
symbols. (This is the restriction of the map on the ambient
|
|
97
|
+
space.)
|
|
98
|
+
|
|
99
|
+
EXAMPLES::
|
|
100
|
+
|
|
101
|
+
sage: M = ModularSymbols(1, 24, sign=1) ; M
|
|
102
|
+
Modular Symbols space of dimension 3 for Gamma_0(1) of weight 24
|
|
103
|
+
with sign 1 over Rational Field
|
|
104
|
+
sage: M.basis()
|
|
105
|
+
([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)], [X^22,(0,0)])
|
|
106
|
+
sage: M.cuspidal_submodule().basis()
|
|
107
|
+
([X^18*Y^4,(0,0)], [X^20*Y^2,(0,0)])
|
|
108
|
+
sage: M.eisenstein_submodule().basis()
|
|
109
|
+
([X^18*Y^4,(0,0)] + 166747/324330*[X^20*Y^2,(0,0)] + 236364091/6742820700*[X^22,(0,0)],)
|
|
110
|
+
sage: M.boundary_map()
|
|
111
|
+
Hecke module morphism boundary map defined by the matrix
|
|
112
|
+
[ 0]
|
|
113
|
+
[ 0]
|
|
114
|
+
[-1]
|
|
115
|
+
Domain: Modular Symbols space of dimension 3 for Gamma_0(1) of weight ...
|
|
116
|
+
Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ...
|
|
117
|
+
sage: M.cuspidal_subspace().boundary_map()
|
|
118
|
+
Hecke module morphism defined by the matrix
|
|
119
|
+
[0]
|
|
120
|
+
[0]
|
|
121
|
+
Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ...
|
|
122
|
+
Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ...
|
|
123
|
+
sage: M.eisenstein_submodule().boundary_map()
|
|
124
|
+
Hecke module morphism defined by the matrix
|
|
125
|
+
[-236364091/6742820700]
|
|
126
|
+
Domain: Modular Symbols subspace of dimension 1 of Modular Symbols space ...
|
|
127
|
+
Codomain: Space of Boundary Modular Symbols for Modular Group SL(2,Z) ...
|
|
128
|
+
"""
|
|
129
|
+
try:
|
|
130
|
+
return self.__boundary_map
|
|
131
|
+
except AttributeError:
|
|
132
|
+
# restrict from ambient space
|
|
133
|
+
b = self.ambient_hecke_module().boundary_map()
|
|
134
|
+
self.__boundary_map = b.restrict_domain(self)
|
|
135
|
+
return self.__boundary_map
|
|
136
|
+
|
|
137
|
+
def cuspidal_submodule(self):
|
|
138
|
+
"""
|
|
139
|
+
Return the cuspidal subspace of this subspace of modular symbols.
|
|
140
|
+
|
|
141
|
+
EXAMPLES::
|
|
142
|
+
|
|
143
|
+
sage: S = ModularSymbols(42,4).cuspidal_submodule() ; S
|
|
144
|
+
Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48
|
|
145
|
+
for Gamma_0(42) of weight 4 with sign 0 over Rational Field
|
|
146
|
+
sage: S.is_cuspidal()
|
|
147
|
+
True
|
|
148
|
+
sage: S.cuspidal_submodule()
|
|
149
|
+
Modular Symbols subspace of dimension 40 of Modular Symbols space of dimension 48
|
|
150
|
+
for Gamma_0(42) of weight 4 with sign 0 over Rational Field
|
|
151
|
+
|
|
152
|
+
The cuspidal submodule of the cuspidal submodule is just itself::
|
|
153
|
+
|
|
154
|
+
sage: S.cuspidal_submodule() is S
|
|
155
|
+
True
|
|
156
|
+
sage: S.cuspidal_submodule() == S
|
|
157
|
+
True
|
|
158
|
+
|
|
159
|
+
An example where we abuse the _set_is_cuspidal function::
|
|
160
|
+
|
|
161
|
+
sage: M = ModularSymbols(389)
|
|
162
|
+
sage: S = M.eisenstein_submodule()
|
|
163
|
+
sage: S._set_is_cuspidal(True)
|
|
164
|
+
sage: S.cuspidal_submodule()
|
|
165
|
+
Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 65
|
|
166
|
+
for Gamma_0(389) of weight 2 with sign 0 over Rational Field
|
|
167
|
+
"""
|
|
168
|
+
try:
|
|
169
|
+
return self.__cuspidal_submodule
|
|
170
|
+
except AttributeError:
|
|
171
|
+
try:
|
|
172
|
+
if self.__is_cuspidal:
|
|
173
|
+
return self
|
|
174
|
+
except AttributeError:
|
|
175
|
+
pass
|
|
176
|
+
S = self.ambient_hecke_module().cuspidal_submodule()
|
|
177
|
+
self.__cuspidal_submodule = S.intersection(self)
|
|
178
|
+
return self.__cuspidal_submodule
|
|
179
|
+
|
|
180
|
+
def dual_star_involution_matrix(self):
|
|
181
|
+
"""
|
|
182
|
+
Return the matrix of the dual star involution.
|
|
183
|
+
|
|
184
|
+
This involution is induced by
|
|
185
|
+
complex conjugation on the linear dual of modular symbols.
|
|
186
|
+
|
|
187
|
+
EXAMPLES::
|
|
188
|
+
|
|
189
|
+
sage: S = ModularSymbols(6,4) ; S.dual_star_involution_matrix()
|
|
190
|
+
[ 1 0 0 0 0 0]
|
|
191
|
+
[ 0 1 0 0 0 0]
|
|
192
|
+
[ 0 -2 1 2 0 0]
|
|
193
|
+
[ 0 2 0 -1 0 0]
|
|
194
|
+
[ 0 -2 0 2 1 0]
|
|
195
|
+
[ 0 2 0 -2 0 1]
|
|
196
|
+
sage: S.star_involution().matrix().transpose() == S.dual_star_involution_matrix()
|
|
197
|
+
True
|
|
198
|
+
"""
|
|
199
|
+
try:
|
|
200
|
+
return self.__dual_star_involution
|
|
201
|
+
except AttributeError:
|
|
202
|
+
pass
|
|
203
|
+
S = self.ambient_hecke_module().dual_star_involution_matrix()
|
|
204
|
+
A = S.restrict(self.dual_free_module())
|
|
205
|
+
self.__dual_star_involution = A
|
|
206
|
+
return self.__dual_star_involution
|
|
207
|
+
|
|
208
|
+
def eisenstein_subspace(self):
|
|
209
|
+
"""
|
|
210
|
+
Return the Eisenstein subspace of this space of modular symbols.
|
|
211
|
+
|
|
212
|
+
EXAMPLES::
|
|
213
|
+
|
|
214
|
+
sage: ModularSymbols(24,4).eisenstein_subspace()
|
|
215
|
+
Modular Symbols subspace of dimension 8 of Modular Symbols space of dimension 24
|
|
216
|
+
for Gamma_0(24) of weight 4 with sign 0 over Rational Field
|
|
217
|
+
sage: ModularSymbols(20,2).cuspidal_subspace().eisenstein_subspace()
|
|
218
|
+
Modular Symbols subspace of dimension 0 of Modular Symbols space of dimension 7
|
|
219
|
+
for Gamma_0(20) of weight 2 with sign 0 over Rational Field
|
|
220
|
+
"""
|
|
221
|
+
try:
|
|
222
|
+
return self.__eisenstein_subspace
|
|
223
|
+
except AttributeError:
|
|
224
|
+
S = self.ambient_hecke_module().eisenstein_subspace()
|
|
225
|
+
self.__eisenstein_subspace = S.intersection(self)
|
|
226
|
+
return self.__eisenstein_subspace
|
|
227
|
+
|
|
228
|
+
def factorization(self):
|
|
229
|
+
"""
|
|
230
|
+
Return a list of pairs `(S,e)` where `S` is simple
|
|
231
|
+
spaces of modular symbols and ``self`` is isomorphic to the direct sum
|
|
232
|
+
of the `S^e` as a module over the *anemic* Hecke algebra
|
|
233
|
+
adjoin the star involution.
|
|
234
|
+
|
|
235
|
+
The cuspidal `S` are all simple, but the Eisenstein factors
|
|
236
|
+
need not be simple.
|
|
237
|
+
|
|
238
|
+
The factors are sorted by dimension - don't depend on much more for
|
|
239
|
+
now.
|
|
240
|
+
|
|
241
|
+
ASSUMPTION: ``self`` is a module over the anemic Hecke algebra.
|
|
242
|
+
|
|
243
|
+
EXAMPLES: Note that if the sign is 1 then the cuspidal factors
|
|
244
|
+
occur twice, one with each star eigenvalue.
|
|
245
|
+
|
|
246
|
+
::
|
|
247
|
+
|
|
248
|
+
sage: M = ModularSymbols(11)
|
|
249
|
+
sage: D = M.factorization(); D
|
|
250
|
+
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3
|
|
251
|
+
for Gamma_0(11) of weight 2 with sign 0 over Rational Field) *
|
|
252
|
+
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3
|
|
253
|
+
for Gamma_0(11) of weight 2 with sign 0 over Rational Field) *
|
|
254
|
+
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3
|
|
255
|
+
for Gamma_0(11) of weight 2 with sign 0 over Rational Field)
|
|
256
|
+
sage: [A.T(2).matrix() for A, _ in D]
|
|
257
|
+
[[-2], [3], [-2]]
|
|
258
|
+
sage: [A.star_eigenvalues() for A, _ in D]
|
|
259
|
+
[[-1], [1], [1]]
|
|
260
|
+
|
|
261
|
+
In this example there is one old factor squared.
|
|
262
|
+
|
|
263
|
+
::
|
|
264
|
+
|
|
265
|
+
sage: M = ModularSymbols(22,sign=1)
|
|
266
|
+
sage: S = M.cuspidal_submodule()
|
|
267
|
+
sage: S.factorization()
|
|
268
|
+
(Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2
|
|
269
|
+
for Gamma_0(11) of weight 2 with sign 1 over Rational Field)^2
|
|
270
|
+
|
|
271
|
+
::
|
|
272
|
+
|
|
273
|
+
sage: M = ModularSymbols(Gamma0(22), 2, sign=1)
|
|
274
|
+
sage: M1 = M.decomposition()[1]
|
|
275
|
+
sage: M1.factorization()
|
|
276
|
+
Modular Symbols subspace of dimension 3 of Modular Symbols space of dimension 5
|
|
277
|
+
for Gamma_0(22) of weight 2 with sign 1 over Rational Field
|
|
278
|
+
"""
|
|
279
|
+
try:
|
|
280
|
+
return self._factorization
|
|
281
|
+
except AttributeError:
|
|
282
|
+
pass
|
|
283
|
+
try:
|
|
284
|
+
if self._is_simple:
|
|
285
|
+
return [(self, 1)]
|
|
286
|
+
except AttributeError:
|
|
287
|
+
pass
|
|
288
|
+
if self.is_new() and self.is_cuspidal():
|
|
289
|
+
D = []
|
|
290
|
+
N = self.decomposition()
|
|
291
|
+
if self.sign() == 0:
|
|
292
|
+
for A in N:
|
|
293
|
+
if A.is_cuspidal():
|
|
294
|
+
V = A.plus_submodule()
|
|
295
|
+
V._is_simple = True
|
|
296
|
+
D.append((V, 1))
|
|
297
|
+
V = A.minus_submodule()
|
|
298
|
+
V._is_simple = True
|
|
299
|
+
D.append((V, 1))
|
|
300
|
+
else:
|
|
301
|
+
A._is_simple = True
|
|
302
|
+
D.append((A, 1))
|
|
303
|
+
else:
|
|
304
|
+
for A in N:
|
|
305
|
+
A._is_simple = True
|
|
306
|
+
D.append((A, 1))
|
|
307
|
+
else:
|
|
308
|
+
# Compute factorization of the ambient space, then compute multiplicity
|
|
309
|
+
# of each factor in this space.
|
|
310
|
+
D = []
|
|
311
|
+
for S in self.ambient_hecke_module().simple_factors():
|
|
312
|
+
n = self.multiplicity(S, check_simple=False)
|
|
313
|
+
if n > 0:
|
|
314
|
+
D.append((S, n))
|
|
315
|
+
# endif
|
|
316
|
+
|
|
317
|
+
# check that dimensions add up
|
|
318
|
+
r = self.dimension()
|
|
319
|
+
s = sum([A.rank() * mult for A, mult in D])
|
|
320
|
+
if r != s:
|
|
321
|
+
raise NotImplementedError("modular symbols factorization not fully implemented yet "
|
|
322
|
+
"-- self has dimension %s, but sum of dimensions of factors is %s" % (r, s))
|
|
323
|
+
self._factorization = sage.structure.factorization.Factorization(D, cr=True)
|
|
324
|
+
return self._factorization
|
|
325
|
+
|
|
326
|
+
def is_cuspidal(self) -> bool:
|
|
327
|
+
"""
|
|
328
|
+
Return ``True`` if ``self`` is cuspidal.
|
|
329
|
+
|
|
330
|
+
EXAMPLES::
|
|
331
|
+
|
|
332
|
+
sage: ModularSymbols(42,4).cuspidal_submodule().is_cuspidal()
|
|
333
|
+
True
|
|
334
|
+
sage: ModularSymbols(12,6).eisenstein_submodule().is_cuspidal()
|
|
335
|
+
False
|
|
336
|
+
"""
|
|
337
|
+
try:
|
|
338
|
+
return self.__is_cuspidal
|
|
339
|
+
except AttributeError:
|
|
340
|
+
C = self.ambient_hecke_module().cuspidal_submodule()
|
|
341
|
+
self.__is_cuspidal = self.is_submodule(C)
|
|
342
|
+
return self.__is_cuspidal
|
|
343
|
+
|
|
344
|
+
def _set_is_cuspidal(self, t):
|
|
345
|
+
"""
|
|
346
|
+
Used internally to declare that a given submodule is cuspidal.
|
|
347
|
+
|
|
348
|
+
EXAMPLES: We abuse this command::
|
|
349
|
+
|
|
350
|
+
sage: M = ModularSymbols(389)
|
|
351
|
+
sage: S = M.eisenstein_submodule()
|
|
352
|
+
sage: S._set_is_cuspidal(True)
|
|
353
|
+
sage: S.is_cuspidal()
|
|
354
|
+
True
|
|
355
|
+
"""
|
|
356
|
+
self.__is_cuspidal = t
|
|
357
|
+
|
|
358
|
+
@cached_method
|
|
359
|
+
def is_eisenstein(self) -> bool:
|
|
360
|
+
"""
|
|
361
|
+
Return ``True`` if ``self`` is an Eisenstein subspace.
|
|
362
|
+
|
|
363
|
+
EXAMPLES::
|
|
364
|
+
|
|
365
|
+
sage: ModularSymbols(22,6).cuspidal_submodule().is_eisenstein()
|
|
366
|
+
False
|
|
367
|
+
sage: ModularSymbols(22,6).eisenstein_submodule().is_eisenstein()
|
|
368
|
+
True
|
|
369
|
+
"""
|
|
370
|
+
C = self.ambient_hecke_module().eisenstein_subspace()
|
|
371
|
+
return self.is_submodule(C)
|
|
372
|
+
|
|
373
|
+
def _compute_sign_subspace(self, sign, compute_dual=True):
|
|
374
|
+
"""
|
|
375
|
+
Return the subspace of ``self`` that is fixed under the star
|
|
376
|
+
involution.
|
|
377
|
+
|
|
378
|
+
INPUT:
|
|
379
|
+
|
|
380
|
+
- ``sign`` -- integer (either -1 or +1)
|
|
381
|
+
|
|
382
|
+
- ``compute_dual`` -- boolean (default: ``True``); also
|
|
383
|
+
compute dual subspace. This is useful for many algorithms.
|
|
384
|
+
|
|
385
|
+
OUTPUT: subspace of modular symbols
|
|
386
|
+
|
|
387
|
+
EXAMPLES::
|
|
388
|
+
|
|
389
|
+
sage: S = ModularSymbols(100,2).cuspidal_submodule() ; S
|
|
390
|
+
Modular Symbols subspace of dimension 14 of Modular Symbols space of dimension 31 for Gamma_0(100) of weight 2 with sign 0 over Rational Field
|
|
391
|
+
sage: S._compute_sign_subspace(1)
|
|
392
|
+
Modular Symbols subspace of dimension 7 of Modular Symbols space of dimension 31 for Gamma_0(100) of weight 2 with sign 0 over Rational Field
|
|
393
|
+
sage: S._compute_sign_subspace(-1)
|
|
394
|
+
Modular Symbols subspace of dimension 7 of Modular Symbols space of dimension 31 for Gamma_0(100) of weight 2 with sign 0 over Rational Field
|
|
395
|
+
sage: S._compute_sign_subspace(-1).sign()
|
|
396
|
+
-1
|
|
397
|
+
"""
|
|
398
|
+
S = self.star_involution().matrix() - sign
|
|
399
|
+
V = S.kernel()
|
|
400
|
+
if compute_dual:
|
|
401
|
+
Sdual = self.dual_star_involution_matrix() - sign
|
|
402
|
+
Vdual = Sdual.kernel()
|
|
403
|
+
else:
|
|
404
|
+
Vdual = None
|
|
405
|
+
res = self.submodule_from_nonembedded_module(V, Vdual)
|
|
406
|
+
res._set_sign(sign)
|
|
407
|
+
return res
|
|
408
|
+
|
|
409
|
+
def star_involution(self):
|
|
410
|
+
"""
|
|
411
|
+
Return the star involution on self, which is induced by complex
|
|
412
|
+
conjugation on modular symbols.
|
|
413
|
+
|
|
414
|
+
EXAMPLES::
|
|
415
|
+
|
|
416
|
+
sage: M = ModularSymbols(1,24)
|
|
417
|
+
sage: M.star_involution()
|
|
418
|
+
Hecke module morphism Star involution on Modular Symbols space of dimension 5
|
|
419
|
+
for Gamma_0(1) of weight 24 with sign 0 over Rational Field defined by the matrix
|
|
420
|
+
[ 1 0 0 0 0]
|
|
421
|
+
[ 0 -1 0 0 0]
|
|
422
|
+
[ 0 0 1 0 0]
|
|
423
|
+
[ 0 0 0 -1 0]
|
|
424
|
+
[ 0 0 0 0 1]
|
|
425
|
+
Domain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ...
|
|
426
|
+
Codomain: Modular Symbols space of dimension 5 for Gamma_0(1) of weight ...
|
|
427
|
+
sage: M.cuspidal_subspace().star_involution()
|
|
428
|
+
Hecke module morphism defined by the matrix
|
|
429
|
+
[ 1 0 0 0]
|
|
430
|
+
[ 0 -1 0 0]
|
|
431
|
+
[ 0 0 1 0]
|
|
432
|
+
[ 0 0 0 -1]
|
|
433
|
+
Domain: Modular Symbols subspace of dimension 4 of Modular Symbols space ...
|
|
434
|
+
Codomain: Modular Symbols subspace of dimension 4 of Modular Symbols space ...
|
|
435
|
+
sage: M.plus_submodule().star_involution()
|
|
436
|
+
Hecke module morphism defined by the matrix
|
|
437
|
+
[1 0 0]
|
|
438
|
+
[0 1 0]
|
|
439
|
+
[0 0 1]
|
|
440
|
+
Domain: Modular Symbols subspace of dimension 3 of Modular Symbols space ...
|
|
441
|
+
Codomain: Modular Symbols subspace of dimension 3 of Modular Symbols space ...
|
|
442
|
+
sage: M.minus_submodule().star_involution()
|
|
443
|
+
Hecke module morphism defined by the matrix
|
|
444
|
+
[-1 0]
|
|
445
|
+
[ 0 -1]
|
|
446
|
+
Domain: Modular Symbols subspace of dimension 2 of Modular Symbols space ...
|
|
447
|
+
Codomain: Modular Symbols subspace of dimension 2 of Modular Symbols space ...
|
|
448
|
+
"""
|
|
449
|
+
try:
|
|
450
|
+
return self.__star_involution
|
|
451
|
+
except AttributeError:
|
|
452
|
+
pass
|
|
453
|
+
S = self.ambient_hecke_module().star_involution()
|
|
454
|
+
self.__star_involution = S.restrict(self)
|
|
455
|
+
return self.__star_involution
|