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,339 @@
1
+ # sage_setup: distribution = sagemath-schemes
2
+ r"""
3
+ Dynamical systems for products of projective spaces
4
+
5
+ This class builds on the product projective space class.
6
+ The main constructor functions are given by ``DynamicalSystem`` and
7
+ ``DynamicalSystem_projective``. The constructors function can take either
8
+ polynomials or a morphism from which to construct a dynamical system.
9
+
10
+ The must be specified.
11
+
12
+ EXAMPLES::
13
+
14
+ sage: P1xP1.<x,y,u,v> = ProductProjectiveSpaces(QQ, [1, 1])
15
+ sage: DynamicalSystem_projective([x^2*u, y^2*v, x*v^2, y*u^2], domain=P1xP1)
16
+ Dynamical System of Product of projective spaces P^1 x P^1 over Rational Field
17
+ Defn: Defined by sending (x : y , u : v) to
18
+ (x^2*u : y^2*v , x*v^2 : y*u^2).
19
+ """
20
+ # ****************************************************************************
21
+ # Copyright (C) 2014 Ben Hutz <bn4941@gmail.com>
22
+ #
23
+ # Distributed under the terms of the GNU General Public License (GPL)
24
+ # as published by the Free Software Foundation; either version 2 of
25
+ # the License, or (at your option) any later version.
26
+ # https://www.gnu.org/licenses/
27
+ # ****************************************************************************
28
+ from copy import copy
29
+ from sage.dynamics.arithmetic_dynamics.generic_ds import DynamicalSystem
30
+ from sage.dynamics.arithmetic_dynamics.projective_ds import DynamicalSystem_projective
31
+ from sage.rings.integer_ring import ZZ
32
+ from sage.rings.quotient_ring import QuotientRing_generic
33
+ from sage.schemes.product_projective.morphism import ProductProjectiveSpaces_morphism_ring
34
+
35
+
36
+ class DynamicalSystem_product_projective(DynamicalSystem,
37
+ ProductProjectiveSpaces_morphism_ring):
38
+ r"""
39
+ The class of dynamical systems on products of projective spaces.
40
+
41
+ .. WARNING::
42
+
43
+ You should not create objects of this class directly because
44
+ no type or consistency checking is performed. The preferred
45
+ method to construct such dynamical systems is to use
46
+ :func:`~sage.dynamics.arithmetic_dynamics.generic_ds.DynamicalSystem_projective`
47
+ function.
48
+
49
+ INPUT:
50
+
51
+ - ``polys`` -- list of `n_1 + \cdots + n_r` multi-homogeneous polynomials, all
52
+ of which should have the same parent
53
+
54
+ - ``domain`` -- a projective scheme embedded in
55
+ `P^{n_1-1} \times \cdots \times P^{n_r-1}`
56
+
57
+ EXAMPLES::
58
+
59
+ sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ)
60
+ sage: DynamicalSystem_projective([x^2, y^2, z^2, w^2, u^2], domain=T)
61
+ Dynamical System of Product of projective spaces P^2 x P^1 over Rational Field
62
+ Defn: Defined by sending (x : y : z , w : u) to (x^2 : y^2 : z^2 , w^2 : u^2).
63
+ """
64
+
65
+ def __init__(self, polys, domain):
66
+ r"""
67
+ The Python constructor.
68
+
69
+ See :class:`DynamicalSystem` for details.
70
+
71
+ EXAMPLES::
72
+
73
+ sage: T.<x,y,w,u> = ProductProjectiveSpaces([1, 1], QQ)
74
+ sage: DynamicalSystem_projective([x^2, y^2, w^2, u^2], domain=T)
75
+ Dynamical System of Product of projective spaces P^1 x P^1 over Rational Field
76
+ Defn: Defined by sending (x : y , w : u) to
77
+ (x^2 : y^2 , w^2 : u^2).
78
+ """
79
+ DynamicalSystem.__init__(self, polys, domain)
80
+
81
+ def _call_with_args(self, P, check=True):
82
+ r"""
83
+ Make dynamical systems of products of projective spaces callable.
84
+
85
+ INPUT:
86
+
87
+ - ``P`` -- a point in the domain
88
+
89
+ - ``check`` -- boolean (default: ``True``); whether or not to perform
90
+ the input checks on the image point
91
+
92
+ OUTPUT: the image point in the codomain
93
+
94
+ EXAMPLES::
95
+
96
+ sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ)
97
+ sage: F = DynamicalSystem_projective([x^2*u, y^2*w, z^2*u, w^2, u^2], domain=T)
98
+ sage: F(T([2, 1, 3, 0, 1]))
99
+ (4/9 : 0 : 1 , 0 : 1)
100
+ """
101
+ if check:
102
+ from sage.schemes.product_projective.point import ProductProjectiveSpaces_point_ring
103
+ if not isinstance(P, ProductProjectiveSpaces_point_ring):
104
+ try:
105
+ P = self.domain()(P)
106
+ except (TypeError, NotImplementedError):
107
+ raise TypeError("%s fails to convert into the map's domain %s, but a `pushforward` method is not properly implemented" % (P, self.domain()))
108
+ elif self.domain() != P.codomain():
109
+ raise TypeError("%s fails to convert into the map's domain %s, but a `pushforward` method is not properly implemented" % (P, self.domain()))
110
+
111
+ A = self.domain()
112
+ Q = list(P)
113
+ newP = [f(Q) for f in self.defining_polynomials()]
114
+ return A.point(newP, check)
115
+
116
+ def nth_iterate(self, P, n, normalize=False):
117
+ r"""
118
+ Return the ``n``-th iterate of ``P`` by this dynamical system.
119
+
120
+ If ``normalize`` is ``True``, then the coordinates are
121
+ automatically normalized.
122
+
123
+ .. TODO:: Is there a more efficient way to do this?
124
+
125
+ INPUT:
126
+
127
+ - ``P`` -- a point in ``self.domain()``
128
+
129
+ - ``n`` -- positive integer
130
+
131
+ - ``normalize`` -- boolean (default: ``False``)
132
+
133
+ OUTPUT: a point in ``self.codomain()``
134
+
135
+ EXAMPLES::
136
+
137
+ sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ)
138
+ sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y],
139
+ ....: domain=Z)
140
+ sage: P = Z([1, 1, 1, 1, 1])
141
+ sage: f.nth_iterate(P, 3)
142
+ (1/1872 : 1 , 1 : 1 : 0)
143
+
144
+ ::
145
+
146
+ sage: Z.<a,b,x,y> = ProductProjectiveSpaces([1, 1], ZZ)
147
+ sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z)
148
+ sage: P = Z([2, 6, 2, 4])
149
+ sage: f.nth_iterate(P, 2, normalize=True)
150
+ (1 : 3 , 407 : 112)
151
+ """
152
+ if P.codomain() != self.domain():
153
+ raise TypeError("point is not defined over domain of function")
154
+ n = ZZ(n)
155
+ if n < 0:
156
+ raise TypeError("must be a forward orbit")
157
+ if n == 0:
158
+ return self
159
+ else:
160
+ Q = self(P)
161
+ if normalize:
162
+ Q.normalize_coordinates()
163
+ for i in range(2,n+1):
164
+ Q = self(Q)
165
+ if normalize:
166
+ Q.normalize_coordinates()
167
+ return Q
168
+
169
+ def orbit(self, P, N, **kwds):
170
+ r"""
171
+ Return the orbit of `P` by this dynamical system.
172
+
173
+ Let `F` be this dynamical system. If `N` is an integer return `[P,F(P),\ldots,F^N(P)]`.
174
+
175
+ If `N` is a list or tuple `N = [m, k]` return
176
+ `[F^m(P),\ldots,F^k(P)]`. Automatically normalize the points
177
+ if ``normalize`` is ``True``. Perform the checks on point
178
+ initialize if ``check`` is ``True``.
179
+
180
+ INPUT:
181
+
182
+ - ``P`` -- a point in ``self.domain()``
183
+
184
+ - ``N`` -- nonnegative integer or list or tuple of two nonnegative integers
185
+
186
+ kwds:
187
+
188
+ - ``check`` -- boolean (default: ``True``)
189
+
190
+ - ``normalize`` -- boolean (default: ``False``)
191
+
192
+ OUTPUT: list of points in ``self.codomain()``
193
+
194
+ EXAMPLES::
195
+
196
+ sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ)
197
+ sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y],
198
+ ....: domain=Z)
199
+ sage: P = Z([1, 1, 1, 1, 1])
200
+ sage: f.orbit(P, 3)
201
+ [(1 : 1 , 1 : 1 : 1), (1/2 : 1 , 1 : 0 : 1),
202
+ (1/12 : 1 , -1 : 1 : 0), (1/1872 : 1 , 1 : 1 : 0)]
203
+
204
+ ::
205
+
206
+ sage: Z.<a,b,x,y> = ProductProjectiveSpaces([1, 1], ZZ)
207
+ sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z)
208
+ sage: P = Z([2, 6, 2, 4])
209
+ sage: f.orbit(P, 3, normalize=True)
210
+ [(1 : 3 , 1 : 2), (1 : 3 , -7 : 4),
211
+ (1 : 3 , 407 : 112), (1 : 3 , 66014215 : 5105408)]
212
+ """
213
+ if P.codomain() != self.domain():
214
+ raise TypeError("point is not defined over domain of function")
215
+ if not isinstance(N, (list,tuple)):
216
+ N = [0, N]
217
+ try:
218
+ N[0] = ZZ(N[0])
219
+ N[1] = ZZ(N[1])
220
+ except TypeError:
221
+ raise TypeError("orbit bounds must be integers")
222
+ if N[0] < 0 or N[1] < 0:
223
+ raise TypeError("orbit bounds must be nonnegative")
224
+ if N[0] > N[1]:
225
+ return []
226
+
227
+ Q = copy(P)
228
+ check = kwds.pop("check", True)
229
+ normalize = kwds.pop("normalize", False)
230
+
231
+ if normalize:
232
+ Q.normalize_coordinates()
233
+ for i in range(1, N[0]+1):
234
+ Q = self(Q, check)
235
+ if normalize:
236
+ Q.normalize_coordinates()
237
+ orb = [Q]
238
+ for i in range(N[0]+1, N[1]+1):
239
+ Q = self(Q, check)
240
+ if normalize:
241
+ Q.normalize_coordinates()
242
+ orb.append(Q)
243
+ return orb
244
+
245
+ def nth_iterate_map(self, n):
246
+ r"""
247
+ Return the ``n``-th iterate of this dynamical system.
248
+
249
+ ALGORITHM:
250
+
251
+ Uses a form of successive squaring to reduce computations.
252
+
253
+
254
+ .. TODO:: This could be improved.
255
+
256
+ INPUT:
257
+
258
+ - ``n`` -- positive integer
259
+
260
+ OUTPUT: a dynamical system of products of projective spaces
261
+
262
+ EXAMPLES::
263
+
264
+ sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1 , 2], QQ)
265
+ sage: f = DynamicalSystem_projective([a^3, b^3, x^2, y^2, z^2], domain=Z)
266
+ sage: f.nth_iterate_map(3)
267
+ Dynamical System of Product of projective spaces P^1 x P^2 over
268
+ Rational Field
269
+ Defn: Defined by sending (a : b , x : y : z) to
270
+ (a^27 : b^27 , x^8 : y^8 : z^8).
271
+ """
272
+ E = self.domain()
273
+ D = int(n)
274
+ if D < 0:
275
+ raise TypeError("iterate number must be a nonnegative integer")
276
+ F = list(self._polys)
277
+ Coord_ring = E.coordinate_ring()
278
+ if isinstance(Coord_ring, QuotientRing_generic):
279
+ PHI = [gen.lift() for gen in Coord_ring.gens()]
280
+ else:
281
+ PHI = list(Coord_ring.gens())
282
+
283
+ while D:
284
+ if D & 1:
285
+ PHI = [poly(*F) for poly in PHI]
286
+ if D > 1: # avoid extra iterate
287
+ F = [poly(*F) for poly in F] # 'square'
288
+ D >>= 1
289
+ return DynamicalSystem_projective(PHI, domain=self.domain())
290
+
291
+
292
+ class DynamicalSystem_product_projective_field(DynamicalSystem_product_projective):
293
+ pass
294
+
295
+
296
+ class DynamicalSystem_product_projective_finite_field(DynamicalSystem_product_projective_field):
297
+
298
+ def cyclegraph(self):
299
+ r"""
300
+ Return the digraph of all orbits of this morphism mod `p`.
301
+
302
+ OUTPUT: a digraph
303
+
304
+ EXAMPLES::
305
+
306
+ sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(3), [1,1])
307
+ sage: f = DynamicalSystem_projective([a^2, b^2, c^2, d^2], domain=P)
308
+ sage: f.cyclegraph() # needs sage.graphs
309
+ Looped digraph on 16 vertices
310
+
311
+ ::
312
+
313
+ sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(5), [1,1])
314
+ sage: f = DynamicalSystem_projective([a^2, b^2, c, d], domain=P)
315
+ sage: f.cyclegraph() # needs sage.graphs
316
+ Looped digraph on 36 vertices
317
+
318
+ ::
319
+
320
+ sage: P.<a,b,c,d,e> = ProductProjectiveSpaces(GF(2), [1,2])
321
+ sage: f = DynamicalSystem_projective([a^2, b^2, c, d, e], domain=P)
322
+ sage: f.cyclegraph() # needs sage.graphs
323
+ Looped digraph on 21 vertices
324
+
325
+ .. TODO:: Dynamical systems for subschemes of product projective spaces needs work.
326
+ Thus this is not implemented for subschemes.
327
+ """
328
+ V = []
329
+ E = []
330
+ from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring
331
+ if isinstance(self.domain(), ProductProjectiveSpaces_ring):
332
+ for P in self.domain():
333
+ V.append(str(P))
334
+ Q = self(P)
335
+ E.append([str(Q)])
336
+ else:
337
+ raise NotImplementedError("cyclegraph for product projective spaces not implemented for subschemes")
338
+ from sage.graphs.digraph import DiGraph
339
+ return DiGraph(dict(zip(V, E)), loops=True)