passagemath-schemes 10.6.40__cp314-cp314-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.

Potentially problematic release.


This version of passagemath-schemes might be problematic. Click here for more details.

Files changed (314) 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.6.40.dist-info/METADATA +204 -0
  7. passagemath_schemes-10.6.40.dist-info/METADATA.bak +205 -0
  8. passagemath_schemes-10.6.40.dist-info/RECORD +314 -0
  9. passagemath_schemes-10.6.40.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.6.40.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 +9558 -0
  24. sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314-darwin.so +0 -0
  25. sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
  26. sage/dynamics/arithmetic_dynamics/wehlerK3.py +2576 -0
  27. sage/lfunctions/all.py +18 -0
  28. sage/lfunctions/dokchitser.py +745 -0
  29. sage/lfunctions/pari.py +818 -0
  30. sage/lfunctions/zero_sums.cpython-314-darwin.so +0 -0
  31. sage/lfunctions/zero_sums.pyx +1847 -0
  32. sage/modular/abvar/abvar.py +5135 -0
  33. sage/modular/abvar/abvar_ambient_jacobian.py +413 -0
  34. sage/modular/abvar/abvar_newform.py +244 -0
  35. sage/modular/abvar/all.py +8 -0
  36. sage/modular/abvar/constructor.py +186 -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 +720 -0
  40. sage/modular/abvar/homspace.py +998 -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 +740 -0
  45. sage/modular/all.py +43 -0
  46. sage/modular/arithgroup/all.py +20 -0
  47. sage/modular/arithgroup/arithgroup_element.cpython-314-darwin.so +0 -0
  48. sage/modular/arithgroup/arithgroup_element.pyx +474 -0
  49. sage/modular/arithgroup/arithgroup_generic.py +1402 -0
  50. sage/modular/arithgroup/arithgroup_perm.py +2692 -0
  51. sage/modular/arithgroup/congroup.cpython-314-darwin.so +0 -0
  52. sage/modular/arithgroup/congroup.pyx +334 -0
  53. sage/modular/arithgroup/congroup_gamma.py +363 -0
  54. sage/modular/arithgroup/congroup_gamma0.py +692 -0
  55. sage/modular/arithgroup/congroup_gamma1.py +653 -0
  56. sage/modular/arithgroup/congroup_gammaH.py +1469 -0
  57. sage/modular/arithgroup/congroup_generic.py +628 -0
  58. sage/modular/arithgroup/congroup_sl2z.py +267 -0
  59. sage/modular/arithgroup/farey_symbol.cpython-314-darwin.so +0 -0
  60. sage/modular/arithgroup/farey_symbol.pyx +1066 -0
  61. sage/modular/arithgroup/tests.py +418 -0
  62. sage/modular/btquotients/all.py +4 -0
  63. sage/modular/btquotients/btquotient.py +3753 -0
  64. sage/modular/btquotients/pautomorphicform.py +2570 -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 +1109 -0
  69. sage/modular/cusps_nf.py +1270 -0
  70. sage/modular/dims.py +569 -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 +1065 -0
  77. sage/modular/hecke/algebra.py +746 -0
  78. sage/modular/hecke/all.py +20 -0
  79. sage/modular/hecke/ambient_module.py +1019 -0
  80. sage/modular/hecke/degenmap.py +119 -0
  81. sage/modular/hecke/element.py +325 -0
  82. sage/modular/hecke/hecke_operator.py +780 -0
  83. sage/modular/hecke/homspace.py +206 -0
  84. sage/modular/hecke/module.py +1767 -0
  85. sage/modular/hecke/morphism.py +174 -0
  86. sage/modular/hecke/submodule.py +989 -0
  87. sage/modular/hypergeometric_misc.cpython-314-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 +2017 -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 +1071 -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 +815 -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 +124 -0
  101. sage/modular/modform/ambient_g1.py +204 -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 +505 -0
  106. sage/modular/modform/eisenstein_submodule.py +663 -0
  107. sage/modular/modform/element.py +4131 -0
  108. sage/modular/modform/find_generators.py +59 -0
  109. sage/modular/modform/half_integral.py +154 -0
  110. sage/modular/modform/hecke_operator_on_qexp.py +247 -0
  111. sage/modular/modform/j_invariant.py +47 -0
  112. sage/modular/modform/l_series_gross_zagier.py +133 -0
  113. sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314-darwin.so +0 -0
  114. sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
  115. sage/modular/modform/notes.py +45 -0
  116. sage/modular/modform/numerical.py +514 -0
  117. sage/modular/modform/periods.py +14 -0
  118. sage/modular/modform/ring.py +1257 -0
  119. sage/modular/modform/space.py +1860 -0
  120. sage/modular/modform/submodule.py +118 -0
  121. sage/modular/modform/tests.py +64 -0
  122. sage/modular/modform/theta.py +110 -0
  123. sage/modular/modform/vm_basis.py +381 -0
  124. sage/modular/modform/weight1.py +220 -0
  125. sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
  126. sage/modular/modform_hecketriangle/abstract_space.py +2528 -0
  127. sage/modular/modform_hecketriangle/all.py +30 -0
  128. sage/modular/modform_hecketriangle/analytic_type.py +590 -0
  129. sage/modular/modform_hecketriangle/constructor.py +416 -0
  130. sage/modular/modform_hecketriangle/element.py +351 -0
  131. sage/modular/modform_hecketriangle/functors.py +752 -0
  132. sage/modular/modform_hecketriangle/graded_ring.py +541 -0
  133. sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
  134. sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3352 -0
  135. sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1432 -0
  136. sage/modular/modform_hecketriangle/readme.py +1214 -0
  137. sage/modular/modform_hecketriangle/series_constructor.py +580 -0
  138. sage/modular/modform_hecketriangle/space.py +1037 -0
  139. sage/modular/modform_hecketriangle/subspace.py +423 -0
  140. sage/modular/modsym/all.py +17 -0
  141. sage/modular/modsym/ambient.py +3846 -0
  142. sage/modular/modsym/boundary.py +1420 -0
  143. sage/modular/modsym/element.py +336 -0
  144. sage/modular/modsym/g1list.py +178 -0
  145. sage/modular/modsym/ghlist.py +182 -0
  146. sage/modular/modsym/hecke_operator.py +73 -0
  147. sage/modular/modsym/manin_symbol.cpython-314-darwin.so +0 -0
  148. sage/modular/modsym/manin_symbol.pxd +5 -0
  149. sage/modular/modsym/manin_symbol.pyx +497 -0
  150. sage/modular/modsym/manin_symbol_list.py +1295 -0
  151. sage/modular/modsym/modsym.py +400 -0
  152. sage/modular/modsym/modular_symbols.py +384 -0
  153. sage/modular/modsym/p1list.cpython-314-darwin.so +0 -0
  154. sage/modular/modsym/p1list.pxd +29 -0
  155. sage/modular/modsym/p1list.pyx +1372 -0
  156. sage/modular/modsym/p1list_nf.py +1241 -0
  157. sage/modular/modsym/relation_matrix.py +591 -0
  158. sage/modular/modsym/relation_matrix_pyx.cpython-314-darwin.so +0 -0
  159. sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
  160. sage/modular/modsym/space.py +2468 -0
  161. sage/modular/modsym/subspace.py +455 -0
  162. sage/modular/modsym/tests.py +375 -0
  163. sage/modular/multiple_zeta.py +2632 -0
  164. sage/modular/multiple_zeta_F_algebra.py +786 -0
  165. sage/modular/overconvergent/all.py +6 -0
  166. sage/modular/overconvergent/genus0.py +1878 -0
  167. sage/modular/overconvergent/hecke_series.py +1187 -0
  168. sage/modular/overconvergent/weightspace.py +778 -0
  169. sage/modular/pollack_stevens/all.py +4 -0
  170. sage/modular/pollack_stevens/distributions.py +874 -0
  171. sage/modular/pollack_stevens/fund_domain.py +1572 -0
  172. sage/modular/pollack_stevens/manin_map.py +859 -0
  173. sage/modular/pollack_stevens/modsym.py +1593 -0
  174. sage/modular/pollack_stevens/padic_lseries.py +417 -0
  175. sage/modular/pollack_stevens/sigma0.py +534 -0
  176. sage/modular/pollack_stevens/space.py +1076 -0
  177. sage/modular/quasimodform/all.py +3 -0
  178. sage/modular/quasimodform/element.py +845 -0
  179. sage/modular/quasimodform/ring.py +828 -0
  180. sage/modular/quatalg/all.py +3 -0
  181. sage/modular/quatalg/brandt.py +1642 -0
  182. sage/modular/ssmod/all.py +8 -0
  183. sage/modular/ssmod/ssmod.py +827 -0
  184. sage/rings/all__sagemath_schemes.py +1 -0
  185. sage/rings/polynomial/all__sagemath_schemes.py +1 -0
  186. sage/rings/polynomial/binary_form_reduce.py +585 -0
  187. sage/schemes/all.py +41 -0
  188. sage/schemes/berkovich/all.py +6 -0
  189. sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
  190. sage/schemes/berkovich/berkovich_space.py +748 -0
  191. sage/schemes/curves/affine_curve.py +2928 -0
  192. sage/schemes/curves/all.py +33 -0
  193. sage/schemes/curves/closed_point.py +434 -0
  194. sage/schemes/curves/constructor.py +381 -0
  195. sage/schemes/curves/curve.py +542 -0
  196. sage/schemes/curves/plane_curve_arrangement.py +1283 -0
  197. sage/schemes/curves/point.py +463 -0
  198. sage/schemes/curves/projective_curve.py +3026 -0
  199. sage/schemes/curves/zariski_vankampen.py +1932 -0
  200. sage/schemes/cyclic_covers/all.py +2 -0
  201. sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
  202. sage/schemes/cyclic_covers/constructor.py +137 -0
  203. sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
  204. sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
  205. sage/schemes/elliptic_curves/BSD.py +1036 -0
  206. sage/schemes/elliptic_curves/Qcurves.py +592 -0
  207. sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
  208. sage/schemes/elliptic_curves/all.py +49 -0
  209. sage/schemes/elliptic_curves/cardinality.py +609 -0
  210. sage/schemes/elliptic_curves/cm.py +1102 -0
  211. sage/schemes/elliptic_curves/constructor.py +1552 -0
  212. sage/schemes/elliptic_curves/ec_database.py +175 -0
  213. sage/schemes/elliptic_curves/ell_curve_isogeny.py +3972 -0
  214. sage/schemes/elliptic_curves/ell_egros.py +459 -0
  215. sage/schemes/elliptic_curves/ell_field.py +2836 -0
  216. sage/schemes/elliptic_curves/ell_finite_field.py +3359 -0
  217. sage/schemes/elliptic_curves/ell_generic.py +3760 -0
  218. sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
  219. sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
  220. sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
  221. sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
  222. sage/schemes/elliptic_curves/ell_point.py +4787 -0
  223. sage/schemes/elliptic_curves/ell_rational_field.py +7368 -0
  224. sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
  225. sage/schemes/elliptic_curves/ell_torsion.py +436 -0
  226. sage/schemes/elliptic_curves/ell_wp.py +352 -0
  227. sage/schemes/elliptic_curves/formal_group.py +760 -0
  228. sage/schemes/elliptic_curves/gal_reps.py +1459 -0
  229. sage/schemes/elliptic_curves/gal_reps_number_field.py +1669 -0
  230. sage/schemes/elliptic_curves/gp_simon.py +152 -0
  231. sage/schemes/elliptic_curves/heegner.py +7335 -0
  232. sage/schemes/elliptic_curves/height.py +2109 -0
  233. sage/schemes/elliptic_curves/hom.py +1406 -0
  234. sage/schemes/elliptic_curves/hom_composite.py +934 -0
  235. sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
  236. sage/schemes/elliptic_curves/hom_scalar.py +531 -0
  237. sage/schemes/elliptic_curves/hom_sum.py +682 -0
  238. sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
  239. sage/schemes/elliptic_curves/homset.py +271 -0
  240. sage/schemes/elliptic_curves/isogeny_class.py +1521 -0
  241. sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
  242. sage/schemes/elliptic_curves/jacobian.py +237 -0
  243. sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
  244. sage/schemes/elliptic_curves/kraus.py +1014 -0
  245. sage/schemes/elliptic_curves/lseries_ell.py +943 -0
  246. sage/schemes/elliptic_curves/mod5family.py +105 -0
  247. sage/schemes/elliptic_curves/mod_poly.py +197 -0
  248. sage/schemes/elliptic_curves/mod_sym_num.cpython-314-darwin.so +0 -0
  249. sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
  250. sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
  251. sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
  252. sage/schemes/elliptic_curves/padics.py +1816 -0
  253. sage/schemes/elliptic_curves/period_lattice.py +2234 -0
  254. sage/schemes/elliptic_curves/period_lattice_region.cpython-314-darwin.so +0 -0
  255. sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
  256. sage/schemes/elliptic_curves/saturation.py +715 -0
  257. sage/schemes/elliptic_curves/sha_tate.py +1158 -0
  258. sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
  259. sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
  260. sage/schemes/hyperelliptic_curves/all.py +6 -0
  261. sage/schemes/hyperelliptic_curves/constructor.py +291 -0
  262. sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1914 -0
  263. sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
  264. sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +954 -0
  265. sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
  266. sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
  267. sage/schemes/hyperelliptic_curves/invariants.py +410 -0
  268. sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +315 -0
  269. sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
  270. sage/schemes/hyperelliptic_curves/jacobian_generic.py +419 -0
  271. sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
  272. sage/schemes/hyperelliptic_curves/jacobian_morphism.py +875 -0
  273. sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
  274. sage/schemes/hyperelliptic_curves/mestre.py +302 -0
  275. sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3871 -0
  276. sage/schemes/jacobians/abstract_jacobian.py +277 -0
  277. sage/schemes/jacobians/all.py +2 -0
  278. sage/schemes/overview.py +161 -0
  279. sage/schemes/plane_conics/all.py +22 -0
  280. sage/schemes/plane_conics/con_field.py +1296 -0
  281. sage/schemes/plane_conics/con_finite_field.py +158 -0
  282. sage/schemes/plane_conics/con_number_field.py +456 -0
  283. sage/schemes/plane_conics/con_rational_field.py +406 -0
  284. sage/schemes/plane_conics/con_rational_function_field.py +580 -0
  285. sage/schemes/plane_conics/constructor.py +249 -0
  286. sage/schemes/plane_quartics/all.py +2 -0
  287. sage/schemes/plane_quartics/quartic_constructor.py +71 -0
  288. sage/schemes/plane_quartics/quartic_generic.py +73 -0
  289. sage/schemes/riemann_surfaces/all.py +1 -0
  290. sage/schemes/riemann_surfaces/riemann_surface.py +4117 -0
  291. sage_wheels/share/cremona/cremona_mini.db +0 -0
  292. sage_wheels/share/ellcurves/rank0 +30427 -0
  293. sage_wheels/share/ellcurves/rank1 +31871 -0
  294. sage_wheels/share/ellcurves/rank10 +6 -0
  295. sage_wheels/share/ellcurves/rank11 +6 -0
  296. sage_wheels/share/ellcurves/rank12 +1 -0
  297. sage_wheels/share/ellcurves/rank14 +1 -0
  298. sage_wheels/share/ellcurves/rank15 +1 -0
  299. sage_wheels/share/ellcurves/rank17 +1 -0
  300. sage_wheels/share/ellcurves/rank19 +1 -0
  301. sage_wheels/share/ellcurves/rank2 +2388 -0
  302. sage_wheels/share/ellcurves/rank20 +1 -0
  303. sage_wheels/share/ellcurves/rank21 +1 -0
  304. sage_wheels/share/ellcurves/rank22 +1 -0
  305. sage_wheels/share/ellcurves/rank23 +1 -0
  306. sage_wheels/share/ellcurves/rank24 +1 -0
  307. sage_wheels/share/ellcurves/rank28 +1 -0
  308. sage_wheels/share/ellcurves/rank3 +836 -0
  309. sage_wheels/share/ellcurves/rank4 +10 -0
  310. sage_wheels/share/ellcurves/rank5 +5 -0
  311. sage_wheels/share/ellcurves/rank6 +5 -0
  312. sage_wheels/share/ellcurves/rank7 +5 -0
  313. sage_wheels/share/ellcurves/rank8 +6 -0
  314. sage_wheels/share/ellcurves/rank9 +7 -0
