passagemath-schemes 10.8.1a4__cp314-cp314t-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.
Files changed (312) hide show
  1. passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
  2. passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
  3. passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
  4. passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
  5. passagemath_schemes/__init__.py +3 -0
  6. passagemath_schemes-10.8.1a4.dist-info/METADATA +203 -0
  7. passagemath_schemes-10.8.1a4.dist-info/METADATA.bak +204 -0
  8. passagemath_schemes-10.8.1a4.dist-info/RECORD +312 -0
  9. passagemath_schemes-10.8.1a4.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.8.1a4.dist-info/top_level.txt +3 -0
  11. sage/all__sagemath_schemes.py +23 -0
  12. sage/databases/all__sagemath_schemes.py +7 -0
  13. sage/databases/cremona.py +1723 -0
  14. sage/dynamics/all__sagemath_schemes.py +2 -0
  15. sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
  16. sage/dynamics/arithmetic_dynamics/all.py +14 -0
  17. sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
  18. sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
  19. sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
  20. sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
  21. sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
  22. sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
  23. sage/dynamics/arithmetic_dynamics/projective_ds.py +9556 -0
  24. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314t-darwin.so +0 -0
  25. sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
  26. sage/dynamics/arithmetic_dynamics/wehlerK3.py +2578 -0
  27. sage/lfunctions/all.py +18 -0
  28. sage/lfunctions/dokchitser.py +727 -0
  29. sage/lfunctions/pari.py +971 -0
  30. sage/lfunctions/zero_sums.cpython-314t-darwin.so +0 -0
  31. sage/lfunctions/zero_sums.pyx +1847 -0
  32. sage/modular/abvar/abvar.py +5132 -0
  33. sage/modular/abvar/abvar_ambient_jacobian.py +414 -0
  34. sage/modular/abvar/abvar_newform.py +246 -0
  35. sage/modular/abvar/all.py +8 -0
  36. sage/modular/abvar/constructor.py +187 -0
  37. sage/modular/abvar/cuspidal_subgroup.py +371 -0
  38. sage/modular/abvar/finite_subgroup.py +896 -0
  39. sage/modular/abvar/homology.py +721 -0
  40. sage/modular/abvar/homspace.py +989 -0
  41. sage/modular/abvar/lseries.py +415 -0
  42. sage/modular/abvar/morphism.py +935 -0
  43. sage/modular/abvar/torsion_point.py +274 -0
  44. sage/modular/abvar/torsion_subgroup.py +741 -0
  45. sage/modular/all.py +43 -0
  46. sage/modular/arithgroup/all.py +20 -0
  47. sage/modular/arithgroup/arithgroup_element.cpython-314t-darwin.so +0 -0
  48. sage/modular/arithgroup/arithgroup_element.pyx +474 -0
  49. sage/modular/arithgroup/arithgroup_generic.py +1406 -0
  50. sage/modular/arithgroup/arithgroup_perm.py +2692 -0
  51. sage/modular/arithgroup/congroup.cpython-314t-darwin.so +0 -0
  52. sage/modular/arithgroup/congroup.pyx +334 -0
  53. sage/modular/arithgroup/congroup_gamma.py +361 -0
  54. sage/modular/arithgroup/congroup_gamma0.py +692 -0
  55. sage/modular/arithgroup/congroup_gamma1.py +659 -0
  56. sage/modular/arithgroup/congroup_gammaH.py +1491 -0
  57. sage/modular/arithgroup/congroup_generic.py +630 -0
  58. sage/modular/arithgroup/congroup_sl2z.py +266 -0
  59. sage/modular/arithgroup/farey_symbol.cpython-314t-darwin.so +0 -0
  60. sage/modular/arithgroup/farey_symbol.pyx +1067 -0
  61. sage/modular/arithgroup/tests.py +425 -0
  62. sage/modular/btquotients/all.py +4 -0
  63. sage/modular/btquotients/btquotient.py +3736 -0
  64. sage/modular/btquotients/pautomorphicform.py +2564 -0
  65. sage/modular/buzzard.py +100 -0
  66. sage/modular/congroup.py +29 -0
  67. sage/modular/congroup_element.py +13 -0
  68. sage/modular/cusps.py +1107 -0
  69. sage/modular/cusps_nf.py +1270 -0
  70. sage/modular/dims.py +571 -0
  71. sage/modular/dirichlet.py +3310 -0
  72. sage/modular/drinfeld_modform/all.py +2 -0
  73. sage/modular/drinfeld_modform/element.py +446 -0
  74. sage/modular/drinfeld_modform/ring.py +773 -0
  75. sage/modular/drinfeld_modform/tutorial.py +236 -0
  76. sage/modular/etaproducts.py +1076 -0
  77. sage/modular/hecke/algebra.py +725 -0
  78. sage/modular/hecke/all.py +19 -0
  79. sage/modular/hecke/ambient_module.py +994 -0
  80. sage/modular/hecke/degenmap.py +119 -0
  81. sage/modular/hecke/element.py +302 -0
  82. sage/modular/hecke/hecke_operator.py +736 -0
  83. sage/modular/hecke/homspace.py +185 -0
  84. sage/modular/hecke/module.py +1744 -0
  85. sage/modular/hecke/morphism.py +139 -0
  86. sage/modular/hecke/submodule.py +970 -0
  87. sage/modular/hypergeometric_misc.cpython-314t-darwin.so +0 -0
  88. sage/modular/hypergeometric_misc.pxd +4 -0
  89. sage/modular/hypergeometric_misc.pyx +166 -0
  90. sage/modular/hypergeometric_motive.py +2020 -0
  91. sage/modular/local_comp/all.py +2 -0
  92. sage/modular/local_comp/liftings.py +292 -0
  93. sage/modular/local_comp/local_comp.py +1070 -0
  94. sage/modular/local_comp/smoothchar.py +1825 -0
  95. sage/modular/local_comp/type_space.py +748 -0
  96. sage/modular/modform/all.py +30 -0
  97. sage/modular/modform/ambient.py +817 -0
  98. sage/modular/modform/ambient_R.py +177 -0
  99. sage/modular/modform/ambient_eps.py +306 -0
  100. sage/modular/modform/ambient_g0.py +120 -0
  101. sage/modular/modform/ambient_g1.py +199 -0
  102. sage/modular/modform/constructor.py +545 -0
  103. sage/modular/modform/cuspidal_submodule.py +708 -0
  104. sage/modular/modform/defaults.py +14 -0
  105. sage/modular/modform/eis_series.py +487 -0
  106. sage/modular/modform/eisenstein_submodule.py +663 -0
  107. sage/modular/modform/element.py +4105 -0
  108. sage/modular/modform/half_integral.py +154 -0
  109. sage/modular/modform/hecke_operator_on_qexp.py +247 -0
  110. sage/modular/modform/j_invariant.py +47 -0
  111. sage/modular/modform/l_series_gross_zagier.py +127 -0
  112. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314t-darwin.so +0 -0
  113. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
  114. sage/modular/modform/notes.py +45 -0
  115. sage/modular/modform/numerical.py +514 -0
  116. sage/modular/modform/periods.py +14 -0
  117. sage/modular/modform/ring.py +1257 -0
  118. sage/modular/modform/space.py +1859 -0
  119. sage/modular/modform/submodule.py +118 -0
  120. sage/modular/modform/tests.py +64 -0
  121. sage/modular/modform/theta.py +110 -0
  122. sage/modular/modform/vm_basis.py +380 -0
  123. sage/modular/modform/weight1.py +221 -0
  124. sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
  125. sage/modular/modform_hecketriangle/abstract_space.py +2527 -0
  126. sage/modular/modform_hecketriangle/all.py +30 -0
  127. sage/modular/modform_hecketriangle/analytic_type.py +590 -0
  128. sage/modular/modform_hecketriangle/constructor.py +416 -0
  129. sage/modular/modform_hecketriangle/element.py +351 -0
  130. sage/modular/modform_hecketriangle/functors.py +752 -0
  131. sage/modular/modform_hecketriangle/graded_ring.py +541 -0
  132. sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
  133. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3349 -0
  134. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1426 -0
  135. sage/modular/modform_hecketriangle/readme.py +1214 -0
  136. sage/modular/modform_hecketriangle/series_constructor.py +580 -0
  137. sage/modular/modform_hecketriangle/space.py +1037 -0
  138. sage/modular/modform_hecketriangle/subspace.py +423 -0
  139. sage/modular/modsym/all.py +17 -0
  140. sage/modular/modsym/ambient.py +3844 -0
  141. sage/modular/modsym/boundary.py +1420 -0
  142. sage/modular/modsym/element.py +336 -0
  143. sage/modular/modsym/g1list.py +178 -0
  144. sage/modular/modsym/ghlist.py +182 -0
  145. sage/modular/modsym/hecke_operator.py +73 -0
  146. sage/modular/modsym/manin_symbol.cpython-314t-darwin.so +0 -0
  147. sage/modular/modsym/manin_symbol.pxd +5 -0
  148. sage/modular/modsym/manin_symbol.pyx +497 -0
  149. sage/modular/modsym/manin_symbol_list.py +1291 -0
  150. sage/modular/modsym/modsym.py +400 -0
  151. sage/modular/modsym/modular_symbols.py +384 -0
  152. sage/modular/modsym/p1list_nf.py +1241 -0
  153. sage/modular/modsym/relation_matrix.py +591 -0
  154. sage/modular/modsym/relation_matrix_pyx.cpython-314t-darwin.so +0 -0
  155. sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
  156. sage/modular/modsym/space.py +2468 -0
  157. sage/modular/modsym/subspace.py +455 -0
  158. sage/modular/modsym/tests.py +376 -0
  159. sage/modular/multiple_zeta.py +2635 -0
  160. sage/modular/multiple_zeta_F_algebra.py +789 -0
  161. sage/modular/overconvergent/all.py +6 -0
  162. sage/modular/overconvergent/genus0.py +1879 -0
  163. sage/modular/overconvergent/hecke_series.py +1187 -0
  164. sage/modular/overconvergent/weightspace.py +776 -0
  165. sage/modular/pollack_stevens/all.py +4 -0
  166. sage/modular/pollack_stevens/distributions.py +874 -0
  167. sage/modular/pollack_stevens/fund_domain.py +1572 -0
  168. sage/modular/pollack_stevens/manin_map.py +856 -0
  169. sage/modular/pollack_stevens/modsym.py +1590 -0
  170. sage/modular/pollack_stevens/padic_lseries.py +417 -0
  171. sage/modular/pollack_stevens/sigma0.py +534 -0
  172. sage/modular/pollack_stevens/space.py +1078 -0
  173. sage/modular/quasimodform/all.py +3 -0
  174. sage/modular/quasimodform/element.py +846 -0
  175. sage/modular/quasimodform/ring.py +826 -0
  176. sage/modular/quatalg/all.py +3 -0
  177. sage/modular/quatalg/brandt.py +1642 -0
  178. sage/modular/ssmod/all.py +8 -0
  179. sage/modular/ssmod/ssmod.py +827 -0
  180. sage/rings/all__sagemath_schemes.py +1 -0
  181. sage/rings/polynomial/all__sagemath_schemes.py +1 -0
  182. sage/rings/polynomial/binary_form_reduce.py +585 -0
  183. sage/schemes/all.py +41 -0
  184. sage/schemes/berkovich/all.py +6 -0
  185. sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
  186. sage/schemes/berkovich/berkovich_space.py +700 -0
  187. sage/schemes/curves/affine_curve.py +2924 -0
  188. sage/schemes/curves/all.py +33 -0
  189. sage/schemes/curves/closed_point.py +434 -0
  190. sage/schemes/curves/constructor.py +397 -0
  191. sage/schemes/curves/curve.py +542 -0
  192. sage/schemes/curves/plane_curve_arrangement.py +1283 -0
  193. sage/schemes/curves/point.py +463 -0
  194. sage/schemes/curves/projective_curve.py +3203 -0
  195. sage/schemes/curves/weighted_projective_curve.py +106 -0
  196. sage/schemes/curves/zariski_vankampen.py +1931 -0
  197. sage/schemes/cyclic_covers/all.py +2 -0
  198. sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
  199. sage/schemes/cyclic_covers/constructor.py +137 -0
  200. sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
  201. sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
  202. sage/schemes/elliptic_curves/BSD.py +991 -0
  203. sage/schemes/elliptic_curves/Qcurves.py +592 -0
  204. sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
  205. sage/schemes/elliptic_curves/all.py +49 -0
  206. sage/schemes/elliptic_curves/cardinality.py +609 -0
  207. sage/schemes/elliptic_curves/cm.py +1103 -0
  208. sage/schemes/elliptic_curves/constructor.py +1530 -0
  209. sage/schemes/elliptic_curves/ec_database.py +175 -0
  210. sage/schemes/elliptic_curves/ell_curve_isogeny.py +3971 -0
  211. sage/schemes/elliptic_curves/ell_egros.py +457 -0
  212. sage/schemes/elliptic_curves/ell_field.py +2837 -0
  213. sage/schemes/elliptic_curves/ell_finite_field.py +3249 -0
  214. sage/schemes/elliptic_curves/ell_generic.py +3760 -0
  215. sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
  216. sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
  217. sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
  218. sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
  219. sage/schemes/elliptic_curves/ell_point.py +4944 -0
  220. sage/schemes/elliptic_curves/ell_rational_field.py +7184 -0
  221. sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
  222. sage/schemes/elliptic_curves/ell_torsion.py +436 -0
  223. sage/schemes/elliptic_curves/ell_wp.py +352 -0
  224. sage/schemes/elliptic_curves/formal_group.py +760 -0
  225. sage/schemes/elliptic_curves/gal_reps.py +1459 -0
  226. sage/schemes/elliptic_curves/gal_reps_number_field.py +1663 -0
  227. sage/schemes/elliptic_curves/gp_simon.py +152 -0
  228. sage/schemes/elliptic_curves/heegner.py +7328 -0
  229. sage/schemes/elliptic_curves/height.py +2108 -0
  230. sage/schemes/elliptic_curves/hom.py +1788 -0
  231. sage/schemes/elliptic_curves/hom_composite.py +1084 -0
  232. sage/schemes/elliptic_curves/hom_fractional.py +544 -0
  233. sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
  234. sage/schemes/elliptic_curves/hom_scalar.py +531 -0
  235. sage/schemes/elliptic_curves/hom_sum.py +681 -0
  236. sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
  237. sage/schemes/elliptic_curves/homset.py +271 -0
  238. sage/schemes/elliptic_curves/isogeny_class.py +1523 -0
  239. sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
  240. sage/schemes/elliptic_curves/jacobian.py +247 -0
  241. sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
  242. sage/schemes/elliptic_curves/kraus.py +1014 -0
  243. sage/schemes/elliptic_curves/lseries_ell.py +915 -0
  244. sage/schemes/elliptic_curves/mod5family.py +105 -0
  245. sage/schemes/elliptic_curves/mod_poly.py +197 -0
  246. sage/schemes/elliptic_curves/mod_sym_num.cpython-314t-darwin.so +0 -0
  247. sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
  248. sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
  249. sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
  250. sage/schemes/elliptic_curves/padics.py +1816 -0
  251. sage/schemes/elliptic_curves/period_lattice.py +2234 -0
  252. sage/schemes/elliptic_curves/period_lattice_region.cpython-314t-darwin.so +0 -0
  253. sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
  254. sage/schemes/elliptic_curves/saturation.py +716 -0
  255. sage/schemes/elliptic_curves/sha_tate.py +1158 -0
  256. sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
  257. sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
  258. sage/schemes/hyperelliptic_curves/all.py +6 -0
  259. sage/schemes/hyperelliptic_curves/constructor.py +369 -0
  260. sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1948 -0
  261. sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
  262. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +936 -0
  263. sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
  264. sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
  265. sage/schemes/hyperelliptic_curves/invariants.py +410 -0
  266. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +312 -0
  267. sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
  268. sage/schemes/hyperelliptic_curves/jacobian_generic.py +437 -0
  269. sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
  270. sage/schemes/hyperelliptic_curves/jacobian_morphism.py +878 -0
  271. sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
  272. sage/schemes/hyperelliptic_curves/mestre.py +302 -0
  273. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3863 -0
  274. sage/schemes/jacobians/abstract_jacobian.py +277 -0
  275. sage/schemes/jacobians/all.py +2 -0
  276. sage/schemes/overview.py +161 -0
  277. sage/schemes/plane_conics/all.py +22 -0
  278. sage/schemes/plane_conics/con_field.py +1296 -0
  279. sage/schemes/plane_conics/con_finite_field.py +158 -0
  280. sage/schemes/plane_conics/con_number_field.py +456 -0
  281. sage/schemes/plane_conics/con_rational_field.py +406 -0
  282. sage/schemes/plane_conics/con_rational_function_field.py +581 -0
  283. sage/schemes/plane_conics/constructor.py +249 -0
  284. sage/schemes/plane_quartics/all.py +2 -0
  285. sage/schemes/plane_quartics/quartic_constructor.py +71 -0
  286. sage/schemes/plane_quartics/quartic_generic.py +53 -0
  287. sage/schemes/riemann_surfaces/all.py +1 -0
  288. sage/schemes/riemann_surfaces/riemann_surface.py +4177 -0
  289. sage_wheels/share/cremona/cremona_mini.db +0 -0
  290. sage_wheels/share/ellcurves/rank0 +30427 -0
  291. sage_wheels/share/ellcurves/rank1 +31871 -0
  292. sage_wheels/share/ellcurves/rank10 +6 -0
  293. sage_wheels/share/ellcurves/rank11 +6 -0
  294. sage_wheels/share/ellcurves/rank12 +1 -0
  295. sage_wheels/share/ellcurves/rank14 +1 -0
  296. sage_wheels/share/ellcurves/rank15 +1 -0
  297. sage_wheels/share/ellcurves/rank17 +1 -0
  298. sage_wheels/share/ellcurves/rank19 +1 -0
  299. sage_wheels/share/ellcurves/rank2 +2388 -0
  300. sage_wheels/share/ellcurves/rank20 +1 -0
  301. sage_wheels/share/ellcurves/rank21 +1 -0
  302. sage_wheels/share/ellcurves/rank22 +1 -0
  303. sage_wheels/share/ellcurves/rank23 +1 -0
  304. sage_wheels/share/ellcurves/rank24 +1 -0
  305. sage_wheels/share/ellcurves/rank28 +1 -0
  306. sage_wheels/share/ellcurves/rank3 +836 -0
  307. sage_wheels/share/ellcurves/rank4 +10 -0
  308. sage_wheels/share/ellcurves/rank5 +5 -0
  309. sage_wheels/share/ellcurves/rank6 +5 -0
  310. sage_wheels/share/ellcurves/rank7 +5 -0
  311. sage_wheels/share/ellcurves/rank8 +6 -0
  312. sage_wheels/share/ellcurves/rank9 +7 -0
