passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_aarch64.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-modules might be problematic. Click here for more details.

Files changed (807) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +807 -0
  3. passagemath_modules-10.6.31rc3.dist-info/WHEEL +5 -0
  4. passagemath_modules-10.6.31rc3.dist-info/top_level.txt +2 -0
  5. passagemath_modules.libs/libgcc_s-2d945d6c.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-67378ab2.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-23768756.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-7897025b.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-503f0c35.3.29.so +0 -0
  12. sage/algebras/all__sagemath_modules.py +20 -0
  13. sage/algebras/catalog.py +148 -0
  14. sage/algebras/clifford_algebra.py +3107 -0
  15. sage/algebras/clifford_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  16. sage/algebras/clifford_algebra_element.pxd +16 -0
  17. sage/algebras/clifford_algebra_element.pyx +997 -0
  18. sage/algebras/commutative_dga.py +4252 -0
  19. sage/algebras/exterior_algebra_groebner.cpython-314-aarch64-linux-musl.so +0 -0
  20. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  21. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  22. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  23. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  29. sage/algebras/finite_gca.py +528 -0
  30. sage/algebras/group_algebra.py +232 -0
  31. sage/algebras/lie_algebras/abelian.py +197 -0
  32. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  33. sage/algebras/lie_algebras/all.py +25 -0
  34. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  35. sage/algebras/lie_algebras/bch.py +177 -0
  36. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  37. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  38. sage/algebras/lie_algebras/center_uea.py +767 -0
  39. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  40. sage/algebras/lie_algebras/examples.py +683 -0
  41. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  42. sage/algebras/lie_algebras/heisenberg.py +820 -0
  43. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  44. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-aarch64-linux-musl.so +0 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  47. sage/algebras/lie_algebras/morphism.py +661 -0
  48. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  49. sage/algebras/lie_algebras/onsager.py +1324 -0
  50. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  51. sage/algebras/lie_algebras/quotient.py +462 -0
  52. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  53. sage/algebras/lie_algebras/representation.py +1040 -0
  54. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  55. sage/algebras/lie_algebras/subalgebra.py +967 -0
  56. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  57. sage/algebras/lie_algebras/verma_module.py +1630 -0
  58. sage/algebras/lie_algebras/virasoro.py +1186 -0
  59. sage/algebras/octonion_algebra.cpython-314-aarch64-linux-musl.so +0 -0
  60. sage/algebras/octonion_algebra.pxd +20 -0
  61. sage/algebras/octonion_algebra.pyx +987 -0
  62. sage/algebras/orlik_solomon.py +907 -0
  63. sage/algebras/orlik_terao.py +779 -0
  64. sage/algebras/steenrod/all.py +7 -0
  65. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  66. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  67. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  68. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  69. sage/algebras/weyl_algebra.py +1126 -0
  70. sage/all__sagemath_modules.py +62 -0
  71. sage/calculus/all__sagemath_modules.py +19 -0
  72. sage/calculus/expr.py +205 -0
  73. sage/calculus/integration.cpython-314-aarch64-linux-musl.so +0 -0
  74. sage/calculus/integration.pyx +698 -0
  75. sage/calculus/interpolation.cpython-314-aarch64-linux-musl.so +0 -0
  76. sage/calculus/interpolation.pxd +13 -0
  77. sage/calculus/interpolation.pyx +387 -0
  78. sage/calculus/interpolators.cpython-314-aarch64-linux-musl.so +0 -0
  79. sage/calculus/interpolators.pyx +326 -0
  80. sage/calculus/ode.cpython-314-aarch64-linux-musl.so +0 -0
  81. sage/calculus/ode.pxd +5 -0
  82. sage/calculus/ode.pyx +610 -0
  83. sage/calculus/riemann.cpython-314-aarch64-linux-musl.so +0 -0
  84. sage/calculus/riemann.pyx +1521 -0
  85. sage/calculus/test_sympy.py +201 -0
  86. sage/calculus/transforms/all.py +7 -0
  87. sage/calculus/transforms/dft.py +844 -0
  88. sage/calculus/transforms/dwt.cpython-314-aarch64-linux-musl.so +0 -0
  89. sage/calculus/transforms/dwt.pxd +7 -0
  90. sage/calculus/transforms/dwt.pyx +160 -0
  91. sage/calculus/transforms/fft.cpython-314-aarch64-linux-musl.so +0 -0
  92. sage/calculus/transforms/fft.pxd +12 -0
  93. sage/calculus/transforms/fft.pyx +487 -0
  94. sage/calculus/wester.py +662 -0
  95. sage/coding/abstract_code.py +1108 -0
  96. sage/coding/ag_code.py +868 -0
  97. sage/coding/ag_code_decoders.cpython-314-aarch64-linux-musl.so +0 -0
  98. sage/coding/ag_code_decoders.pyx +2639 -0
  99. sage/coding/all.py +15 -0
  100. sage/coding/bch_code.py +494 -0
  101. sage/coding/binary_code.cpython-314-aarch64-linux-musl.so +0 -0
  102. sage/coding/binary_code.pxd +124 -0
  103. sage/coding/binary_code.pyx +4139 -0
  104. sage/coding/bounds_catalog.py +43 -0
  105. sage/coding/channel.py +819 -0
  106. sage/coding/channels_catalog.py +29 -0
  107. sage/coding/code_bounds.py +755 -0
  108. sage/coding/code_constructions.py +804 -0
  109. sage/coding/codes_catalog.py +111 -0
  110. sage/coding/cyclic_code.py +1329 -0
  111. sage/coding/databases.py +316 -0
  112. sage/coding/decoder.py +373 -0
  113. sage/coding/decoders_catalog.py +88 -0
  114. sage/coding/delsarte_bounds.py +709 -0
  115. sage/coding/encoder.py +390 -0
  116. sage/coding/encoders_catalog.py +64 -0
  117. sage/coding/extended_code.py +468 -0
  118. sage/coding/gabidulin_code.py +1058 -0
  119. sage/coding/golay_code.py +404 -0
  120. sage/coding/goppa_code.py +441 -0
  121. sage/coding/grs_code.py +2371 -0
  122. sage/coding/guava.py +107 -0
  123. sage/coding/guruswami_sudan/all.py +1 -0
  124. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  125. sage/coding/guruswami_sudan/interpolation.py +409 -0
  126. sage/coding/guruswami_sudan/utils.py +176 -0
  127. sage/coding/hamming_code.py +176 -0
  128. sage/coding/information_set_decoder.py +1032 -0
  129. sage/coding/kasami_codes.cpython-314-aarch64-linux-musl.so +0 -0
  130. sage/coding/kasami_codes.pyx +351 -0
  131. sage/coding/linear_code.py +3067 -0
  132. sage/coding/linear_code_no_metric.py +1354 -0
  133. sage/coding/linear_rank_metric.py +961 -0
  134. sage/coding/parity_check_code.py +353 -0
  135. sage/coding/punctured_code.py +719 -0
  136. sage/coding/reed_muller_code.py +999 -0
  137. sage/coding/self_dual_codes.py +942 -0
  138. sage/coding/source_coding/all.py +2 -0
  139. sage/coding/source_coding/huffman.py +553 -0
  140. sage/coding/subfield_subcode.py +423 -0
  141. sage/coding/two_weight_db.py +399 -0
  142. sage/combinat/all__sagemath_modules.py +7 -0
  143. sage/combinat/cartesian_product.py +347 -0
  144. sage/combinat/family.py +11 -0
  145. sage/combinat/free_module.py +1977 -0
  146. sage/combinat/root_system/all.py +147 -0
  147. sage/combinat/root_system/ambient_space.py +527 -0
  148. sage/combinat/root_system/associahedron.py +471 -0
  149. sage/combinat/root_system/braid_move_calculator.py +143 -0
  150. sage/combinat/root_system/braid_orbit.cpython-314-aarch64-linux-musl.so +0 -0
  151. sage/combinat/root_system/braid_orbit.pyx +144 -0
  152. sage/combinat/root_system/branching_rules.py +2301 -0
  153. sage/combinat/root_system/cartan_matrix.py +1245 -0
  154. sage/combinat/root_system/cartan_type.py +3069 -0
  155. sage/combinat/root_system/coxeter_group.py +162 -0
  156. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  157. sage/combinat/root_system/coxeter_type.py +681 -0
  158. sage/combinat/root_system/dynkin_diagram.py +900 -0
  159. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  160. sage/combinat/root_system/fundamental_group.py +795 -0
  161. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  162. sage/combinat/root_system/integrable_representations.py +1227 -0
  163. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  164. sage/combinat/root_system/pieri_factors.py +1147 -0
  165. sage/combinat/root_system/plot.py +1615 -0
  166. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  167. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  168. sage/combinat/root_system/root_space.py +487 -0
  169. sage/combinat/root_system/root_system.py +882 -0
  170. sage/combinat/root_system/type_A.py +348 -0
  171. sage/combinat/root_system/type_A_affine.py +227 -0
  172. sage/combinat/root_system/type_A_infinity.py +241 -0
  173. sage/combinat/root_system/type_B.py +347 -0
  174. sage/combinat/root_system/type_BC_affine.py +287 -0
  175. sage/combinat/root_system/type_B_affine.py +216 -0
  176. sage/combinat/root_system/type_C.py +317 -0
  177. sage/combinat/root_system/type_C_affine.py +188 -0
  178. sage/combinat/root_system/type_D.py +357 -0
  179. sage/combinat/root_system/type_D_affine.py +208 -0
  180. sage/combinat/root_system/type_E.py +641 -0
  181. sage/combinat/root_system/type_E_affine.py +231 -0
  182. sage/combinat/root_system/type_F.py +387 -0
  183. sage/combinat/root_system/type_F_affine.py +137 -0
  184. sage/combinat/root_system/type_G.py +293 -0
  185. sage/combinat/root_system/type_G_affine.py +132 -0
  186. sage/combinat/root_system/type_H.py +105 -0
  187. sage/combinat/root_system/type_I.py +110 -0
  188. sage/combinat/root_system/type_Q.py +150 -0
  189. sage/combinat/root_system/type_affine.py +509 -0
  190. sage/combinat/root_system/type_dual.py +704 -0
  191. sage/combinat/root_system/type_folded.py +301 -0
  192. sage/combinat/root_system/type_marked.py +748 -0
  193. sage/combinat/root_system/type_reducible.py +601 -0
  194. sage/combinat/root_system/type_relabel.py +730 -0
  195. sage/combinat/root_system/type_super_A.py +837 -0
  196. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  197. sage/combinat/root_system/weight_space.py +639 -0
  198. sage/combinat/root_system/weyl_characters.py +2238 -0
  199. sage/crypto/__init__.py +4 -0
  200. sage/crypto/all.py +28 -0
  201. sage/crypto/block_cipher/all.py +7 -0
  202. sage/crypto/block_cipher/des.py +1065 -0
  203. sage/crypto/block_cipher/miniaes.py +2171 -0
  204. sage/crypto/block_cipher/present.py +909 -0
  205. sage/crypto/block_cipher/sdes.py +1527 -0
  206. sage/crypto/boolean_function.cpython-314-aarch64-linux-musl.so +0 -0
  207. sage/crypto/boolean_function.pxd +10 -0
  208. sage/crypto/boolean_function.pyx +1487 -0
  209. sage/crypto/cipher.py +78 -0
  210. sage/crypto/classical.py +3668 -0
  211. sage/crypto/classical_cipher.py +569 -0
  212. sage/crypto/cryptosystem.py +387 -0
  213. sage/crypto/key_exchange/all.py +7 -0
  214. sage/crypto/key_exchange/catalog.py +24 -0
  215. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  216. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  217. sage/crypto/lattice.py +312 -0
  218. sage/crypto/lfsr.py +295 -0
  219. sage/crypto/lwe.py +840 -0
  220. sage/crypto/mq/__init__.py +4 -0
  221. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  222. sage/crypto/mq/rijndael_gf.py +2345 -0
  223. sage/crypto/mq/sbox.py +7 -0
  224. sage/crypto/mq/sr.py +3344 -0
  225. sage/crypto/public_key/all.py +5 -0
  226. sage/crypto/public_key/blum_goldwasser.py +776 -0
  227. sage/crypto/sbox.cpython-314-aarch64-linux-musl.so +0 -0
  228. sage/crypto/sbox.pyx +2090 -0
  229. sage/crypto/sboxes.py +2090 -0
  230. sage/crypto/stream.py +390 -0
  231. sage/crypto/stream_cipher.py +297 -0
  232. sage/crypto/util.py +519 -0
  233. sage/ext/all__sagemath_modules.py +1 -0
  234. sage/ext/interpreters/__init__.py +1 -0
  235. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  236. sage/ext/interpreters/wrapper_cc.cpython-314-aarch64-linux-musl.so +0 -0
  237. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  238. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  239. sage/ext/interpreters/wrapper_cdf.cpython-314-aarch64-linux-musl.so +0 -0
  240. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  241. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  242. sage/ext/interpreters/wrapper_rdf.cpython-314-aarch64-linux-musl.so +0 -0
  243. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  244. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  245. sage/ext/interpreters/wrapper_rr.cpython-314-aarch64-linux-musl.so +0 -0
  246. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  247. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  248. sage/geometry/all__sagemath_modules.py +5 -0
  249. sage/geometry/toric_lattice.py +1745 -0
  250. sage/geometry/toric_lattice_element.cpython-314-aarch64-linux-musl.so +0 -0
  251. sage/geometry/toric_lattice_element.pyx +432 -0
  252. sage/groups/abelian_gps/abelian_group.py +1925 -0
  253. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  254. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  255. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  256. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  257. sage/groups/abelian_gps/element_base.py +341 -0
  258. sage/groups/abelian_gps/values.py +488 -0
  259. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  260. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  261. sage/groups/additive_abelian/all.py +4 -0
  262. sage/groups/additive_abelian/qmodnz.py +231 -0
  263. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  264. sage/groups/affine_gps/affine_group.py +535 -0
  265. sage/groups/affine_gps/all.py +1 -0
  266. sage/groups/affine_gps/catalog.py +17 -0
  267. sage/groups/affine_gps/euclidean_group.py +246 -0
  268. sage/groups/affine_gps/group_element.py +562 -0
  269. sage/groups/all__sagemath_modules.py +12 -0
  270. sage/groups/galois_group.py +479 -0
  271. sage/groups/matrix_gps/all.py +4 -0
  272. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  273. sage/groups/matrix_gps/catalog.py +26 -0
  274. sage/groups/matrix_gps/coxeter_group.py +927 -0
  275. sage/groups/matrix_gps/finitely_generated.py +487 -0
  276. sage/groups/matrix_gps/group_element.cpython-314-aarch64-linux-musl.so +0 -0
  277. sage/groups/matrix_gps/group_element.pxd +11 -0
  278. sage/groups/matrix_gps/group_element.pyx +431 -0
  279. sage/groups/matrix_gps/linear.py +440 -0
  280. sage/groups/matrix_gps/matrix_group.py +617 -0
  281. sage/groups/matrix_gps/named_group.py +296 -0
  282. sage/groups/matrix_gps/orthogonal.py +544 -0
  283. sage/groups/matrix_gps/symplectic.py +251 -0
  284. sage/groups/matrix_gps/unitary.py +436 -0
  285. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  286. sage/groups/misc_gps/argument_groups.py +1905 -0
  287. sage/groups/misc_gps/imaginary_groups.py +479 -0
  288. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  289. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-aarch64-linux-musl.so +0 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  293. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-aarch64-linux-musl.so +0 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  296. sage/homology/algebraic_topological_model.py +595 -0
  297. sage/homology/all.py +2 -0
  298. sage/homology/all__sagemath_modules.py +8 -0
  299. sage/homology/chain_complex.py +2148 -0
  300. sage/homology/chain_complex_homspace.py +165 -0
  301. sage/homology/chain_complex_morphism.py +629 -0
  302. sage/homology/chain_homotopy.py +604 -0
  303. sage/homology/chains.py +653 -0
  304. sage/homology/free_resolution.py +923 -0
  305. sage/homology/graded_resolution.py +567 -0
  306. sage/homology/hochschild_complex.py +756 -0
  307. sage/homology/homology_group.py +188 -0
  308. sage/homology/homology_morphism.py +422 -0
  309. sage/homology/homology_vector_space_with_basis.py +1454 -0
  310. sage/homology/koszul_complex.py +169 -0
  311. sage/homology/matrix_utils.py +205 -0
  312. sage/libs/all__sagemath_modules.py +1 -0
  313. sage/libs/gsl/__init__.py +1 -0
  314. sage/libs/gsl/airy.pxd +56 -0
  315. sage/libs/gsl/all.pxd +66 -0
  316. sage/libs/gsl/array.cpython-314-aarch64-linux-musl.so +0 -0
  317. sage/libs/gsl/array.pxd +5 -0
  318. sage/libs/gsl/array.pyx +102 -0
  319. sage/libs/gsl/bessel.pxd +208 -0
  320. sage/libs/gsl/blas.pxd +116 -0
  321. sage/libs/gsl/blas_types.pxd +34 -0
  322. sage/libs/gsl/block.pxd +52 -0
  323. sage/libs/gsl/chebyshev.pxd +37 -0
  324. sage/libs/gsl/clausen.pxd +12 -0
  325. sage/libs/gsl/combination.pxd +47 -0
  326. sage/libs/gsl/complex.pxd +151 -0
  327. sage/libs/gsl/coulomb.pxd +30 -0
  328. sage/libs/gsl/coupling.pxd +21 -0
  329. sage/libs/gsl/dawson.pxd +12 -0
  330. sage/libs/gsl/debye.pxd +24 -0
  331. sage/libs/gsl/dilog.pxd +14 -0
  332. sage/libs/gsl/eigen.pxd +46 -0
  333. sage/libs/gsl/elementary.pxd +12 -0
  334. sage/libs/gsl/ellint.pxd +48 -0
  335. sage/libs/gsl/elljac.pxd +8 -0
  336. sage/libs/gsl/erf.pxd +32 -0
  337. sage/libs/gsl/errno.pxd +26 -0
  338. sage/libs/gsl/exp.pxd +44 -0
  339. sage/libs/gsl/expint.pxd +44 -0
  340. sage/libs/gsl/fermi_dirac.pxd +44 -0
  341. sage/libs/gsl/fft.pxd +121 -0
  342. sage/libs/gsl/fit.pxd +50 -0
  343. sage/libs/gsl/gamma.pxd +94 -0
  344. sage/libs/gsl/gegenbauer.pxd +26 -0
  345. sage/libs/gsl/histogram.pxd +176 -0
  346. sage/libs/gsl/hyperg.pxd +52 -0
  347. sage/libs/gsl/integration.pxd +69 -0
  348. sage/libs/gsl/interp.pxd +109 -0
  349. sage/libs/gsl/laguerre.pxd +24 -0
  350. sage/libs/gsl/lambert.pxd +16 -0
  351. sage/libs/gsl/legendre.pxd +90 -0
  352. sage/libs/gsl/linalg.pxd +185 -0
  353. sage/libs/gsl/log.pxd +26 -0
  354. sage/libs/gsl/math.pxd +43 -0
  355. sage/libs/gsl/matrix.pxd +143 -0
  356. sage/libs/gsl/matrix_complex.pxd +130 -0
  357. sage/libs/gsl/min.pxd +67 -0
  358. sage/libs/gsl/monte.pxd +56 -0
  359. sage/libs/gsl/ntuple.pxd +32 -0
  360. sage/libs/gsl/odeiv.pxd +70 -0
  361. sage/libs/gsl/permutation.pxd +78 -0
  362. sage/libs/gsl/poly.pxd +40 -0
  363. sage/libs/gsl/pow_int.pxd +12 -0
  364. sage/libs/gsl/psi.pxd +28 -0
  365. sage/libs/gsl/qrng.pxd +29 -0
  366. sage/libs/gsl/random.pxd +257 -0
  367. sage/libs/gsl/rng.pxd +100 -0
  368. sage/libs/gsl/roots.pxd +72 -0
  369. sage/libs/gsl/sort.pxd +36 -0
  370. sage/libs/gsl/statistics.pxd +59 -0
  371. sage/libs/gsl/sum.pxd +55 -0
  372. sage/libs/gsl/synchrotron.pxd +16 -0
  373. sage/libs/gsl/transport.pxd +24 -0
  374. sage/libs/gsl/trig.pxd +58 -0
  375. sage/libs/gsl/types.pxd +137 -0
  376. sage/libs/gsl/vector.pxd +101 -0
  377. sage/libs/gsl/vector_complex.pxd +83 -0
  378. sage/libs/gsl/wavelet.pxd +49 -0
  379. sage/libs/gsl/zeta.pxd +28 -0
  380. sage/libs/mpc/__init__.pxd +114 -0
  381. sage/libs/mpc/types.pxd +28 -0
  382. sage/libs/mpfr/__init__.pxd +299 -0
  383. sage/libs/mpfr/types.pxd +26 -0
  384. sage/libs/mpmath/__init__.py +1 -0
  385. sage/libs/mpmath/all.py +27 -0
  386. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  387. sage/libs/mpmath/utils.cpython-314-aarch64-linux-musl.so +0 -0
  388. sage/libs/mpmath/utils.pxd +4 -0
  389. sage/libs/mpmath/utils.pyx +319 -0
  390. sage/matrix/action.cpython-314-aarch64-linux-musl.so +0 -0
  391. sage/matrix/action.pxd +26 -0
  392. sage/matrix/action.pyx +596 -0
  393. sage/matrix/all.py +9 -0
  394. sage/matrix/args.cpython-314-aarch64-linux-musl.so +0 -0
  395. sage/matrix/args.pxd +144 -0
  396. sage/matrix/args.pyx +1668 -0
  397. sage/matrix/benchmark.py +1258 -0
  398. sage/matrix/berlekamp_massey.py +95 -0
  399. sage/matrix/compute_J_ideal.py +926 -0
  400. sage/matrix/constructor.cpython-314-aarch64-linux-musl.so +0 -0
  401. sage/matrix/constructor.pyx +750 -0
  402. sage/matrix/docs.py +430 -0
  403. sage/matrix/echelon_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  404. sage/matrix/echelon_matrix.pyx +155 -0
  405. sage/matrix/matrix.pxd +2 -0
  406. sage/matrix/matrix0.cpython-314-aarch64-linux-musl.so +0 -0
  407. sage/matrix/matrix0.pxd +68 -0
  408. sage/matrix/matrix0.pyx +6324 -0
  409. sage/matrix/matrix1.cpython-314-aarch64-linux-musl.so +0 -0
  410. sage/matrix/matrix1.pxd +8 -0
  411. sage/matrix/matrix1.pyx +2851 -0
  412. sage/matrix/matrix2.cpython-314-aarch64-linux-musl.so +0 -0
  413. sage/matrix/matrix2.pxd +25 -0
  414. sage/matrix/matrix2.pyx +20181 -0
  415. sage/matrix/matrix_cdv.cpython-314-aarch64-linux-musl.so +0 -0
  416. sage/matrix/matrix_cdv.pxd +4 -0
  417. sage/matrix/matrix_cdv.pyx +93 -0
  418. sage/matrix/matrix_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  419. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  420. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  421. sage/matrix/matrix_dense.cpython-314-aarch64-linux-musl.so +0 -0
  422. sage/matrix/matrix_dense.pxd +5 -0
  423. sage/matrix/matrix_dense.pyx +343 -0
  424. sage/matrix/matrix_domain_dense.pxd +5 -0
  425. sage/matrix/matrix_domain_sparse.pxd +5 -0
  426. sage/matrix/matrix_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  427. sage/matrix/matrix_double_dense.pxd +7 -0
  428. sage/matrix/matrix_double_dense.pyx +3906 -0
  429. sage/matrix/matrix_double_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  430. sage/matrix/matrix_double_sparse.pxd +6 -0
  431. sage/matrix/matrix_double_sparse.pyx +248 -0
  432. sage/matrix/matrix_generic_dense.cpython-314-aarch64-linux-musl.so +0 -0
  433. sage/matrix/matrix_generic_dense.pxd +7 -0
  434. sage/matrix/matrix_generic_dense.pyx +354 -0
  435. sage/matrix/matrix_generic_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  436. sage/matrix/matrix_generic_sparse.pxd +7 -0
  437. sage/matrix/matrix_generic_sparse.pyx +461 -0
  438. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  441. sage/matrix/matrix_misc.py +313 -0
  442. sage/matrix/matrix_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  443. sage/matrix/matrix_numpy_dense.pxd +14 -0
  444. sage/matrix/matrix_numpy_dense.pyx +450 -0
  445. sage/matrix/matrix_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  446. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  447. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  448. sage/matrix/matrix_polynomial_dense.cpython-314-aarch64-linux-musl.so +0 -0
  449. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  450. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  451. sage/matrix/matrix_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  452. sage/matrix/matrix_real_double_dense.pxd +7 -0
  453. sage/matrix/matrix_real_double_dense.pyx +122 -0
  454. sage/matrix/matrix_space.py +2848 -0
  455. sage/matrix/matrix_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  456. sage/matrix/matrix_sparse.pxd +5 -0
  457. sage/matrix/matrix_sparse.pyx +1222 -0
  458. sage/matrix/matrix_window.cpython-314-aarch64-linux-musl.so +0 -0
  459. sage/matrix/matrix_window.pxd +37 -0
  460. sage/matrix/matrix_window.pyx +242 -0
  461. sage/matrix/misc_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  462. sage/matrix/misc_mpfr.pyx +80 -0
  463. sage/matrix/operation_table.py +1182 -0
  464. sage/matrix/special.py +3666 -0
  465. sage/matrix/strassen.cpython-314-aarch64-linux-musl.so +0 -0
  466. sage/matrix/strassen.pyx +851 -0
  467. sage/matrix/symplectic_basis.py +541 -0
  468. sage/matrix/template.pxd +6 -0
  469. sage/matrix/tests.py +71 -0
  470. sage/matroids/advanced.py +77 -0
  471. sage/matroids/all.py +13 -0
  472. sage/matroids/basis_exchange_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  473. sage/matroids/basis_exchange_matroid.pxd +96 -0
  474. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  475. sage/matroids/basis_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  476. sage/matroids/basis_matroid.pxd +45 -0
  477. sage/matroids/basis_matroid.pyx +1217 -0
  478. sage/matroids/catalog.py +44 -0
  479. sage/matroids/chow_ring.py +473 -0
  480. sage/matroids/chow_ring_ideal.py +849 -0
  481. sage/matroids/circuit_closures_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  482. sage/matroids/circuit_closures_matroid.pxd +16 -0
  483. sage/matroids/circuit_closures_matroid.pyx +559 -0
  484. sage/matroids/circuits_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  485. sage/matroids/circuits_matroid.pxd +38 -0
  486. sage/matroids/circuits_matroid.pyx +947 -0
  487. sage/matroids/constructor.py +1086 -0
  488. sage/matroids/database_collections.py +365 -0
  489. sage/matroids/database_matroids.py +5338 -0
  490. sage/matroids/dual_matroid.py +583 -0
  491. sage/matroids/extension.cpython-314-aarch64-linux-musl.so +0 -0
  492. sage/matroids/extension.pxd +34 -0
  493. sage/matroids/extension.pyx +519 -0
  494. sage/matroids/flats_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  495. sage/matroids/flats_matroid.pxd +28 -0
  496. sage/matroids/flats_matroid.pyx +715 -0
  497. sage/matroids/gammoid.py +600 -0
  498. sage/matroids/graphic_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  499. sage/matroids/graphic_matroid.pxd +39 -0
  500. sage/matroids/graphic_matroid.pyx +2024 -0
  501. sage/matroids/lean_matrix.cpython-314-aarch64-linux-musl.so +0 -0
  502. sage/matroids/lean_matrix.pxd +126 -0
  503. sage/matroids/lean_matrix.pyx +3667 -0
  504. sage/matroids/linear_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  505. sage/matroids/linear_matroid.pxd +180 -0
  506. sage/matroids/linear_matroid.pyx +6649 -0
  507. sage/matroids/matroid.cpython-314-aarch64-linux-musl.so +0 -0
  508. sage/matroids/matroid.pxd +243 -0
  509. sage/matroids/matroid.pyx +8759 -0
  510. sage/matroids/matroids_catalog.py +190 -0
  511. sage/matroids/matroids_plot_helpers.py +890 -0
  512. sage/matroids/minor_matroid.py +480 -0
  513. sage/matroids/minorfix.h +9 -0
  514. sage/matroids/named_matroids.py +5 -0
  515. sage/matroids/rank_matroid.py +268 -0
  516. sage/matroids/set_system.cpython-314-aarch64-linux-musl.so +0 -0
  517. sage/matroids/set_system.pxd +38 -0
  518. sage/matroids/set_system.pyx +800 -0
  519. sage/matroids/transversal_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  520. sage/matroids/transversal_matroid.pxd +14 -0
  521. sage/matroids/transversal_matroid.pyx +893 -0
  522. sage/matroids/union_matroid.cpython-314-aarch64-linux-musl.so +0 -0
  523. sage/matroids/union_matroid.pxd +20 -0
  524. sage/matroids/union_matroid.pyx +331 -0
  525. sage/matroids/unpickling.cpython-314-aarch64-linux-musl.so +0 -0
  526. sage/matroids/unpickling.pyx +843 -0
  527. sage/matroids/utilities.py +809 -0
  528. sage/misc/all__sagemath_modules.py +20 -0
  529. sage/misc/c3.cpython-314-aarch64-linux-musl.so +0 -0
  530. sage/misc/c3.pyx +238 -0
  531. sage/misc/compat.py +87 -0
  532. sage/misc/element_with_label.py +173 -0
  533. sage/misc/func_persist.py +79 -0
  534. sage/misc/pickle_old.cpython-314-aarch64-linux-musl.so +0 -0
  535. sage/misc/pickle_old.pyx +19 -0
  536. sage/misc/proof.py +7 -0
  537. sage/misc/replace_dot_all.py +472 -0
  538. sage/misc/sagedoc_conf.py +168 -0
  539. sage/misc/sphinxify.py +167 -0
  540. sage/misc/test_class_pickling.py +85 -0
  541. sage/modules/all.py +42 -0
  542. sage/modules/complex_double_vector.py +25 -0
  543. sage/modules/diamond_cutting.py +380 -0
  544. sage/modules/fg_pid/all.py +1 -0
  545. sage/modules/fg_pid/fgp_element.py +456 -0
  546. sage/modules/fg_pid/fgp_module.py +2091 -0
  547. sage/modules/fg_pid/fgp_morphism.py +550 -0
  548. sage/modules/filtered_vector_space.py +1271 -0
  549. sage/modules/finite_submodule_iter.cpython-314-aarch64-linux-musl.so +0 -0
  550. sage/modules/finite_submodule_iter.pxd +27 -0
  551. sage/modules/finite_submodule_iter.pyx +452 -0
  552. sage/modules/fp_graded/all.py +1 -0
  553. sage/modules/fp_graded/element.py +346 -0
  554. sage/modules/fp_graded/free_element.py +298 -0
  555. sage/modules/fp_graded/free_homspace.py +53 -0
  556. sage/modules/fp_graded/free_module.py +1060 -0
  557. sage/modules/fp_graded/free_morphism.py +217 -0
  558. sage/modules/fp_graded/homspace.py +563 -0
  559. sage/modules/fp_graded/module.py +1340 -0
  560. sage/modules/fp_graded/morphism.py +1990 -0
  561. sage/modules/fp_graded/steenrod/all.py +1 -0
  562. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  563. sage/modules/fp_graded/steenrod/module.py +477 -0
  564. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  565. sage/modules/fp_graded/steenrod/profile.py +241 -0
  566. sage/modules/free_module.py +8447 -0
  567. sage/modules/free_module_element.cpython-314-aarch64-linux-musl.so +0 -0
  568. sage/modules/free_module_element.pxd +22 -0
  569. sage/modules/free_module_element.pyx +5445 -0
  570. sage/modules/free_module_homspace.py +369 -0
  571. sage/modules/free_module_integer.py +896 -0
  572. sage/modules/free_module_morphism.py +823 -0
  573. sage/modules/free_module_pseudohomspace.py +352 -0
  574. sage/modules/free_module_pseudomorphism.py +578 -0
  575. sage/modules/free_quadratic_module.py +1706 -0
  576. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  577. sage/modules/matrix_morphism.py +1745 -0
  578. sage/modules/misc.py +103 -0
  579. sage/modules/module_functors.py +192 -0
  580. sage/modules/multi_filtered_vector_space.py +719 -0
  581. sage/modules/ore_module.py +2208 -0
  582. sage/modules/ore_module_element.py +178 -0
  583. sage/modules/ore_module_homspace.py +147 -0
  584. sage/modules/ore_module_morphism.py +968 -0
  585. sage/modules/quotient_module.py +699 -0
  586. sage/modules/real_double_vector.py +22 -0
  587. sage/modules/submodule.py +255 -0
  588. sage/modules/tensor_operations.py +567 -0
  589. sage/modules/torsion_quadratic_module.py +1352 -0
  590. sage/modules/tutorial_free_modules.py +248 -0
  591. sage/modules/vector_complex_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  592. sage/modules/vector_complex_double_dense.pxd +6 -0
  593. sage/modules/vector_complex_double_dense.pyx +117 -0
  594. sage/modules/vector_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  595. sage/modules/vector_double_dense.pxd +6 -0
  596. sage/modules/vector_double_dense.pyx +604 -0
  597. sage/modules/vector_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  598. sage/modules/vector_integer_dense.pxd +15 -0
  599. sage/modules/vector_integer_dense.pyx +361 -0
  600. sage/modules/vector_integer_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  601. sage/modules/vector_integer_sparse.pxd +29 -0
  602. sage/modules/vector_integer_sparse.pyx +406 -0
  603. sage/modules/vector_modn_dense.cpython-314-aarch64-linux-musl.so +0 -0
  604. sage/modules/vector_modn_dense.pxd +12 -0
  605. sage/modules/vector_modn_dense.pyx +394 -0
  606. sage/modules/vector_modn_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  607. sage/modules/vector_modn_sparse.pxd +21 -0
  608. sage/modules/vector_modn_sparse.pyx +298 -0
  609. sage/modules/vector_numpy_dense.cpython-314-aarch64-linux-musl.so +0 -0
  610. sage/modules/vector_numpy_dense.pxd +15 -0
  611. sage/modules/vector_numpy_dense.pyx +304 -0
  612. sage/modules/vector_numpy_integer_dense.cpython-314-aarch64-linux-musl.so +0 -0
  613. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  614. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  615. sage/modules/vector_rational_dense.cpython-314-aarch64-linux-musl.so +0 -0
  616. sage/modules/vector_rational_dense.pxd +15 -0
  617. sage/modules/vector_rational_dense.pyx +387 -0
  618. sage/modules/vector_rational_sparse.cpython-314-aarch64-linux-musl.so +0 -0
  619. sage/modules/vector_rational_sparse.pxd +30 -0
  620. sage/modules/vector_rational_sparse.pyx +413 -0
  621. sage/modules/vector_real_double_dense.cpython-314-aarch64-linux-musl.so +0 -0
  622. sage/modules/vector_real_double_dense.pxd +6 -0
  623. sage/modules/vector_real_double_dense.pyx +126 -0
  624. sage/modules/vector_space_homspace.py +430 -0
  625. sage/modules/vector_space_morphism.py +989 -0
  626. sage/modules/with_basis/all.py +15 -0
  627. sage/modules/with_basis/cell_module.py +494 -0
  628. sage/modules/with_basis/indexed_element.cpython-314-aarch64-linux-musl.so +0 -0
  629. sage/modules/with_basis/indexed_element.pxd +13 -0
  630. sage/modules/with_basis/indexed_element.pyx +1058 -0
  631. sage/modules/with_basis/invariant.py +1075 -0
  632. sage/modules/with_basis/morphism.py +1636 -0
  633. sage/modules/with_basis/representation.py +2939 -0
  634. sage/modules/with_basis/subquotient.py +685 -0
  635. sage/numerical/all__sagemath_modules.py +6 -0
  636. sage/numerical/gauss_legendre.cpython-314-aarch64-linux-musl.so +0 -0
  637. sage/numerical/gauss_legendre.pyx +381 -0
  638. sage/numerical/optimize.py +910 -0
  639. sage/probability/all.py +10 -0
  640. sage/probability/probability_distribution.cpython-314-aarch64-linux-musl.so +0 -0
  641. sage/probability/probability_distribution.pyx +1242 -0
  642. sage/probability/random_variable.py +411 -0
  643. sage/quadratic_forms/all.py +4 -0
  644. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  645. sage/quadratic_forms/binary_qf.py +2042 -0
  646. sage/quadratic_forms/bqf_class_group.py +748 -0
  647. sage/quadratic_forms/constructions.py +93 -0
  648. sage/quadratic_forms/count_local_2.cpython-314-aarch64-linux-musl.so +0 -0
  649. sage/quadratic_forms/count_local_2.pyx +365 -0
  650. sage/quadratic_forms/extras.py +195 -0
  651. sage/quadratic_forms/quadratic_form.py +1753 -0
  652. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  653. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  654. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-aarch64-linux-musl.so +0 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  656. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  657. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  658. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  659. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  660. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  661. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  662. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  663. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  664. sage/quadratic_forms/random_quadraticform.py +209 -0
  665. sage/quadratic_forms/ternary.cpython-314-aarch64-linux-musl.so +0 -0
  666. sage/quadratic_forms/ternary.pyx +1154 -0
  667. sage/quadratic_forms/ternary_qf.py +2027 -0
  668. sage/rings/all__sagemath_modules.py +28 -0
  669. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  670. sage/rings/asymptotic/misc.py +1252 -0
  671. sage/rings/cc.py +4 -0
  672. sage/rings/cfinite_sequence.py +1306 -0
  673. sage/rings/complex_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  674. sage/rings/complex_conversion.pxd +8 -0
  675. sage/rings/complex_conversion.pyx +23 -0
  676. sage/rings/complex_double.cpython-314-aarch64-linux-musl.so +0 -0
  677. sage/rings/complex_double.pxd +21 -0
  678. sage/rings/complex_double.pyx +2654 -0
  679. sage/rings/complex_mpc.cpython-314-aarch64-linux-musl.so +0 -0
  680. sage/rings/complex_mpc.pxd +21 -0
  681. sage/rings/complex_mpc.pyx +2576 -0
  682. sage/rings/complex_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  683. sage/rings/complex_mpfr.pxd +18 -0
  684. sage/rings/complex_mpfr.pyx +3602 -0
  685. sage/rings/derivation.py +2334 -0
  686. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  687. sage/rings/finite_rings/maps_finite_field.py +191 -0
  688. sage/rings/function_field/all__sagemath_modules.py +8 -0
  689. sage/rings/function_field/derivations.py +102 -0
  690. sage/rings/function_field/derivations_rational.py +132 -0
  691. sage/rings/function_field/differential.py +853 -0
  692. sage/rings/function_field/divisor.py +1107 -0
  693. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  694. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  695. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  696. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  697. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  698. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  699. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  700. sage/rings/function_field/hermite_form_polynomial.cpython-314-aarch64-linux-musl.so +0 -0
  701. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  702. sage/rings/function_field/khuri_makdisi.cpython-314-aarch64-linux-musl.so +0 -0
  703. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  704. sage/rings/invariants/all.py +4 -0
  705. sage/rings/invariants/invariant_theory.py +4597 -0
  706. sage/rings/invariants/reconstruction.py +395 -0
  707. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  708. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  709. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-aarch64-linux-musl.so +0 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  712. sage/rings/polynomial/ore_function_element.py +952 -0
  713. sage/rings/polynomial/ore_function_field.py +1028 -0
  714. sage/rings/polynomial/ore_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  715. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  716. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  717. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  718. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-aarch64-linux-musl.so +0 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  720. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  721. sage/rings/polynomial/skew_polynomial_element.cpython-314-aarch64-linux-musl.so +0 -0
  722. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  723. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  724. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-aarch64-linux-musl.so +0 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  727. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-aarch64-linux-musl.so +0 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  730. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  731. sage/rings/real_double_element_gsl.cpython-314-aarch64-linux-musl.so +0 -0
  732. sage/rings/real_double_element_gsl.pxd +8 -0
  733. sage/rings/real_double_element_gsl.pyx +794 -0
  734. sage/rings/real_field.py +58 -0
  735. sage/rings/real_mpfr.cpython-314-aarch64-linux-musl.so +0 -0
  736. sage/rings/real_mpfr.pxd +29 -0
  737. sage/rings/real_mpfr.pyx +6122 -0
  738. sage/rings/ring_extension.cpython-314-aarch64-linux-musl.so +0 -0
  739. sage/rings/ring_extension.pxd +42 -0
  740. sage/rings/ring_extension.pyx +2779 -0
  741. sage/rings/ring_extension_conversion.cpython-314-aarch64-linux-musl.so +0 -0
  742. sage/rings/ring_extension_conversion.pxd +16 -0
  743. sage/rings/ring_extension_conversion.pyx +462 -0
  744. sage/rings/ring_extension_element.cpython-314-aarch64-linux-musl.so +0 -0
  745. sage/rings/ring_extension_element.pxd +21 -0
  746. sage/rings/ring_extension_element.pyx +1635 -0
  747. sage/rings/ring_extension_homset.py +64 -0
  748. sage/rings/ring_extension_morphism.cpython-314-aarch64-linux-musl.so +0 -0
  749. sage/rings/ring_extension_morphism.pxd +35 -0
  750. sage/rings/ring_extension_morphism.pyx +920 -0
  751. sage/schemes/all__sagemath_modules.py +1 -0
  752. sage/schemes/projective/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/coherent_sheaf.py +300 -0
  754. sage/schemes/projective/cohomology.py +510 -0
  755. sage/stats/all.py +15 -0
  756. sage/stats/basic_stats.py +489 -0
  757. sage/stats/distributions/all.py +7 -0
  758. sage/stats/distributions/catalog.py +34 -0
  759. sage/stats/distributions/dgs.h +50 -0
  760. sage/stats/distributions/dgs.pxd +111 -0
  761. sage/stats/distributions/dgs_bern.h +400 -0
  762. sage/stats/distributions/dgs_gauss.h +614 -0
  763. sage/stats/distributions/dgs_misc.h +104 -0
  764. sage/stats/distributions/discrete_gaussian_integer.cpython-314-aarch64-linux-musl.so +0 -0
  765. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  767. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  768. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  769. sage/stats/hmm/all.py +15 -0
  770. sage/stats/hmm/chmm.cpython-314-aarch64-linux-musl.so +0 -0
  771. sage/stats/hmm/chmm.pyx +1595 -0
  772. sage/stats/hmm/distributions.cpython-314-aarch64-linux-musl.so +0 -0
  773. sage/stats/hmm/distributions.pxd +29 -0
  774. sage/stats/hmm/distributions.pyx +531 -0
  775. sage/stats/hmm/hmm.cpython-314-aarch64-linux-musl.so +0 -0
  776. sage/stats/hmm/hmm.pxd +17 -0
  777. sage/stats/hmm/hmm.pyx +1388 -0
  778. sage/stats/hmm/util.cpython-314-aarch64-linux-musl.so +0 -0
  779. sage/stats/hmm/util.pxd +7 -0
  780. sage/stats/hmm/util.pyx +165 -0
  781. sage/stats/intlist.cpython-314-aarch64-linux-musl.so +0 -0
  782. sage/stats/intlist.pxd +14 -0
  783. sage/stats/intlist.pyx +588 -0
  784. sage/stats/r.py +49 -0
  785. sage/stats/time_series.cpython-314-aarch64-linux-musl.so +0 -0
  786. sage/stats/time_series.pxd +6 -0
  787. sage/stats/time_series.pyx +2546 -0
  788. sage/tensor/all.py +2 -0
  789. sage/tensor/modules/all.py +8 -0
  790. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  791. sage/tensor/modules/comp.py +5598 -0
  792. sage/tensor/modules/ext_pow_free_module.py +824 -0
  793. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  794. sage/tensor/modules/format_utilities.py +333 -0
  795. sage/tensor/modules/free_module_alt_form.py +858 -0
  796. sage/tensor/modules/free_module_automorphism.py +1207 -0
  797. sage/tensor/modules/free_module_basis.py +1074 -0
  798. sage/tensor/modules/free_module_element.py +284 -0
  799. sage/tensor/modules/free_module_homset.py +652 -0
  800. sage/tensor/modules/free_module_linear_group.py +564 -0
  801. sage/tensor/modules/free_module_morphism.py +1581 -0
  802. sage/tensor/modules/free_module_tensor.py +3289 -0
  803. sage/tensor/modules/reflexive_module.py +386 -0
  804. sage/tensor/modules/tensor_free_module.py +780 -0
  805. sage/tensor/modules/tensor_free_submodule.py +538 -0
  806. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  807. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,823 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ """
3
+ Morphisms of free modules
4
+
5
+ AUTHORS:
6
+ - William Stein: initial version
7
+
8
+ - Miguel Marco (2010-06-19): added eigenvalues, eigenvectors and minpoly functions
9
+
10
+
11
+ TESTS::
12
+
13
+ sage: V = ZZ^2; f = V.hom([V.1, -2*V.0])
14
+ sage: loads(dumps(f))
15
+ Free module morphism defined by the matrix
16
+ [ 0 1]
17
+ [-2 0]
18
+ Domain: Ambient free module of rank 2 over the principal ideal domain ...
19
+ Codomain: Ambient free module of rank 2 over the principal ideal domain ...
20
+ sage: loads(dumps(f)) == f
21
+ True
22
+ """
23
+
24
+ ####################################################################################
25
+ # Copyright (C) 2009 William Stein <wstein@gmail.com>
26
+ #
27
+ # Distributed under the terms of the GNU General Public License (GPL)
28
+ #
29
+ # This code is distributed in the hope that it will be useful,
30
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
31
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
32
+ # General Public License for more details.
33
+ #
34
+ # The full text of the GPL is available at:
35
+ #
36
+ # http://www.gnu.org/licenses/
37
+ ####################################################################################
38
+
39
+ # A matrix morphism is a morphism that is defined by multiplication by a
40
+ # matrix. Elements of domain must either have a method "vector()" that
41
+ # returns a vector that the defining matrix can hit from the left, or
42
+ # be coercible into vector space of appropriate dimension.
43
+
44
+ import sage.modules.free_module as free_module
45
+
46
+ from sage.categories.morphism import Morphism
47
+ from sage.modules import free_module_homspace, matrix_morphism
48
+ from sage.structure.richcmp import rich_to_bool, richcmp
49
+ from sage.structure.sequence import Sequence
50
+
51
+
52
+ def is_FreeModuleMorphism(x):
53
+ """
54
+ This function is deprecated.
55
+
56
+ EXAMPLES::
57
+
58
+ sage: V = ZZ^2; f = V.hom([V.1, -2*V.0])
59
+ sage: sage.modules.free_module_morphism.is_FreeModuleMorphism(f)
60
+ doctest:warning...
61
+ DeprecationWarning: is_FreeModuleMorphism is deprecated;
62
+ use isinstance(..., FreeModuleMorphism) or categories instead
63
+ See https://github.com/sagemath/sage/issues/37731 for details.
64
+ True
65
+ sage: sage.modules.free_module_morphism.is_FreeModuleMorphism(0)
66
+ False
67
+ """
68
+ from sage.misc.superseded import deprecation
69
+ deprecation(37731,
70
+ "is_FreeModuleMorphism is deprecated; "
71
+ "use isinstance(..., FreeModuleMorphism) or categories instead")
72
+ return isinstance(x, FreeModuleMorphism)
73
+
74
+
75
+ class FreeModuleMorphism(matrix_morphism.MatrixMorphism):
76
+
77
+ def __init__(self, parent, A, side='left'):
78
+ """
79
+ INPUT:
80
+
81
+ - ``parent`` -- a homspace in a (sub) category of free modules
82
+
83
+ - ``A`` -- matrix
84
+
85
+ - ``side`` -- side of the vectors acted on by the matrix (default: ``'left'``)
86
+
87
+ EXAMPLES::
88
+
89
+ sage: V = ZZ^3; W = span([[1,2,3], [-1,2,8]], ZZ)
90
+ sage: phi = V.hom(matrix(ZZ, 3, [1..9]))
91
+ sage: type(phi)
92
+ <class 'sage.modules.free_module_morphism.FreeModuleMorphism'>
93
+ """
94
+ if not isinstance(parent, free_module_homspace.FreeModuleHomspace):
95
+ raise TypeError("parent (=%s) must be a free module hom space" % parent)
96
+ if isinstance(A, matrix_morphism.MatrixMorphism):
97
+ A = A.matrix()
98
+ A = parent._matrix_space(side)(A)
99
+ matrix_morphism.MatrixMorphism.__init__(self, parent, A, side=side)
100
+
101
+ def pushforward(self, x):
102
+ """
103
+ Compute the image of a sub-module of the domain.
104
+
105
+ EXAMPLES::
106
+
107
+ sage: V = QQ^3; W = span([[1,2,3], [-1,2,5/3]], QQ)
108
+ sage: phi = V.hom(matrix(QQ, 3, [1..9]))
109
+ sage: phi.rank()
110
+ 2
111
+ sage: phi(V) #indirect doctest
112
+ Vector space of degree 3 and dimension 2 over Rational Field
113
+ Basis matrix:
114
+ [ 1 0 -1]
115
+ [ 0 1 2]
116
+
117
+ We compute the image of a submodule of a ZZ-module embedded in
118
+ a rational vector space::
119
+
120
+ sage: V = QQ^3; W = V.span_of_basis([[2,2,3], [-1,2,5/3]], ZZ)
121
+ sage: phi = W.hom([W.0, W.0 - W.1]); phi
122
+ Free module morphism defined by the matrix
123
+ [ 1 0]
124
+ [ 1 -1]...
125
+ sage: phi(span([2*W.1], ZZ))
126
+ Free module of degree 3 and rank 1 over Integer Ring
127
+ Echelon basis matrix:
128
+ [ 6 0 8/3]
129
+ sage: phi(2*W.1)
130
+ (6, 0, 8/3)
131
+ """
132
+ if isinstance(x, free_module.FreeModule_generic):
133
+ V = self.domain().submodule(x)
134
+ return self.restrict_domain(V).image()
135
+ raise TypeError("`pushforward` is only defined for submodules")
136
+
137
+ def _repr_(self):
138
+ r"""
139
+ Return string representation of this morphism of free modules.
140
+
141
+ EXAMPLES::
142
+
143
+ sage: V = ZZ^3; W = span([[1,2,3], [-1,2,8]], ZZ)
144
+ sage: phi = V.hom(matrix(ZZ, 3, [1..9]))
145
+ sage: phi._repr_()
146
+ 'Free module morphism defined by the matrix\n[1 2 3]\n[4 5 6]\n[7 8 9]\nDomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring\nCodomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring'
147
+
148
+ sage: V = ZZ^6
149
+ sage: W = ZZ^4
150
+ sage: m = matrix(QQ, [[1, 0, 0 ,0], [0]*4, [0]*4, [0]*4, [0]*4, [0]*4])
151
+ sage: phi = V.hom(m, W)
152
+ sage: rho = phi.restrict_codomain(W.span([W.0]))
153
+ sage: rho
154
+ Free module morphism defined by the matrix
155
+ [1]
156
+ [0]
157
+ [0]
158
+ [0]
159
+ [0]
160
+ [0]
161
+ Domain: Ambient free module of rank 6 over the principal ideal domain Integer Ring
162
+ Codomain: Free module of degree 4 and rank 1 over Integer Ring
163
+ Echelon basis matrix:
164
+ [1 0 0 0]
165
+
166
+ sage: V = QQ^40
167
+ sage: m = matrix(QQ, 40, 40, 1600)
168
+ sage: phi = V.hom(m, V)
169
+ sage: phi
170
+ Vector space morphism represented by the matrix:
171
+ 40 x 40 dense matrix over Rational Field
172
+ Domain: Vector space of dimension 40 over Rational Field
173
+ Codomain: Vector space of dimension 40 over Rational Field
174
+
175
+ The representation displays which side of the vectors the matrix is acting::
176
+
177
+ sage: V = ZZ^3
178
+ sage: h = V.hom([V.1, V.2, V.0]); h
179
+ Free module morphism defined by the matrix
180
+ [0 1 0]
181
+ [0 0 1]
182
+ [1 0 0]
183
+ Domain: Ambient free module of rank 3 over the principal ideal domain Integer Ring
184
+ Codomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring
185
+ sage: h2 = V.hom([V.1, V.2, V.0], side='right'); h2
186
+ Free module morphism defined as left-multiplication by the matrix
187
+ [0 0 1]
188
+ [1 0 0]
189
+ [0 1 0]
190
+ Domain: Ambient free module of rank 3 over the principal ideal domain Integer Ring
191
+ Codomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring
192
+ """
193
+ r = "Free module morphism defined {}by the matrix\n{!r}\nDomain: {}\nCodomain: {}"
194
+ act = ""
195
+ if self.side() == "right":
196
+ act = "as left-multiplication "
197
+ return r.format(act, self.matrix(), self.domain(), self.codomain())
198
+
199
+ def change_ring(self, R):
200
+ """
201
+ Change the ring over which this morphism is defined.
202
+
203
+ This changes the ring of the domain, codomain, and underlying matrix.
204
+
205
+ EXAMPLES::
206
+
207
+ sage: V0 = span([[0,0,1],[0,2,0]], ZZ); V1 = span([[1/2,0],[0,2]], ZZ)
208
+ sage: W = span([[1,0],[0,6]], ZZ)
209
+ sage: h = V0.hom([-3*V1.0 - 3*V1.1, -3*V1.0 - 3*V1.1])
210
+ sage: h.base_ring()
211
+ Integer Ring
212
+ sage: h
213
+ Free module morphism defined by the matrix
214
+ [-3 -3]
215
+ [-3 -3]...
216
+ sage: h.change_ring(QQ).base_ring()
217
+ Rational Field
218
+ sage: f = h.change_ring(QQ); f
219
+ Vector space morphism represented by the matrix:
220
+ [-3 -3]
221
+ [-3 -3]
222
+ Domain: Vector space of degree 3 and dimension 2 over Rational Field
223
+ Basis matrix:
224
+ [0 1 0]
225
+ [0 0 1]
226
+ Codomain: Vector space of degree 2 and dimension 2 over Rational Field
227
+ Basis matrix:
228
+ [1 0]
229
+ [0 1]
230
+ sage: f = h.change_ring(GF(7)); f
231
+ Vector space morphism represented by the matrix:
232
+ [4 4]
233
+ [4 4]
234
+ Domain: Vector space of degree 3 and dimension 2 over Finite Field of size 7
235
+ Basis matrix:
236
+ [0 1 0]
237
+ [0 0 1]
238
+ Codomain: Vector space of degree 2 and dimension 2 over Finite Field of size 7
239
+ Basis matrix:
240
+ [1 0]
241
+ [0 1]
242
+ """
243
+ D = self.domain().change_ring(R)
244
+ C = self.codomain().change_ring(R)
245
+ A = self.matrix().change_ring(R)
246
+ return D.hom(A, C, side=self.side())
247
+
248
+ def inverse_image(self, V):
249
+ """
250
+ Given a submodule V of the codomain of self, return the
251
+ inverse image of V under self, i.e., the biggest submodule of
252
+ the domain of ``self`` that maps into V.
253
+
254
+ EXAMPLES:
255
+
256
+ We test computing inverse images over a field::
257
+
258
+ sage: V = QQ^3; W = span([[1,2,3], [-1,2,5/3]], QQ)
259
+ sage: phi = V.hom(matrix(QQ, 3, [1..9]))
260
+ sage: phi.rank()
261
+ 2
262
+ sage: I = phi.inverse_image(W); I
263
+ Vector space of degree 3 and dimension 2 over Rational Field
264
+ Basis matrix:
265
+ [ 1 0 0]
266
+ [ 0 1 -1/2]
267
+ sage: phi(I.0) in W
268
+ True
269
+ sage: phi(I.1) in W
270
+ True
271
+ sage: W = phi.image()
272
+ sage: phi.inverse_image(W) == V
273
+ True
274
+
275
+ We test computing inverse images between two spaces embedded in different
276
+ ambient spaces.::
277
+
278
+ sage: V0 = span([[0,0,1],[0,2,0]],ZZ); V1 = span([[1/2,0],[0,2]],ZZ)
279
+ sage: W = span([[1,0],[0,6]],ZZ)
280
+ sage: h = V0.hom([-3*V1.0 - 3*V1.1, -3*V1.0 - 3*V1.1])
281
+ sage: h.inverse_image(W)
282
+ Free module of degree 3 and rank 2 over Integer Ring
283
+ Echelon basis matrix:
284
+ [0 2 1]
285
+ [0 0 2]
286
+ sage: h(h.inverse_image(W)).is_submodule(W)
287
+ True
288
+ sage: h(h.inverse_image(W)).index_in(W)
289
+ +Infinity
290
+ sage: h(h.inverse_image(W))
291
+ Free module of degree 2 and rank 1 over Integer Ring
292
+ Echelon basis matrix:
293
+ [ 3 12]
294
+
295
+
296
+ We test computing inverse images over the integers::
297
+
298
+ sage: V = QQ^3; W = V.span_of_basis([[2,2,3],[-1,2,5/3]], ZZ)
299
+ sage: phi = W.hom([W.0, W.0 - W.1])
300
+ sage: Z = W.span([2*W.1]); Z
301
+ Free module of degree 3 and rank 1 over Integer Ring
302
+ Echelon basis matrix:
303
+ [ 2 -4 -10/3]
304
+ sage: Y = phi.inverse_image(Z); Y
305
+ Free module of degree 3 and rank 1 over Integer Ring
306
+ Echelon basis matrix:
307
+ [ 6 0 8/3]
308
+ sage: phi(Y) == Z
309
+ True
310
+
311
+ We test that :issue:`24590` is resolved::
312
+
313
+ sage: A = FreeQuadraticModule(ZZ, 1, matrix([2]))
314
+ sage: f = A.Hom(A).an_element()
315
+ sage: f.inverse_image(A)
316
+ Free module of degree 1 and rank 1 over Integer Ring
317
+ Echelon basis matrix:
318
+ [1]
319
+
320
+ We test that it respects the ``side``::
321
+
322
+ sage: V = ZZ^2
323
+ sage: m = matrix(2, [1, 1, 0, 1])
324
+ sage: h = V.hom(m, side='right')
325
+ sage: h
326
+ Free module morphism defined as left-multiplication by the matrix
327
+ [1 1]
328
+ [0 1]...
329
+ sage: SV = V.span([V.0])
330
+ sage: h.inverse_image(SV)
331
+ Free module of degree 2 and rank 1 over Integer Ring
332
+ Echelon basis matrix:
333
+ [1 0]
334
+ sage: V.hom(m).inverse_image(SV)
335
+ Free module of degree 2 and rank 1 over Integer Ring
336
+ Echelon basis matrix:
337
+ [ 1 -1]
338
+ """
339
+ if self.rank() == 0:
340
+ # Special case -- if this is the 0 map, then the only possibility
341
+ # for the inverse image is that it is the whole domain.
342
+ return self.domain()
343
+
344
+ R = self.base_ring()
345
+ if self.side() == "left":
346
+ A = self.matrix()
347
+ else:
348
+ A = self.matrix().transpose()
349
+
350
+ # Replace the module V that we are going to pullback by a
351
+ # submodule that is contained in the image of self, since our
352
+ # plan is to lift all generators of V.
353
+ V = self.image().intersection(V)
354
+ # Write V in terms of the basis for the codomain.
355
+ V = self.codomain().coordinate_module(V)
356
+ B = V.basis_matrix()
357
+
358
+ # Compute the kernel, which is contained in the inverse image.
359
+ K = self.kernel()
360
+
361
+ if R.is_field():
362
+ # By solving, find lifts of each of the basis elements of V.
363
+ # Each row of C gives a linear combination of the basis for the domain
364
+ # that maps to one of the basis elements V.
365
+ C = A.solve_left(B)
366
+
367
+ else:
368
+ if not hasattr(A, 'hermite_form'):
369
+ raise NotImplementedError("base ring (%s) must have hermite_form algorithm in order to compute inverse image" % R)
370
+
371
+ # 1. Compute H such that U*A = H = hnf(A) without zero
372
+ # rows. What this "does" is find a basis for the image of
373
+ # A and explicitly represents each element in this basis
374
+ # as the image of some element of the domain (the rows of
375
+ # U give these elements of the domain).
376
+ H, U = A.hermite_form(transformation=True, include_zero_rows=False)
377
+
378
+ # 2. Next we find the unique solution to the equation
379
+ # Y*H = B. This writes each basis element of V in
380
+ # terms of our image basis found in the previous step.
381
+ Y = H.solve_left(B)
382
+
383
+ # 3. Multiply Y by U then takes those same linear combinations
384
+ # from step 2 above and lifts them to coefficients that define
385
+ # linear combinations of the basis for the domain.
386
+ C = Y*U
387
+
388
+ # Finally take the linear combinations of the basis for the
389
+ # domain defined by C. Together with the kernel K, this spans
390
+ # the inverse image of V.
391
+ dom = self.domain()
392
+ if not dom.is_ambient():
393
+ C = C * dom.basis_matrix()
394
+ L = dom.submodule(C.rows())
395
+ return K + L
396
+
397
+ def lift(self, x):
398
+ r"""
399
+ Given an element of the image, return an element of the codomain that maps onto it.
400
+
401
+ Note that ``lift`` and ``preimage_representative`` are
402
+ equivalent names for this method, with the latter suggesting
403
+ that the return value is a coset representative of the domain
404
+ modulo the kernel of the morphism.
405
+
406
+ EXAMPLES::
407
+
408
+ sage: X = QQ**2
409
+ sage: V = X.span([[2, 0], [0, 8]], ZZ)
410
+ sage: W = (QQ**1).span([[1/12]], ZZ)
411
+ sage: f = V.hom([W([1/3]), W([1/2])], W)
412
+ sage: l=f.lift([1/3]); l # random
413
+ (8, -16)
414
+ sage: f(l)
415
+ (1/3)
416
+ sage: f(f.lift([1/2]))
417
+ (1/2)
418
+ sage: f(f.lift([1/6]))
419
+ (1/6)
420
+ sage: f.lift([1/12])
421
+ Traceback (most recent call last):
422
+ ...
423
+ ValueError: element is not in the image
424
+ sage: f.lift([1/24])
425
+ Traceback (most recent call last):
426
+ ...
427
+ TypeError: element [1/24] is not in free module
428
+
429
+ This works for vector spaces, too::
430
+
431
+ sage: V = VectorSpace(GF(3), 2)
432
+ sage: W = VectorSpace(GF(3), 3)
433
+ sage: f = V.hom([W.1, W.1 - W.0])
434
+ sage: f.lift(W.1)
435
+ (1, 0)
436
+ sage: f.lift(W.2)
437
+ Traceback (most recent call last):
438
+ ...
439
+ ValueError: element is not in the image
440
+ sage: w = W((17, -2, 0))
441
+ sage: f(f.lift(w)) == w
442
+ True
443
+
444
+ This example illustrates the use of the ``preimage_representative``
445
+ as an equivalent name for this method. ::
446
+
447
+ sage: V = ZZ^3
448
+ sage: W = ZZ^2
449
+ sage: w = vector(ZZ, [1,2])
450
+ sage: f = V.hom([w, w, w], W)
451
+ sage: f.preimage_representative(vector(ZZ, [10, 20]))
452
+ (0, 0, 10)
453
+
454
+ ::
455
+
456
+ sage: V = QQ^2; m = matrix(2, [1, 1, 0, 1])
457
+ sage: V.hom(m, side='right').lift(V.0 + V.1)
458
+ (0, 1)
459
+ sage: V.hom(m).lift(V.0 + V.1)
460
+ (1, 0)
461
+ """
462
+ from .free_module_element import vector
463
+ x = self.codomain()(x)
464
+ if self.side() == "right":
465
+ A = self.matrix().transpose()
466
+ else:
467
+ A = self.matrix()
468
+ R = self.base_ring()
469
+ if R.is_field():
470
+ try:
471
+ C = A.solve_left(x)
472
+ except ValueError:
473
+ raise ValueError("element is not in the image")
474
+ else:
475
+ # see inverse_image for similar code but with comments
476
+ if not hasattr(A, 'hermite_form'):
477
+ raise NotImplementedError("base ring (%s) must have hermite_form algorithm in order to compute inverse image" % R)
478
+ H, U = A.hermite_form(transformation=True, include_zero_rows=False)
479
+ Y = H.solve_left(vector(self.codomain().coordinates(x)))
480
+ C = Y*U
481
+ try:
482
+ t = self.domain().linear_combination_of_basis(C)
483
+ except TypeError:
484
+ raise ValueError("element is not in the image")
485
+ assert self(t) == x
486
+ return t
487
+
488
+ preimage_representative = lift
489
+
490
+ def eigenvalues(self, extend=True):
491
+ r"""
492
+ Return a list with the eigenvalues of the endomorphism of vector spaces.
493
+
494
+ INPUT:
495
+
496
+ - ``extend`` -- boolean (default: ``True``); decides if base field
497
+ extensions should be considered or not
498
+
499
+ EXAMPLES:
500
+
501
+ We compute the eigenvalues of an endomorphism of `\QQ^3`::
502
+
503
+ sage: V = QQ^3
504
+ sage: H = V.endomorphism_ring()([[1,-1,0], [-1,1,1], [0,3,1]])
505
+ sage: H.eigenvalues() # needs sage.rings.number_field
506
+ [3, 1, -1]
507
+
508
+ Note the effect of the ``extend`` option::
509
+
510
+ sage: V = QQ^2
511
+ sage: H = V.endomorphism_ring()([[0,-1], [1,0]])
512
+ sage: H.eigenvalues() # needs sage.rings.number_field
513
+ [-1*I, 1*I]
514
+ sage: H.eigenvalues(extend=False) # needs sage.libs.pari
515
+ []
516
+ """
517
+ if self.base_ring().is_field():
518
+ if self.is_endomorphism():
519
+ return self.matrix().eigenvalues(extend=extend)
520
+ else:
521
+ raise TypeError("not an endomorphism")
522
+ else:
523
+ raise NotImplementedError("module must be a vector space")
524
+
525
+ def eigenvectors(self, extend=True):
526
+ """
527
+ Compute the subspace of eigenvectors of a given eigenvalue.
528
+
529
+ INPUT:
530
+
531
+ - ``extend`` -- boolean (default: ``True``); decides if base field
532
+ extensions should be considered or not
533
+
534
+ OUTPUT:
535
+
536
+ A sequence of tuples. Each tuple contains an eigenvalue, a sequence
537
+ with a basis of the corresponding subspace of eigenvectors, and the
538
+ algebraic multiplicity of the eigenvalue.
539
+
540
+ EXAMPLES::
541
+
542
+ sage: # needs sage.rings.number_field
543
+ sage: V = (QQ^4).subspace([[0,2,1,4], [1,2,5,0], [1,1,1,1]])
544
+ sage: H = (V.Hom(V))(matrix(QQ, [[0,1,0], [-1,0,0], [0,0,3]]))
545
+ sage: H.eigenvectors()
546
+ [(3, [(0, 0, 1, -6/7)], 1),
547
+ (-1*I, [(1, 1*I, 0, -0.571428571428572? + 2.428571428571429?*I)], 1),
548
+ (1*I, [(1, -1*I, 0, -0.571428571428572? - 2.428571428571429?*I)], 1)]
549
+ sage: H.eigenvectors(extend=False)
550
+ [(3, [(0, 0, 1, -6/7)], 1)]
551
+ sage: H1 = (V.Hom(V))(matrix(QQ, [[2,1,0],[0,2,0],[0,0,3]]))
552
+ sage: H1.eigenvectors()
553
+ [(3, [(0, 0, 1, -6/7)], 1), (2, [(0, 1, 0, 17/7)], 2)]
554
+ sage: H1.eigenvectors(extend=False)
555
+ [(3, [(0, 0, 1, -6/7)], 1), (2, [(0, 1, 0, 17/7)], 2)]
556
+
557
+ ::
558
+
559
+ sage: V = QQ^2
560
+ sage: m = matrix(2, [1, 1, 0, 1])
561
+ sage: V.hom(m, side='right').eigenvectors() # needs sage.rings.number_field
562
+ [(1, [(1, 0)], 2)]
563
+ sage: V.hom(m).eigenvectors() # needs sage.rings.number_field
564
+ [(1, [(0, 1)], 2)]
565
+ """
566
+ if self.base_ring().is_field():
567
+ if self.is_endomorphism():
568
+ if self.side() == "right":
569
+ seigenvec = self.matrix().eigenvectors_right(extend=extend)
570
+ else:
571
+ seigenvec = self.matrix().eigenvectors_left(extend=extend)
572
+ resu = []
573
+ for i in seigenvec:
574
+ V = self.domain().base_extend(i[0].parent())
575
+ svectors = Sequence([V(j * V.basis_matrix()) for j in i[1]], cr=True)
576
+ resu.append((i[0], svectors, i[2]))
577
+ return resu
578
+ else:
579
+ raise TypeError("not an endomorphism")
580
+ else:
581
+ raise NotImplementedError("module must be a vector space")
582
+
583
+ def eigenspaces(self, extend=True):
584
+ """
585
+ Compute a list of subspaces formed by eigenvectors of ``self``.
586
+
587
+ INPUT:
588
+
589
+ - ``extend`` -- boolean (default: ``True``); determines if field
590
+ extensions should be considered
591
+
592
+ OUTPUT: a list of pairs ``(eigenvalue, eigenspace)``
593
+
594
+ EXAMPLES::
595
+
596
+ sage: V = QQ^3
597
+ sage: h = V.hom([[1,0,0], [0,0,1], [0,-1,0]], V)
598
+ sage: h.eigenspaces() # needs sage.rings.number_field
599
+ [(1, Vector space of degree 3 and dimension 1 over Rational Field
600
+ Basis matrix:
601
+ [1 0 0]),
602
+ (-1*I, Vector space of degree 3 and dimension 1 over Algebraic Field
603
+ Basis matrix:
604
+ [ 0 1 1*I]),
605
+ (1*I, Vector space of degree 3 and dimension 1 over Algebraic Field
606
+ Basis matrix:
607
+ [ 0 1 -1*I])]
608
+
609
+ sage: h.eigenspaces(extend=False) # needs sage.rings.number_field
610
+ [(1,
611
+ Vector space of degree 3 and dimension 1 over Rational Field
612
+ Basis matrix:
613
+ [1 0 0])]
614
+
615
+ sage: h = V.hom([[2,1,0], [0,2,0], [0,0,-1]], V)
616
+ sage: h.eigenspaces() # needs sage.rings.number_field
617
+ [(-1, Vector space of degree 3 and dimension 1 over Rational Field
618
+ Basis matrix:
619
+ [0 0 1]),
620
+ (2, Vector space of degree 3 and dimension 1 over Rational Field
621
+ Basis matrix:
622
+ [0 1 0])]
623
+
624
+ sage: h = V.hom([[2,1,0], [0,2,0], [0,0,2]], V)
625
+ sage: h.eigenspaces() # needs sage.rings.number_field
626
+ [(2, Vector space of degree 3 and dimension 2 over Rational Field
627
+ Basis matrix:
628
+ [0 1 0]
629
+ [0 0 1])]
630
+
631
+ ::
632
+
633
+ sage: V = QQ^2; m = matrix(2, [1, 1, 0, 1])
634
+ sage: V.hom(m, side='right').eigenspaces() # needs sage.rings.number_field
635
+ [(1, Vector space of degree 2 and dimension 1 over Rational Field
636
+ Basis matrix:
637
+ [1 0])]
638
+ sage: V.hom(m).eigenspaces() # needs sage.rings.number_field
639
+ [(1, Vector space of degree 2 and dimension 1 over Rational Field
640
+ Basis matrix:
641
+ [0 1])]
642
+ """
643
+ ev = self.eigenvectors(extend)
644
+ return [(vec[0], Sequence(vec[1]).universe().subspace(vec[1]))
645
+ for vec in ev]
646
+
647
+
648
+ class BaseIsomorphism1D(Morphism):
649
+ """
650
+ An isomorphism between a ring and a free rank-1 module over the ring.
651
+
652
+ EXAMPLES::
653
+
654
+ sage: R.<x,y> = QQ[]
655
+ sage: V, from_V, to_V = R.free_module(R)
656
+ sage: from_V
657
+ Isomorphism morphism:
658
+ From: Ambient free module of rank 1 over the integral domain
659
+ Multivariate Polynomial Ring in x, y over Rational Field
660
+ To: Multivariate Polynomial Ring in x, y over Rational Field
661
+ """
662
+ def _repr_type(self) -> str:
663
+ r"""
664
+ EXAMPLES::
665
+
666
+ sage: R.<x,y> = QQ[]
667
+ sage: V, from_V, to_V = R.free_module(R)
668
+ sage: from_V._repr_type()
669
+ 'Isomorphism'
670
+ """
671
+ return "Isomorphism"
672
+
673
+ def is_injective(self) -> bool:
674
+ r"""
675
+ EXAMPLES::
676
+
677
+ sage: R.<x,y> = QQ[]
678
+ sage: V, from_V, to_V = R.free_module(R)
679
+ sage: from_V.is_injective()
680
+ True
681
+ """
682
+ return True
683
+
684
+ def is_surjective(self) -> bool:
685
+ r"""
686
+ EXAMPLES::
687
+
688
+ sage: R.<x,y> = QQ[]
689
+ sage: V, from_V, to_V = R.free_module(R)
690
+ sage: from_V.is_surjective()
691
+ True
692
+ """
693
+ return True
694
+
695
+ def _richcmp_(self, other, op):
696
+ r"""
697
+ EXAMPLES::
698
+
699
+ sage: R.<x,y> = QQ[]
700
+ sage: V, fr, to = R.free_module(R)
701
+ sage: fr == loads(dumps(fr))
702
+ True
703
+ """
704
+ if isinstance(other, BaseIsomorphism1D):
705
+ return richcmp(self._basis, other._basis, op)
706
+ else:
707
+ return rich_to_bool(op, 1)
708
+
709
+
710
+ class BaseIsomorphism1D_to_FM(BaseIsomorphism1D):
711
+ """
712
+ An isomorphism from a ring to its 1-dimensional free module.
713
+
714
+ INPUT:
715
+
716
+ - ``parent`` -- the homset
717
+ - ``basis`` -- (default: 1) an invertible element of the ring
718
+
719
+ EXAMPLES::
720
+
721
+ sage: R = Zmod(8)
722
+ sage: V, from_V, to_V = R.free_module(R)
723
+ sage: v = to_V(2); v
724
+ (2)
725
+ sage: from_V(v)
726
+ 2
727
+ sage: W, from_W, to_W = R.free_module(R, basis=3)
728
+ sage: W is V
729
+ True
730
+ sage: w = to_W(2); w
731
+ (6)
732
+ sage: from_W(w)
733
+ 2
734
+
735
+ The basis vector has to be a unit so that the map is an isomorphism::
736
+
737
+ sage: W, from_W, to_W = R.free_module(R, basis=4)
738
+ Traceback (most recent call last):
739
+ ...
740
+ ValueError: basis element must be a unit
741
+ """
742
+ def __init__(self, parent, basis=None):
743
+ """
744
+ TESTS::
745
+
746
+ sage: R = Zmod(8)
747
+ sage: W, from_W, to_W = R.free_module(R, basis=3)
748
+ sage: TestSuite(to_W).run()
749
+ """
750
+ Morphism.__init__(self, parent)
751
+ self._basis = basis
752
+
753
+ def _call_(self, x):
754
+ """
755
+ TESTS::
756
+
757
+ sage: R = Zmod(8)
758
+ sage: W, from_W, to_W = R.free_module(R, basis=3)
759
+ sage: to_W(6) # indirect doctest
760
+ (2)
761
+ """
762
+ if self._basis is not None:
763
+ x *= self._basis
764
+ return self.codomain()([x])
765
+
766
+
767
+ class BaseIsomorphism1D_from_FM(BaseIsomorphism1D):
768
+ """
769
+ An isomorphism to a ring from its 1-dimensional free module.
770
+
771
+ INPUT:
772
+
773
+ - ``parent`` -- the homset
774
+ - ``basis`` -- (default: 1) an invertible element of the ring
775
+
776
+ EXAMPLES::
777
+
778
+ sage: R.<x> = QQ[[]]
779
+ sage: V, from_V, to_V = R.free_module(R)
780
+ sage: v = to_V(1+x); v
781
+ (1 + x)
782
+ sage: from_V(v)
783
+ 1 + x
784
+ sage: W, from_W, to_W = R.free_module(R, basis=(1-x))
785
+ sage: W is V
786
+ True
787
+ sage: w = to_W(1+x); w
788
+ (1 - x^2)
789
+ sage: from_W(w)
790
+ 1 + x + O(x^20)
791
+
792
+ The basis vector has to be a unit so that the map is an isomorphism::
793
+
794
+ sage: W, from_W, to_W = R.free_module(R, basis=x)
795
+ Traceback (most recent call last):
796
+ ...
797
+ ValueError: basis element must be a unit
798
+ """
799
+ def __init__(self, parent, basis=None):
800
+ """
801
+ TESTS::
802
+
803
+ sage: R.<x> = QQ[[]]
804
+ sage: W, from_W, to_W = R.free_module(R, basis=(1-x))
805
+ sage: TestSuite(from_W).run(skip='_test_nonzero_equal')
806
+ """
807
+ Morphism.__init__(self, parent)
808
+ self._basis = basis
809
+
810
+ def _call_(self, x):
811
+ """
812
+ TESTS::
813
+
814
+ sage: R.<x> = QQ[[]]
815
+ sage: W, from_W, to_W = R.free_module(R, basis=(1-x))
816
+ sage: w = to_W(1+x); w
817
+ (1 - x^2)
818
+ sage: from_W(w)
819
+ 1 + x + O(x^20)
820
+ """
821
+ if self._basis is None:
822
+ return x[0]
823
+ return self.codomain()(x[0] / self._basis)