@@ -0,0 +1,384 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.libs.flint
3
+ r"""
4
+ Modular symbols `\{\alpha`, `\beta\}`
5
+
6
+ The ModularSymbol class represents a single modular symbol `X^i Y^{k-2-i} \{\alpha, \beta\}`.
7
+
8
+ AUTHOR:
9
+
10
+ - William Stein (2005, 2009)
11
+
12
+ TESTS::
13
+
14
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]; s
15
+ {-1/9, 0}
16
+ sage: loads(dumps(s)) == s
17
+ True
18
+ """
19
+ # ****************************************************************************
20
+ # Sage: Open Source Mathematical Software
21
+ #
22
+ # Copyright (C) 2005, 2009 William Stein <wstein@gmail.com>
23
+ #
24
+ # Distributed under the terms of the GNU General Public License (GPL)
25
+ #
26
+ # This code is distributed in the hope that it will be useful,
27
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
28
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29
+ # General Public License for more details.
30
+ #
31
+ # The full text of the GPL is available at:
32
+ #
33
+ # https://www.gnu.org/licenses/
34
+ # ****************************************************************************
35
+ import sage.modular.cusps as cusps
36
+ from sage.modular.modsym.apply import apply_to_monomial
37
+ from sage.modular.modsym.manin_symbol import ManinSymbol
38
+ from sage.structure.sage_object import SageObject
39
+ import sage.structure.formal_sum as formal_sum
40
+ from sage.structure.richcmp import richcmp_method, richcmp
41
+ from sage.rings.integer_ring import ZZ
42
+ from sage.misc.latex import latex
43
+
44
+ _C = cusps.Cusps
45
+
46
+ X, Y = ZZ['X,Y'].gens()
47
+
48
+
49
+ @richcmp_method
50
+ class ModularSymbol(SageObject):
51
+ r"""
52
+ The modular symbol `X^i\cdot Y^{k-2-i}\cdot \{\alpha, \beta\}`.
53
+ """
54
+ def __init__(self, space, i, alpha, beta):
55
+ """
56
+ Initialise a modular symbol.
57
+
58
+ INPUT:
59
+
60
+ - ``space`` -- space of Manin symbols
61
+
62
+ - ``i`` -- integer
63
+
64
+ - ``alpha`` -- cusp
65
+
66
+ - ``beta`` -- cusp
67
+
68
+ EXAMPLES::
69
+
70
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]; s
71
+ {-1/9, 0}
72
+ sage: type(s)
73
+ <class 'sage.modular.modsym.modular_symbols.ModularSymbol'>
74
+ sage: s = ModularSymbols(11,4).2.modular_symbol_rep()[0][1]; s
75
+ X^2*{-1/7, 0}
76
+ """
77
+ self.__space = space
78
+ self.__i = i
79
+ self.__alpha = _C(alpha)
80
+ self.__beta = _C(beta)
81
+
82
+ def _repr_(self):
83
+ """
84
+ String representation of this modular symbol.
85
+
86
+ EXAMPLES::
87
+
88
+ sage: s = ModularSymbols(11,4).2.modular_symbol_rep()[0][1]; s
89
+ X^2*{-1/7, 0}
90
+ sage: s._repr_()
91
+ 'X^2*{-1/7, 0}'
92
+ sage: s.rename('sym')
93
+ sage: s
94
+ sym
95
+ """
96
+ if self.weight() == 2:
97
+ polypart = ''
98
+ else:
99
+ polypart = str(self.polynomial_part()) + '*'
100
+ return "%s{%s, %s}" % (polypart, self.__alpha, self.__beta)
101
+
102
+ def __getitem__(self, j):
103
+ r"""
104
+ Given a modular symbols `s = X^i Y^{k-2-i}\{\alpha, \beta\}`, ``s[0]`` is `\alpha`
105
+ and ``s[1]`` is `\beta`.
106
+
107
+ EXAMPLES::
108
+
109
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]; s
110
+ {-1/9, 0}
111
+ sage: s[0]
112
+ -1/9
113
+ sage: s[1]
114
+ 0
115
+ sage: s[2]
116
+ Traceback (most recent call last):
117
+ ...
118
+ IndexError: list index out of range
119
+ """
120
+ return [self.__alpha, self.__beta][j]
121
+
122
+ def _latex_(self):
123
+ r"""
124
+ Return Latex representation of this modular symbol.
125
+
126
+ EXAMPLES::
127
+
128
+ sage: s = ModularSymbols(11,4).2.modular_symbol_rep()[0][1]; s
129
+ X^2*{-1/7, 0}
130
+ sage: latex(s) # indirect doctest
131
+ X^{2}\left\{\frac{-1}{7}, 0\right\}
132
+ """
133
+ if self.weight() == 2:
134
+ polypart = ''
135
+ else:
136
+ polypart = latex(self.polynomial_part())
137
+ return "%s\\left\\{%s, %s\\right\\}" % (polypart,
138
+ latex(self.__alpha),
139
+ latex(self.__beta))
140
+
141
+ def __richcmp__(self, other, op):
142
+ """
143
+ Compare ``self`` to ``other``.
144
+
145
+ EXAMPLES::
146
+
147
+ sage: M = ModularSymbols(11)
148
+ sage: s = M.2.modular_symbol_rep()[0][1]
149
+ sage: t = M.0.modular_symbol_rep()[0][1]
150
+ sage: s, t
151
+ ({-1/9, 0}, {Infinity, 0})
152
+ sage: s < t
153
+ True
154
+ sage: t > s
155
+ True
156
+ sage: s == s
157
+ True
158
+ sage: t == t
159
+ True
160
+ """
161
+ if not isinstance(other, ModularSymbol):
162
+ return NotImplemented
163
+ return richcmp((self.__space, -self.__i, self.__alpha, self.__beta),
164
+ (other.__space,-other.__i,other.__alpha,other.__beta),
165
+ op)
166
+
167
+ def __hash__(self):
168
+ """
169
+ EXAMPLES::
170
+
171
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]
172
+ sage: hash(s) # random
173
+ -7344656798833624820
174
+ """
175
+ return hash((self.__space, self.__i, self.__alpha, self.__beta))
176
+
177
+ def space(self):
178
+ """
179
+ The list of Manin symbols to which this symbol belongs.
180
+
181
+ EXAMPLES::
182
+
183
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]
184
+ sage: s.space()
185
+ Manin Symbol List of weight 2 for Gamma0(11)
186
+ """
187
+ return self.__space
188
+
189
+ def polynomial_part(self):
190
+ r"""
191
+ Return the polynomial part of this symbol, i.e. for a symbol of the
192
+ form `X^i Y^{k-2-i}\{\alpha, \beta\}`, return `X^i Y^{k-2-i}`.
193
+
194
+ EXAMPLES::
195
+
196
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]
197
+ sage: s.polynomial_part()
198
+ 1
199
+ sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]; s
200
+ X^22*Y^4*{0, Infinity}
201
+ sage: s.polynomial_part()
202
+ X^22*Y^4
203
+ """
204
+ i = self.__i
205
+ return X**i*Y**(self.weight()-2-i)
206
+
207
+ def i(self):
208
+ r"""
209
+ For a symbol of the form `X^i Y^{k-2-i}\{\alpha, \beta\}`, return `i`.
210
+
211
+ EXAMPLES::
212
+
213
+ sage: s = ModularSymbols(11).2.modular_symbol_rep()[0][1]
214
+ sage: s.i()
215
+ 0
216
+ sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]; s
217
+ X^22*Y^4*{0, Infinity}
218
+ sage: s.i()
219
+ 22
220
+ """
221
+ return self.__i
222
+
223
+ def weight(self):
224
+ r"""
225
+ Return the weight of the modular symbols space to which this symbol
226
+ belongs; i.e. for a symbol of the form `X^i Y^{k-2-i}\{\alpha,
227
+ \beta\}`, return `k`.
228
+
229
+ EXAMPLES::
230
+
231
+ sage: s = ModularSymbols(1,28).0.modular_symbol_rep()[0][1]
232
+ sage: s.weight()
233
+ 28
234
+ """
235
+ return self.__space.weight()
236
+
237
+ def alpha(self):
238
+ r"""
239
+ For a symbol of the form `X^i Y^{k-2-i}\{\alpha, \beta\}`, return `\alpha`.
240
+
241
+ EXAMPLES::
242
+
243
+ sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s
244
+ X^2*{-1/6, 0}
245
+ sage: s.alpha()
246
+ -1/6
247
+ sage: type(s.alpha())
248
+ <class 'sage.modular.cusps.Cusp'>
249
+ """
250
+ return self.__alpha
251
+
252
+ def beta(self):
253
+ r"""
254
+ For a symbol of the form `X^i Y^{k-2-i}\{\alpha, \beta\}`, return `\beta`.
255
+
256
+ EXAMPLES::
257
+
258
+ sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s
259
+ X^2*{-1/6, 0}
260
+ sage: s.beta()
261
+ 0
262
+ sage: type(s.beta())
263
+ <class 'sage.modular.cusps.Cusp'>
264
+ """
265
+ return self.__beta
266
+
267
+ def apply(self, g):
268
+ r"""
269
+ Act on this symbol by the element `g \in {\rm GL}_2(\QQ)`.
270
+
271
+ INPUT:
272
+
273
+ - ``g`` -- list ``[a,b,c,d]``, corresponding to the 2x2 matrix
274
+ `\begin{pmatrix} a & b \\ c & d \end{pmatrix} \in {\rm GL}_2(\QQ)`
275
+
276
+ OUTPUT:
277
+
278
+ - ``FormalSum`` -- a formal sum `\sum_i c_i x_i`, where `c_i` are
279
+ scalars and `x_i` are ModularSymbol objects, such that the sum
280
+ `\sum_i c_i x_i` is the image of this symbol under the action of g.
281
+ No reduction is performed modulo the relations that hold in
282
+ self.space().
283
+
284
+ The action of `g` on symbols is by
285
+
286
+ .. MATH::
287
+
288
+ P(X,Y)\{\alpha, \beta\} \mapsto P(dX-bY, -cx+aY) \{g(\alpha), g(\beta)\}.
289
+
290
+ Note that for us we have `P=X^i Y^{k-2-i}`, which simplifies computation
291
+ of the polynomial part slightly.
292
+
293
+ EXAMPLES::
294
+
295
+ sage: s = ModularSymbols(11,2).1.modular_symbol_rep()[0][1]; s
296
+ {-1/8, 0}
297
+ sage: a = 1; b = 2; c = 3; d = 4; s.apply([a,b,c,d])
298
+ {15/29, 1/2}
299
+ sage: x = -1/8; (a*x+b)/(c*x+d)
300
+ 15/29
301
+ sage: x = 0; (a*x+b)/(c*x+d)
302
+ 1/2
303
+ sage: s = ModularSymbols(11,4).1.modular_symbol_rep()[0][1]; s
304
+ X^2*{-1/6, 0}
305
+ sage: s.apply([a,b,c,d])
306
+ 16*X^2*{11/21, 1/2} - 16*X*Y*{11/21, 1/2} + 4*Y^2*{11/21, 1/2}
307
+ sage: P = s.polynomial_part()
308
+ sage: X, Y = P.parent().gens()
309
+ sage: P(d*X-b*Y, -c*X+a*Y)
310
+ 16*X^2 - 16*X*Y + 4*Y^2
311
+ sage: x = -1/6; (a*x+b)/(c*x+d)
312
+ 11/21
313
+ sage: x = 0; (a*x+b)/(c*x+d)
314
+ 1/2
315
+ sage: type(s.apply([a,b,c,d]))
316
+ <class 'sage.structure.formal_sum.FormalSum'>
317
+ """
318
+ space = self.__space
319
+ i = self.__i
320
+ k = space.weight()
321
+ a, b, c, d = tuple(g)
322
+ coeffs = apply_to_monomial(i, k - 2, d, -b, -c, a)
323
+ g_alpha = self.__alpha.apply(g)
324
+ g_beta = self.__beta.apply(g)
325
+ return formal_sum.FormalSum([(coeffs[j], ModularSymbol(space, j, g_alpha, g_beta))
326
+ for j in reversed(range(k-1)) if coeffs[j] != 0])
327
+
328
+ def __manin_symbol_rep(self, alpha):
329
+ """
330
+ Return Manin symbol representation of X^i*Y^(k-2-i){0,alpha}.
331
+
332
+ EXAMPLES::
333
+
334
+ sage: s = ModularSymbols(11,2).1.modular_symbol_rep()[0][1]; s
335
+ {-1/8, 0}
336
+ sage: s.manin_symbol_rep() # indirect doctest
337
+ -(1,1) - (-8,1)
338
+ sage: M = ModularSymbols(11,2)
339
+ sage: s = M( (1,9) ); s
340
+ (1,9)
341
+ sage: t = s.modular_symbol_rep()[0][1].manin_symbol_rep(); t
342
+ -(1,1) - (-9,1)
343
+ sage: M(t)
344
+ (1,9)
345
+ """
346
+ space = self.__space
347
+ i = self.__i
348
+ k = space.weight()
349
+ v = [(0,1), (1,0)]
350
+ if not alpha.is_infinity():
351
+ cf = alpha._rational_().continued_fraction()
352
+ v.extend((cf.p(k),cf.q(k)) for k in range(len(cf)))
353
+ sign = 1
354
+ z = formal_sum.FormalSum(0)
355
+ for j in range(1,len(v)):
356
+ c = sign*v[j][1]
357
+ d = v[j-1][1]
358
+ coeffs = apply_to_monomial(i, k-2, sign*v[j][0], v[j-1][0],
359
+ sign*v[j][1], v[j-1][1])
360
+ w = [(coeffs[j], ManinSymbol(space, (j, c, d)))
361
+ for j in range(k-1) if coeffs[j] != 0]
362
+ z += formal_sum.FormalSum(w)
363
+ sign *= -1
364
+ return z
365
+
366
+ def manin_symbol_rep(self):
367
+ """
368
+ Return a representation of ``self`` as a formal sum of Manin symbols.
369
+
370
+ The result is not cached.
371
+
372
+ EXAMPLES::
373
+
374
+ sage: M = ModularSymbols(11,4)
375
+ sage: s = M.1.modular_symbol_rep()[0][1]; s
376
+ X^2*{-1/6, 0}
377
+ sage: s.manin_symbol_rep()
378
+ -2*[X*Y,(-1,0)] - [X^2,(-1,0)] - [Y^2,(1,1)] - [X^2,(-6,1)]
379
+ sage: M(s.manin_symbol_rep()) == M([2,-1/6,0])
380
+ True
381
+ """
382
+ alpha = self.__alpha
383
+ beta = self.__beta
384
+ return -1*self.__manin_symbol_rep(alpha) + self.__manin_symbol_rep(beta)
@@ -0,0 +1,29 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+
3
+
4
+ cdef class export:
5
+ cdef int c_p1_normalize_int(self, int N, int u, int v,
6
+ int* uu, int* vv, int* ss,
7
+ int compute_s) except -1
8
+
9
+ cdef int c_p1_normalize_llong(self, int N, int u, int v,
10
+ int* uu, int* vv, int* ss,
11
+ int compute_s) except -1
12
+
13
+
14
+ cdef class P1List:
15
+ cdef int __N
16
+ cdef object __list, __end_hash
17
+
18
+ cdef int *g
19
+ cdef int *s
20
+ cdef int *t # xgcd with N table.
21
+
22
+ # Here we use a pointer to a function, so the if logic
23
+ # for normalizing an element does not need to be used
24
+ # every time the user calls the normalize function.
25
+ cdef int (*_normalize)(int N, int u, int v,
26
+ int* uu, int* vv, int* ss,
27
+ int compute_s) except -1
28
+ cpdef index(self, int u, int v)
29
+ cdef index_and_scalar(self, int u, int v, int* i, int* s)