@@ -0,0 +1,119 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.libs.flint
3
+ """
4
+ Degeneracy maps
5
+ """
6
+
7
+ # ****************************************************************************
8
+ # Sage: Open Source Mathematical Software
9
+ #
10
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
11
+ #
12
+ # Distributed under the terms of the GNU General Public License (GPL)
13
+ #
14
+ # This code is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # General Public License for more details.
18
+ #
19
+ # The full text of the GPL is available at:
20
+ #
21
+ # https://www.gnu.org/licenses/
22
+ # ****************************************************************************
23
+ from . import morphism
24
+
25
+
26
+ class DegeneracyMap(morphism.HeckeModuleMorphism_matrix):
27
+ """
28
+ A degeneracy map between Hecke modules of different levels.
29
+
30
+ EXAMPLES:
31
+
32
+ We construct a number of degeneracy maps::
33
+
34
+ sage: M = ModularSymbols(33)
35
+ sage: d = M.degeneracy_map(11)
36
+ sage: d
37
+ Hecke module morphism degeneracy map corresponding to f(q) |--> f(q)
38
+ defined by the matrix
39
+ [ 1 0 0]
40
+ [ 0 0 1]
41
+ [ 0 0 -1]
42
+ [ 0 1 -1]
43
+ [ 0 0 1]
44
+ [ 0 -1 1]
45
+ [-1 0 0]
46
+ [-1 0 0]
47
+ [-1 0 0]
48
+ Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
49
+ Codomain: Modular Symbols space of dimension 3 for Gamma_0(11) of weight ...
50
+ sage: d.t()
51
+ 1
52
+ sage: d = M.degeneracy_map(11,3)
53
+ sage: d.t()
54
+ 3
55
+
56
+ The parameter d must be a divisor of the quotient of the two levels::
57
+
58
+ sage: d = M.degeneracy_map(11,2)
59
+ Traceback (most recent call last):
60
+ ...
61
+ ValueError: the level of self (=33) must be a divisor or multiple
62
+ of level (=11) and t (=2) must be a divisor of the quotient
63
+
64
+ Degeneracy maps can also go from lower level to higher level::
65
+
66
+ sage: M.degeneracy_map(66,2)
67
+ Hecke module morphism degeneracy map corresponding to f(q) |--> f(q^2)
68
+ defined by the matrix
69
+ [ 2 0 0 0 0 0 1 0 0 0 1 -1 0 0 0 -1 1 0 0 0 0 0 0 0 -1]
70
+ [ 0 0 1 -1 0 -1 1 0 -1 2 0 0 0 -1 0 0 -1 1 2 -2 0 0 0 -1 1]
71
+ [ 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 1 0 0 -1 1 0 0 0]
72
+ [ 0 0 0 0 0 0 0 0 0 2 -1 0 0 1 0 0 -1 1 0 0 1 0 -1 -1 1]
73
+ [ 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 -1 0 0 -1 0 0 0 0 0]
74
+ [ 0 0 0 0 0 0 0 1 -1 0 0 2 -1 0 0 1 0 0 0 -1 0 -1 1 -1 1]
75
+ [ 0 0 0 0 1 -1 0 1 -1 0 0 0 0 0 -1 2 0 0 0 0 1 0 1 0 0]
76
+ [ 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0]
77
+ [ 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 1 1 0 0 0]
78
+ Domain: Modular Symbols space of dimension 9 for Gamma_0(33) of weight ...
79
+ Codomain: Modular Symbols space of dimension 25 for Gamma_0(66) of weight ...
80
+ """
81
+ def __init__(self, matrix, domain, codomain, t):
82
+ r"""
83
+ Initialise a degeneracy map.
84
+
85
+ EXAMPLES::
86
+
87
+ sage: D = ModularSymbols(Gamma0(100)).degeneracy_map(2,5); D
88
+ Hecke module morphism degeneracy map corresponding to f(q) |--> f(q^5) defined by the matrix
89
+ 31 x 1 dense matrix over Rational Field
90
+ Domain: Modular Symbols space of dimension 31 for Gamma_0(100) of weight ...
91
+ Codomain: Modular Symbols space of dimension 1 for Gamma_0(2) of weight ...
92
+ sage: D == loads(dumps(D))
93
+ True
94
+ """
95
+ self.__t = t
96
+ H = domain.Hom(codomain)
97
+ if t == 1:
98
+ pow = ""
99
+ else:
100
+ pow = "^%s" % t
101
+ name = "degeneracy map corresponding to f(q) |--> f(q%s)" % (pow)
102
+ morphism.HeckeModuleMorphism_matrix.__init__(self, H, matrix, name)
103
+
104
+ def t(self):
105
+ """
106
+ Return the divisor of the quotient of the two levels
107
+ associated to the degeneracy map.
108
+
109
+ EXAMPLES::
110
+
111
+ sage: M = ModularSymbols(33)
112
+ sage: d = M.degeneracy_map(11,3)
113
+ sage: d.t()
114
+ 3
115
+ sage: d = M.degeneracy_map(11,1)
116
+ sage: d.t()
117
+ 1
118
+ """
119
+ return self.__t
@@ -0,0 +1,302 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.libs.flint sage.libs.pari
3
+ """
4
+ Elements of Hecke modules
5
+
6
+ AUTHORS:
7
+
8
+ - William Stein
9
+ """
10
+
11
+ # ****************************************************************************
12
+ # Sage: Open Source Mathematical Software
13
+ #
14
+ # Copyright (C) 2005 William Stein <wstein@gmail.com>
15
+ #
16
+ # Distributed under the terms of the GNU General Public License (GPL)
17
+ #
18
+ # This code is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ # General Public License for more details.
22
+ #
23
+ # The full text of the GPL is available at:
24
+ #
25
+ # https://www.gnu.org/licenses/
26
+ # ****************************************************************************
27
+
28
+ from typing import Self
29
+
30
+ from sage.structure.element import ModuleElement
31
+ from sage.structure.richcmp import op_NE, richcmp
32
+
33
+
34
+ class HeckeModuleElement(ModuleElement):
35
+ """
36
+ Element of a Hecke module.
37
+ """
38
+ def __init__(self, parent, x=None):
39
+ """
40
+ INPUT:
41
+
42
+ - ``parent`` -- a Hecke module
43
+
44
+ - ``x`` -- element of the free module associated to parent
45
+
46
+ EXAMPLES::
47
+
48
+ sage: v = sage.modular.hecke.all.HeckeModuleElement(BrandtModule(37), vector(QQ,[1,2,3])); v
49
+ (1, 2, 3)
50
+ sage: type(v)
51
+ <class 'sage.modular.hecke.element.HeckeModuleElement'>
52
+
53
+ TESTS::
54
+
55
+ sage: v = ModularSymbols(37).0
56
+ sage: loads(dumps(v))
57
+ (1,0)
58
+ sage: loads(dumps(v)) == v
59
+ True
60
+ """
61
+ ModuleElement.__init__(self, parent)
62
+ if x is not None:
63
+ self.__element = x
64
+
65
+ def _repr_(self):
66
+ """
67
+ Return string representation of this Hecke module element.
68
+ The default representation is just the representation of the
69
+ underlying vector.
70
+
71
+ EXAMPLES::
72
+
73
+ sage: BrandtModule(37)([0,1,-1])._repr_()
74
+ '(0, 1, -1)'
75
+ """
76
+ return self.element()._repr_()
77
+
78
+ def _compute_element(self):
79
+ """
80
+ Use internally to compute vector underlying this element.
81
+
82
+ EXAMPLES::
83
+
84
+ sage: f = CuspForms(11, 2).gen(0)
85
+ sage: f._compute_element()
86
+ Traceback (most recent call last):
87
+ ...
88
+ NotImplementedError: _compute_element *must* be defined...
89
+ """
90
+ # You have to define this in the derived class if you ever set
91
+ # x=None in __init__ for your element class.
92
+ # The main reason for this is it allows for lazy constructors who
93
+ # compute the representation of an element (e.g., a q-expansion) in
94
+ # terms of the basis only when needed.
95
+
96
+ # Not in use at present.
97
+ raise NotImplementedError("_compute_element *must* be defined in the derived class if element is set to None in constructor")
98
+
99
+ def element(self):
100
+ """
101
+ Return underlying vector space element that defines this Hecke module element.
102
+
103
+ EXAMPLES::
104
+
105
+ sage: z = BrandtModule(37)([0,1,-1]).element(); z
106
+ (0, 1, -1)
107
+ sage: type(z)
108
+ <class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
109
+ """
110
+ try:
111
+ return self.__element
112
+ except AttributeError:
113
+ self.__element = self._compute_element()
114
+ return self.__element
115
+
116
+ def _vector_(self, R=None):
117
+ """
118
+ This makes it so vector(self) and vector(self, R) both work.
119
+
120
+ EXAMPLES::
121
+
122
+ sage: v = BrandtModule(37)([0,1,-1]); v
123
+ (0, 1, -1)
124
+ sage: type(v._vector_())
125
+ <class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
126
+ sage: type(vector(v))
127
+ <class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
128
+ sage: type(vector(v, GF(2)))
129
+ <class 'sage.modules.vector_mod2_dense.Vector_mod2_dense'>
130
+ """
131
+ if R is None:
132
+ return self.__element
133
+ return self.__element.change_ring(R)
134
+
135
+ def _richcmp_(self, other, op):
136
+ """
137
+ Rich comparison of ``self`` and ``other``.
138
+
139
+ EXAMPLES::
140
+
141
+ sage: M = ModularSymbols(11, 2)
142
+ sage: M.0 == M.1 # indirect doctest
143
+ False
144
+ sage: M.0 == (M.1 + M.0 - M.1)
145
+ True
146
+ sage: M.0 == ModularSymbols(13, 2).0
147
+ False
148
+
149
+ sage: x = BrandtModule(37)([0,1,-1])
150
+ sage: x != x
151
+ False
152
+ """
153
+ if not isinstance(other, HeckeModuleElement):
154
+ return op == op_NE
155
+ return richcmp(self.element(), other.element(), op)
156
+
157
+ def ambient_module(self):
158
+ """
159
+ Return the ambient Hecke module that contains this element.
160
+
161
+ EXAMPLES::
162
+
163
+ sage: BrandtModule(37)([0,1,-1]).ambient_module()
164
+ Brandt module of dimension 3 of level 37 of weight 2 over Rational Field
165
+ """
166
+ return self.parent().ambient_module()
167
+
168
+ def _lmul_(self, x):
169
+ """
170
+ EXAMPLES::
171
+
172
+ sage: BrandtModule(37)([0,1,-1])._lmul_(3)
173
+ (0, 3, -3)
174
+ """
175
+ return self.parent()(self.element() * x)
176
+
177
+ def _rmul_(self, x):
178
+ """
179
+ EXAMPLES::
180
+
181
+ sage: BrandtModule(37)([0,1,-1])._rmul_(3)
182
+ (0, 3, -3)
183
+ """
184
+ return self.parent()(x * self.element())
185
+
186
+ def _neg_(self):
187
+ """
188
+ EXAMPLES::
189
+
190
+ sage: BrandtModule(37)([0,1,-1])._neg_()
191
+ (0, -1, 1)
192
+ """
193
+ return self.parent()(-self.element())
194
+
195
+ def _pos_(self) -> Self:
196
+ """
197
+ EXAMPLES::
198
+
199
+ sage: BrandtModule(37)([0,1,-1])._pos_()
200
+ (0, 1, -1)
201
+ """
202
+ return self
203
+
204
+ def _sub_(self, right):
205
+ """
206
+ EXAMPLES::
207
+
208
+ sage: BrandtModule(37)([0,1,-1])._sub_(BrandtModule(37)([0,1,-5]))
209
+ (0, 0, 4)
210
+ """
211
+ return self.parent()(self.element() - right.element())
212
+
213
+ def is_cuspidal(self) -> bool:
214
+ r"""
215
+ Return ``True`` if this element is cuspidal.
216
+
217
+ EXAMPLES::
218
+
219
+ sage: M = ModularForms(2, 22); M.0.is_cuspidal()
220
+ True
221
+ sage: (M.0 + M.4).is_cuspidal()
222
+ False
223
+ sage: EllipticCurve('37a1').newform().is_cuspidal() # needs database_cremona_mini_ellcurve
224
+ True
225
+
226
+ It works for modular symbols too::
227
+
228
+ sage: M = ModularSymbols(19,2)
229
+ sage: M.0.is_cuspidal()
230
+ False
231
+ sage: M.1.is_cuspidal()
232
+ True
233
+
234
+ TESTS:
235
+
236
+ Verify that :issue:`21497` is fixed::
237
+
238
+ sage: M = ModularSymbols(Gamma0(3),weight=22,sign=1)
239
+ sage: N = next(S for S in M.decomposition(anemic=False) if S.hecke_matrix(3).trace()==-128844)
240
+ sage: [g.is_cuspidal() for g in N.gens()]
241
+ [True, True]
242
+ """
243
+ return self in self.parent().ambient().cuspidal_submodule()
244
+
245
+ def is_eisenstein(self) -> bool:
246
+ r"""
247
+ Return ``True`` if this element is Eisenstein.
248
+
249
+ This makes sense for both modular forms and modular symbols.
250
+
251
+ EXAMPLES::
252
+
253
+ sage: CuspForms(2,8).0.is_eisenstein()
254
+ False
255
+ sage: M = ModularForms(2,8);(M.0 + M.1).is_eisenstein()
256
+ False
257
+ sage: M.1.is_eisenstein()
258
+ True
259
+ sage: ModularSymbols(19,4).0.is_eisenstein()
260
+ False
261
+ sage: EllipticCurve('37a1').newform().element().is_eisenstein() # needs database_cremona_mini_ellcurve
262
+ False
263
+ """
264
+ return self in self.parent().ambient().eisenstein_submodule()
265
+
266
+ def is_new(self, p=None) -> bool:
267
+ r"""
268
+ Return ``True`` if this element is `p`-new.
269
+
270
+ If `p` is ``None``, return ``True`` if the element is new.
271
+
272
+ EXAMPLES::
273
+
274
+ sage: CuspForms(22, 2).0.is_new(2)
275
+ False
276
+ sage: CuspForms(22, 2).0.is_new(11)
277
+ True
278
+ sage: CuspForms(22, 2).0.is_new()
279
+ False
280
+ """
281
+ return self in self.parent().new_submodule(p)
282
+
283
+ def is_old(self, p=None) -> bool:
284
+ r"""
285
+ Return ``True`` if this element is `p`-old.
286
+
287
+ If `p` is ``None``, return ``True`` if the element is old.
288
+
289
+ EXAMPLES::
290
+
291
+ sage: CuspForms(22, 2).0.is_old(11)
292
+ False
293
+ sage: CuspForms(22, 2).0.is_old(2)
294
+ True
295
+ sage: CuspForms(22, 2).0.is_old()
296
+ True
297
+ sage: EisensteinForms(144, 2).1.is_old() # long time (3s on sage.math, 2011)
298
+ False
299
+ sage: EisensteinForms(144, 2).1.is_old(2) # not implemented
300
+ False
301
+ """
302
+ return self in self.parent().old_submodule(p)