passagemath-schemes 10.6.38__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.

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.21.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.38.dist-info/METADATA +204 -0
  7. passagemath_schemes-10.6.38.dist-info/METADATA.bak +205 -0
  8. passagemath_schemes-10.6.38.dist-info/RECORD +314 -0
  9. passagemath_schemes-10.6.38.dist-info/WHEEL +6 -0
  10. passagemath_schemes-10.6.38.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-314t-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-314t-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-314t-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-314t-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-314t-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-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 +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-314t-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-314t-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-314t-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-314t-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-314t-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-314t-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,30 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ r"""
3
+ AUTHORS:
4
+
5
+ - Jonas Jermann (2013): initial version
6
+ """
7
+ # ****************************************************************************
8
+ # Copyright (C) 2013-2014 Jonas Jermann <jjermann2@gmail.com>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ # as published by the Free Software Foundation; either version 2 of
12
+ # the License, or (at your option) any later version.
13
+ # https://www.gnu.org/licenses/
14
+ # ****************************************************************************
15
+ from sage.modular.modform_hecketriangle.hecke_triangle_groups import HeckeTriangleGroup
16
+
17
+ from sage.modular.modform_hecketriangle.series_constructor import MFSeriesConstructor
18
+
19
+ from sage.modular.modform_hecketriangle.graded_ring import (QuasiMeromorphicModularFormsRing,
20
+ QuasiWeakModularFormsRing, QuasiModularFormsRing,
21
+ QuasiCuspFormsRing, MeromorphicModularFormsRing,
22
+ WeakModularFormsRing,
23
+ ModularFormsRing, CuspFormsRing)
24
+
25
+ from sage.modular.modform_hecketriangle.space import (QuasiMeromorphicModularForms, QuasiWeakModularForms,
26
+ QuasiModularForms, QuasiCuspForms,
27
+ MeromorphicModularForms, WeakModularForms, ModularForms,
28
+ CuspForms, ZeroForm)
29
+
30
+ from sage.modular.modform_hecketriangle.subspace import ModularFormsSubSpace
@@ -0,0 +1,590 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ # sage.doctest: needs sage.graphs
3
+ r"""
4
+ Analytic types of modular forms
5
+
6
+ Properties of modular forms and their generalizations are assembled
7
+ into one partially ordered set. See :class:`AnalyticType` for a
8
+ list of handled properties.
9
+
10
+ AUTHORS:
11
+
12
+ - Jonas Jermann (2013): initial version
13
+ """
14
+
15
+ # ****************************************************************************
16
+ # Copyright (C) 2013-2014 Jonas Jermann <jjermann2@gmail.com>
17
+ #
18
+ # Distributed under the terms of the GNU General Public License (GPL)
19
+ # as published by the Free Software Foundation; either version 2 of
20
+ # the License, or (at your option) any later version.
21
+ # https://www.gnu.org/licenses/
22
+ # ****************************************************************************
23
+
24
+ from sage.sets.set import Set
25
+ from sage.combinat.posets.posets import Poset, FinitePoset
26
+ from sage.combinat.posets.lattices import FiniteLatticePoset
27
+ from sage.combinat.posets.elements import LatticePosetElement
28
+
29
+
30
+ class AnalyticTypeElement(LatticePosetElement):
31
+ r"""
32
+ Analytic types of forms and/or spaces.
33
+
34
+ An analytic type element describes what basic analytic
35
+ properties are contained/included in it.
36
+
37
+ EXAMPLES::
38
+
39
+ sage: from sage.modular.modform_hecketriangle.analytic_type import (AnalyticType, AnalyticTypeElement)
40
+ sage: from sage.combinat.posets.elements import LatticePosetElement
41
+ sage: AT = AnalyticType()
42
+ sage: el = AT(["quasi", "cusp"])
43
+ sage: el
44
+ quasi cuspidal
45
+ sage: isinstance(el, AnalyticTypeElement)
46
+ True
47
+ sage: isinstance(el, LatticePosetElement)
48
+ True
49
+ sage: el.parent() == AT
50
+ True
51
+ sage: sorted(el.element,key=str)
52
+ [cusp, quasi]
53
+ sage: from sage.sets.set import Set_object_enumerated
54
+ sage: isinstance(el.element, Set_object_enumerated)
55
+ True
56
+ sage: first = sorted(el.element,key=str)[0]; first
57
+ cusp
58
+ sage: first.parent() == AT.base_poset()
59
+ True
60
+
61
+ sage: el2 = AT("holo")
62
+ sage: sum = el + el2
63
+ sage: sum
64
+ quasi modular
65
+ sage: sorted(sum.element,key=str)
66
+ [cusp, holo, quasi]
67
+ sage: el * el2
68
+ cuspidal
69
+ """
70
+
71
+ # We use the same constructor as LatticePosetElement
72
+ # def __init__(self, poset, element, vertex):
73
+ # super().__init__(poset, element, vertex)
74
+
75
+ def _repr_(self):
76
+ r"""
77
+ Return the string representation of ``self``.
78
+
79
+ EXAMPLES::
80
+
81
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
82
+ sage: AnalyticType()(["quasi", "cusp"])
83
+ quasi cuspidal
84
+ """
85
+ return self.analytic_name()
86
+
87
+ def _latex_(self):
88
+ r"""
89
+ Return the LaTeX representation of ``self``.
90
+
91
+ EXAMPLES::
92
+
93
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
94
+ sage: latex(AnalyticType()(["quasi", "cusp"]))
95
+ \text{\texttt{quasi{ }cuspidal}}
96
+ """
97
+ from sage.misc.latex import latex
98
+ return latex(self.analytic_name())
99
+
100
+ def analytic_space_name(self):
101
+ r"""
102
+ Return the (analytic part of the) name of a space
103
+ with the analytic type of ``self``.
104
+
105
+ This is used for the string representation of such spaces.
106
+
107
+ EXAMPLES::
108
+
109
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
110
+ sage: AT = AnalyticType()
111
+ sage: AT(["quasi", "weak"]).analytic_space_name()
112
+ 'QuasiWeakModular'
113
+ sage: AT(["quasi", "cusp"]).analytic_space_name()
114
+ 'QuasiCusp'
115
+ sage: AT(["quasi"]).analytic_space_name()
116
+ 'Zero'
117
+ sage: AT([]).analytic_space_name()
118
+ 'Zero'
119
+ """
120
+ name = ""
121
+ if self.parent()("quasi") <= self:
122
+ name += "Quasi"
123
+ if self.parent()("mero") <= self:
124
+ name += "MeromorphicModular"
125
+ elif self.parent()("weak") <= self:
126
+ name += "WeakModular"
127
+ elif self.parent()("holo") <= self:
128
+ name += "Modular"
129
+ elif self.parent()("cusp") <= self:
130
+ name += "Cusp"
131
+ else:
132
+ name = "Zero"
133
+ return name
134
+
135
+ def latex_space_name(self):
136
+ r"""
137
+ Return the short (analytic part of the) name of a space
138
+ with the analytic type of ``self`` for usage with latex.
139
+
140
+ This is used for the latex representation of such spaces.
141
+
142
+ EXAMPLES::
143
+
144
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
145
+ sage: AT = AnalyticType()
146
+ sage: AT("mero").latex_space_name()
147
+ '\\tilde{M}'
148
+ sage: AT("weak").latex_space_name()
149
+ 'M^!'
150
+ sage: AT(["quasi", "cusp"]).latex_space_name()
151
+ 'QC'
152
+ sage: AT([]).latex_space_name()
153
+ 'Z'
154
+ """
155
+ name = ""
156
+ if self.parent()("quasi") <= self:
157
+ name += "Q"
158
+ if self.parent()("mero") <= self:
159
+ name += "\\tilde{M}"
160
+ elif self.parent()("weak") <= self:
161
+ name += "M^!"
162
+ elif self.parent()("holo") <= self:
163
+ name += "M"
164
+ elif self.parent()("cusp") <= self:
165
+ name += "C"
166
+ else:
167
+ name = "Z"
168
+ return name
169
+
170
+ def analytic_name(self):
171
+ r"""
172
+ Return a string representation of the analytic type.
173
+
174
+ EXAMPLES::
175
+
176
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
177
+ sage: AT = AnalyticType()
178
+ sage: AT(["quasi", "weak"]).analytic_name()
179
+ 'quasi weakly holomorphic modular'
180
+ sage: AT(["quasi", "cusp"]).analytic_name()
181
+ 'quasi cuspidal'
182
+ sage: AT(["quasi"]).analytic_name()
183
+ 'zero'
184
+ sage: AT([]).analytic_name()
185
+ 'zero'
186
+ """
187
+ name = ""
188
+ if self.parent()("quasi") <= self:
189
+ name += "quasi "
190
+ if self.parent()("mero") <= self:
191
+ name += "meromorphic modular"
192
+ elif self.parent()("weak") <= self:
193
+ name += "weakly holomorphic modular"
194
+ elif self.parent()("holo") <= self:
195
+ name += "modular"
196
+ elif self.parent()("cusp") <= self:
197
+ name += "cuspidal"
198
+ else:
199
+ name = "zero"
200
+ return name
201
+
202
+ def reduce_to(self, reduce_type):
203
+ r"""
204
+ Return a new analytic type which contains only analytic properties
205
+ specified in both ``self`` and ``reduce_type``.
206
+
207
+ INPUT:
208
+
209
+ - ``reduce_type`` -- an analytic type or something which is
210
+ convertible to an analytic type
211
+
212
+ OUTPUT: the new reduced analytic type
213
+
214
+ EXAMPLES::
215
+
216
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
217
+ sage: AT = AnalyticType()
218
+ sage: el = AT(["quasi", "cusp"])
219
+ sage: el2 = AT("holo")
220
+
221
+ sage: el.reduce_to(el2)
222
+ cuspidal
223
+ sage: el.reduce_to(el2) == el * el2
224
+ True
225
+ """
226
+
227
+ reduce_type = self.parent()(reduce_type)
228
+ return self * reduce_type
229
+
230
+ def extend_by(self, extend_type):
231
+ r"""
232
+ Return a new analytic type which contains all analytic properties
233
+ specified either in ``self`` or in ``extend_type``.
234
+
235
+ INPUT:
236
+
237
+ - ``extend_type`` -- an analytic type or something which is
238
+ convertible to an analytic type
239
+
240
+ OUTPUT: the new extended analytic type
241
+
242
+ EXAMPLES::
243
+
244
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
245
+ sage: AT = AnalyticType()
246
+ sage: el = AT(["quasi", "cusp"])
247
+ sage: el2 = AT("holo")
248
+
249
+ sage: el.extend_by(el2)
250
+ quasi modular
251
+ sage: el.extend_by(el2) == el + el2
252
+ True
253
+ """
254
+
255
+ extend_type = self.parent()(extend_type)
256
+ return self + extend_type
257
+
258
+ def __iter__(self):
259
+ r"""
260
+ Return an iterator of ``self`` which gives the basic analytic
261
+ properties contained in ``self`` as strings.
262
+
263
+ EXAMPLES::
264
+
265
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
266
+ sage: el = AnalyticType()(["quasi", "weak"])
267
+ sage: sorted(el)
268
+ ['cusp', 'holo', 'quasi', 'weak']
269
+ sage: "mero" in el
270
+ False
271
+ sage: "cusp" in el
272
+ True
273
+ """
274
+ return iter([el.element for el in self.element])
275
+
276
+
277
+ class AnalyticType(FiniteLatticePoset):
278
+ r"""
279
+ Container for all possible analytic types of forms and/or spaces.
280
+
281
+ The ``analytic type`` of forms spaces or rings describes all possible
282
+ occurring basic ``analytic properties`` of elements in the space/ring
283
+ (or more).
284
+
285
+ For ambient spaces/rings this means that all elements with those properties
286
+ (and the restrictions of the space/ring) are contained in the space/ring.
287
+
288
+ The analytic type of an element is the analytic type of its minimal
289
+ ambient space/ring.
290
+
291
+ The basic ``analytic properties`` are:
292
+
293
+ - ``quasi`` -- whether the element is quasi modular (and not modular)
294
+ or modular.
295
+ - ``mero`` -- ``meromorphic`` -- if the element is meromorphic
296
+ and meromorphic at infinity
297
+ - ``weak`` -- ``weakly holomorphic`` -- if the element is holomorphic
298
+ and meromorphic at infinity
299
+ - ``holo`` -- ``holomorphic`` -- if the element is holomorphic and
300
+ holomorphic at infinity
301
+ - ``cusp`` -- ``cuspidal`` -- if the element additionally has a positive
302
+ order at infinity
303
+
304
+ The ``zero`` elements/property have no analytic properties (or only ``quasi``).
305
+
306
+ For ring elements the property describes whether one of its homogeneous
307
+ components satisfies that property and the "union" of those properties
308
+ is returned as the ``analytic type``.
309
+
310
+ Similarly for quasi forms the property describes whether one of its
311
+ quasi components satisfies that property.
312
+
313
+ There is a (natural) partial order between the basic properties
314
+ (and analytic types) given by "inclusion". We name the analytic type
315
+ according to its maximal analytic properties.
316
+
317
+ For `n=3` the quasi form ``el = E6 - E2^3`` has the quasi components ``E6``
318
+ which is ``holomorphic`` and ``E2^3`` which is ``quasi holomorphic``.
319
+ So the analytic type of ``el`` is ``quasi holomorphic`` despite the fact
320
+ that the sum (``el``) describes a function which is zero at infinity.
321
+
322
+ EXAMPLES::
323
+
324
+ sage: from sage.modular.modform_hecketriangle.space import QuasiModularForms
325
+ sage: x,y,z,d = var("x,y,z,d") # needs sage.symbolic
326
+ sage: el = QuasiModularForms(n=3, k=6, ep=-1)(y-z^3) # needs sage.symbolic
327
+ sage: el.analytic_type() # needs sage.symbolic
328
+ quasi modular
329
+
330
+ Similarly the type of the ring element ``el2 = E4/Delta - E6/Delta`` is
331
+ ``weakly holomorphic`` despite the fact that the sum (``el2``) describes
332
+ a function which is holomorphic at infinity::
333
+
334
+ sage: from sage.modular.modform_hecketriangle.graded_ring import WeakModularFormsRing
335
+ sage: x,y,z,d = var("x,y,z,d") # needs sage.symbolic
336
+ sage: el2 = WeakModularFormsRing(n=3)(x/(x^3-y^2)-y/(x^3-y^2)) # needs sage.symbolic
337
+ sage: el2.analytic_type() # needs sage.symbolic
338
+ weakly holomorphic modular
339
+ """
340
+
341
+ Element = AnalyticTypeElement
342
+
343
+ @staticmethod
344
+ def __classcall__(cls):
345
+ r"""
346
+ Directly return the classcall of UniqueRepresentation
347
+ (skipping the classcalls of the other superclasses).
348
+
349
+ That's because ``self`` is supposed to be used as a Singleton.
350
+ It initializes the FinitelatticePoset with the proper arguments
351
+ by itself in ``self.__init__()``.
352
+
353
+ EXAMPLES::
354
+
355
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
356
+ sage: AT = AnalyticType()
357
+ sage: AT2 = AnalyticType()
358
+ sage: AT is AT2
359
+ True
360
+ """
361
+ return super(FinitePoset, cls).__classcall__(cls)
362
+
363
+ def __init__(self):
364
+ r"""
365
+ Container for all possible analytic types of forms and/or spaces.
366
+
367
+ This class is supposed to be used as a Singleton.
368
+
369
+ It first creates a ``Poset`` that contains all basic analytic
370
+ properties to be modeled by the AnalyticType. Then the order
371
+ ideals lattice of that Poset is taken as the underlying
372
+ FiniteLatticePoset of ``self``.
373
+
374
+ In particular elements of ``self`` describe what basic analytic
375
+ properties are contained/included in that element.
376
+
377
+ EXAMPLES::
378
+
379
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
380
+ sage: from sage.combinat.posets.lattices import FiniteLatticePoset
381
+ sage: AT = AnalyticType()
382
+ sage: AT
383
+ Analytic Type
384
+ sage: isinstance(AT, FiniteLatticePoset)
385
+ True
386
+
387
+ sage: AT.is_lattice()
388
+ True
389
+ sage: AT.is_finite()
390
+ True
391
+ sage: AT.cardinality()
392
+ 10
393
+ sage: AT.is_modular()
394
+ True
395
+ sage: AT.is_bounded()
396
+ True
397
+ sage: AT.is_distributive()
398
+ True
399
+ sage: sorted(AT, key=str)
400
+ [cuspidal,
401
+ meromorphic modular,
402
+ modular,
403
+ quasi cuspidal,
404
+ quasi meromorphic modular,
405
+ quasi modular,
406
+ quasi weakly holomorphic modular,
407
+ weakly holomorphic modular,
408
+ zero,
409
+ zero]
410
+ sage: len(AT.relations())
411
+ 45
412
+ sage: sortkey = lambda xy: (str(xy[0]), str(xy[1]))
413
+ sage: sorted(AT.cover_relations(), key=sortkey)
414
+ [[cuspidal, modular],
415
+ [cuspidal, quasi cuspidal],
416
+ [meromorphic modular, quasi meromorphic modular],
417
+ [modular, quasi modular],
418
+ [modular, weakly holomorphic modular],
419
+ [quasi cuspidal, quasi modular],
420
+ [quasi modular, quasi weakly holomorphic modular],
421
+ [quasi weakly holomorphic modular, quasi meromorphic modular],
422
+ [weakly holomorphic modular, meromorphic modular],
423
+ [weakly holomorphic modular, quasi weakly holomorphic modular],
424
+ [zero, cuspidal],
425
+ [zero, quasi cuspidal],
426
+ [zero, zero]]
427
+ sage: AT.has_top()
428
+ True
429
+ sage: AT.has_bottom()
430
+ True
431
+ sage: AT.top()
432
+ quasi meromorphic modular
433
+ sage: AT.bottom()
434
+ zero
435
+ """
436
+ # We (arbitrarily) choose to model by inclusion instead of restriction
437
+ P_elements = ["cusp", "holo", "weak", "mero", "quasi"]
438
+ P_relations = [["cusp", "holo"], ["holo", "weak"], ["weak", "mero"]]
439
+
440
+ self._base_poset = Poset([P_elements, P_relations], cover_relations=True,
441
+ linear_extension=True, facade=False)
442
+
443
+ L = self._base_poset.order_ideals_lattice()
444
+ H = L._hasse_diagram.relabel(dict(enumerate(L._elements)),
445
+ inplace=False)
446
+ FiniteLatticePoset.__init__(self, hasse_diagram=H,
447
+ elements=L._elements, category=L.category(),
448
+ facade=False, key=None)
449
+
450
+ def _repr_(self):
451
+ r"""
452
+ Return the string representation of ``self``.
453
+
454
+ EXAMPLES::
455
+
456
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
457
+ sage: AnalyticType()
458
+ Analytic Type
459
+ """
460
+
461
+ return "Analytic Type"
462
+
463
+ def __call__(self, *args, **kwargs):
464
+ r"""
465
+ Return the result of the corresponding call function
466
+ of ``FiniteLatticePoset``.
467
+
468
+ If more than one argument is given it is called with
469
+ the list of those arguments instead.
470
+
471
+ .. NOTE::
472
+
473
+ The function just extends the ``__call__`` function to allow multiple arguments
474
+ (see the example below).
475
+
476
+ EXAMPLES::
477
+
478
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
479
+ sage: AT = AnalyticType()
480
+ sage: AT("holo", "quasi") == AT(["holo", "quasi"])
481
+ True
482
+ """
483
+ if len(args) > 1:
484
+ return super().__call__(list(args), **kwargs)
485
+ else:
486
+ return super().__call__(*args, **kwargs)
487
+
488
+ def _element_constructor_(self, element):
489
+ r"""
490
+ Return ``element`` coerced into an element of ``self``.
491
+
492
+ INPUT:
493
+
494
+ - ``element`` -- either something which coerces in the
495
+ ``FiniteLatticePoset`` of ``self`` or a string or a list of strings
496
+ of basic properties that should be contained in the new element
497
+
498
+ OUTPUT:
499
+
500
+ An element of ``self`` corresponding to ``element``
501
+ (resp. containing all specified basic analytic properties).
502
+
503
+ EXAMPLES::
504
+
505
+ sage: from sage.modular.modform_hecketriangle.analytic_type import (AnalyticType, AnalyticTypeElement)
506
+ sage: AT = AnalyticType()
507
+ sage: AT("holo") == AT(["holo"])
508
+ True
509
+ sage: el = AT(["quasi", "holo"])
510
+ sage: el
511
+ quasi modular
512
+ sage: el == AT(("holo", "quasi"))
513
+ True
514
+ sage: el.parent() == AT
515
+ True
516
+ sage: isinstance(el, AnalyticTypeElement)
517
+ True
518
+ sage: sorted(el.element,key=str)
519
+ [cusp, holo, quasi]
520
+ """
521
+ if isinstance(element, str):
522
+ element = [element]
523
+ if isinstance(element, (list, tuple)):
524
+ element = Set(self._base_poset.order_ideal([self._base_poset(s)
525
+ for s in element]))
526
+
527
+ return super()._element_constructor_(element)
528
+
529
+ # res = self.first()
530
+ # for element in args:
531
+ # if type(element)==str:
532
+ # element=[element]
533
+ # if isinstance(element,list) or isinstance(element,tuple):
534
+ # element = Set(self._base_poset.order_ideal([self._base_poset(s) for s in element]))
535
+ # element = super()._element_constructor_(element)
536
+ # res += element
537
+ # return res
538
+
539
+ def base_poset(self):
540
+ r"""
541
+ Return the base poset from which everything of ``self``
542
+ was constructed. Elements of the base poset correspond
543
+ to the basic ``analytic properties``.
544
+
545
+ EXAMPLES::
546
+
547
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
548
+ sage: from sage.combinat.posets.posets import FinitePoset
549
+ sage: AT = AnalyticType()
550
+ sage: P = AT.base_poset()
551
+ sage: P
552
+ Finite poset containing 5 elements with distinguished linear extension
553
+ sage: isinstance(P, FinitePoset)
554
+ True
555
+
556
+ sage: P.is_lattice()
557
+ False
558
+ sage: P.is_finite()
559
+ True
560
+ sage: P.cardinality()
561
+ 5
562
+ sage: P.is_bounded()
563
+ False
564
+ sage: P.list()
565
+ [cusp, holo, weak, mero, quasi]
566
+
567
+ sage: len(P.relations())
568
+ 11
569
+ sage: P.cover_relations()
570
+ [[cusp, holo], [holo, weak], [weak, mero]]
571
+ sage: P.has_top()
572
+ False
573
+ sage: P.has_bottom()
574
+ False
575
+ """
576
+
577
+ return self._base_poset
578
+
579
+ def lattice_poset(self):
580
+ r"""
581
+ Return the underlying lattice poset of ``self``.
582
+
583
+ EXAMPLES::
584
+
585
+ sage: from sage.modular.modform_hecketriangle.analytic_type import AnalyticType
586
+ sage: AnalyticType().lattice_poset()
587
+ Finite lattice containing 10 elements
588
+ """
589
+
590
+ return FiniteLatticePoset(self._base_poset.order_ideals_lattice(), facade=False)