passagemath-modules 10.6.31rc3__cp314-cp314-musllinux_1_2_x86_64.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 (808) hide show
  1. passagemath_modules-10.6.31rc3.dist-info/METADATA +281 -0
  2. passagemath_modules-10.6.31rc3.dist-info/RECORD +808 -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-0cd532bd.so.1 +0 -0
  6. passagemath_modules.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
  7. passagemath_modules.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  8. passagemath_modules.libs/libgsl-42cda06f.so.28.0.0 +0 -0
  9. passagemath_modules.libs/libmpc-d8ebe4b5.so.3.3.1 +0 -0
  10. passagemath_modules.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
  11. passagemath_modules.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
  12. passagemath_modules.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
  13. sage/algebras/all__sagemath_modules.py +20 -0
  14. sage/algebras/catalog.py +148 -0
  15. sage/algebras/clifford_algebra.py +3107 -0
  16. sage/algebras/clifford_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  17. sage/algebras/clifford_algebra_element.pxd +16 -0
  18. sage/algebras/clifford_algebra_element.pyx +997 -0
  19. sage/algebras/commutative_dga.py +4252 -0
  20. sage/algebras/exterior_algebra_groebner.cpython-314-x86_64-linux-musl.so +0 -0
  21. sage/algebras/exterior_algebra_groebner.pxd +55 -0
  22. sage/algebras/exterior_algebra_groebner.pyx +727 -0
  23. sage/algebras/finite_dimensional_algebras/all.py +2 -0
  24. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +1029 -0
  25. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  26. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +12 -0
  27. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +706 -0
  28. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_ideal.py +196 -0
  29. sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_morphism.py +255 -0
  30. sage/algebras/finite_gca.py +528 -0
  31. sage/algebras/group_algebra.py +232 -0
  32. sage/algebras/lie_algebras/abelian.py +197 -0
  33. sage/algebras/lie_algebras/affine_lie_algebra.py +1213 -0
  34. sage/algebras/lie_algebras/all.py +25 -0
  35. sage/algebras/lie_algebras/all__sagemath_modules.py +1 -0
  36. sage/algebras/lie_algebras/bch.py +177 -0
  37. sage/algebras/lie_algebras/bgg_dual_module.py +1184 -0
  38. sage/algebras/lie_algebras/bgg_resolution.py +232 -0
  39. sage/algebras/lie_algebras/center_uea.py +767 -0
  40. sage/algebras/lie_algebras/classical_lie_algebra.py +2516 -0
  41. sage/algebras/lie_algebras/examples.py +683 -0
  42. sage/algebras/lie_algebras/free_lie_algebra.py +973 -0
  43. sage/algebras/lie_algebras/heisenberg.py +820 -0
  44. sage/algebras/lie_algebras/lie_algebra.py +1562 -0
  45. sage/algebras/lie_algebras/lie_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
  46. sage/algebras/lie_algebras/lie_algebra_element.pxd +68 -0
  47. sage/algebras/lie_algebras/lie_algebra_element.pyx +2122 -0
  48. sage/algebras/lie_algebras/morphism.py +661 -0
  49. sage/algebras/lie_algebras/nilpotent_lie_algebra.py +457 -0
  50. sage/algebras/lie_algebras/onsager.py +1324 -0
  51. sage/algebras/lie_algebras/poincare_birkhoff_witt.py +816 -0
  52. sage/algebras/lie_algebras/quotient.py +462 -0
  53. sage/algebras/lie_algebras/rank_two_heisenberg_virasoro.py +355 -0
  54. sage/algebras/lie_algebras/representation.py +1040 -0
  55. sage/algebras/lie_algebras/structure_coefficients.py +459 -0
  56. sage/algebras/lie_algebras/subalgebra.py +967 -0
  57. sage/algebras/lie_algebras/symplectic_derivation.py +289 -0
  58. sage/algebras/lie_algebras/verma_module.py +1630 -0
  59. sage/algebras/lie_algebras/virasoro.py +1186 -0
  60. sage/algebras/octonion_algebra.cpython-314-x86_64-linux-musl.so +0 -0
  61. sage/algebras/octonion_algebra.pxd +20 -0
  62. sage/algebras/octonion_algebra.pyx +987 -0
  63. sage/algebras/orlik_solomon.py +907 -0
  64. sage/algebras/orlik_terao.py +779 -0
  65. sage/algebras/steenrod/all.py +7 -0
  66. sage/algebras/steenrod/steenrod_algebra.py +4258 -0
  67. sage/algebras/steenrod/steenrod_algebra_bases.py +1179 -0
  68. sage/algebras/steenrod/steenrod_algebra_misc.py +1167 -0
  69. sage/algebras/steenrod/steenrod_algebra_mult.py +954 -0
  70. sage/algebras/weyl_algebra.py +1126 -0
  71. sage/all__sagemath_modules.py +62 -0
  72. sage/calculus/all__sagemath_modules.py +19 -0
  73. sage/calculus/expr.py +205 -0
  74. sage/calculus/integration.cpython-314-x86_64-linux-musl.so +0 -0
  75. sage/calculus/integration.pyx +698 -0
  76. sage/calculus/interpolation.cpython-314-x86_64-linux-musl.so +0 -0
  77. sage/calculus/interpolation.pxd +13 -0
  78. sage/calculus/interpolation.pyx +387 -0
  79. sage/calculus/interpolators.cpython-314-x86_64-linux-musl.so +0 -0
  80. sage/calculus/interpolators.pyx +326 -0
  81. sage/calculus/ode.cpython-314-x86_64-linux-musl.so +0 -0
  82. sage/calculus/ode.pxd +5 -0
  83. sage/calculus/ode.pyx +610 -0
  84. sage/calculus/riemann.cpython-314-x86_64-linux-musl.so +0 -0
  85. sage/calculus/riemann.pyx +1521 -0
  86. sage/calculus/test_sympy.py +201 -0
  87. sage/calculus/transforms/all.py +7 -0
  88. sage/calculus/transforms/dft.py +844 -0
  89. sage/calculus/transforms/dwt.cpython-314-x86_64-linux-musl.so +0 -0
  90. sage/calculus/transforms/dwt.pxd +7 -0
  91. sage/calculus/transforms/dwt.pyx +160 -0
  92. sage/calculus/transforms/fft.cpython-314-x86_64-linux-musl.so +0 -0
  93. sage/calculus/transforms/fft.pxd +12 -0
  94. sage/calculus/transforms/fft.pyx +487 -0
  95. sage/calculus/wester.py +662 -0
  96. sage/coding/abstract_code.py +1108 -0
  97. sage/coding/ag_code.py +868 -0
  98. sage/coding/ag_code_decoders.cpython-314-x86_64-linux-musl.so +0 -0
  99. sage/coding/ag_code_decoders.pyx +2639 -0
  100. sage/coding/all.py +15 -0
  101. sage/coding/bch_code.py +494 -0
  102. sage/coding/binary_code.cpython-314-x86_64-linux-musl.so +0 -0
  103. sage/coding/binary_code.pxd +124 -0
  104. sage/coding/binary_code.pyx +4139 -0
  105. sage/coding/bounds_catalog.py +43 -0
  106. sage/coding/channel.py +819 -0
  107. sage/coding/channels_catalog.py +29 -0
  108. sage/coding/code_bounds.py +755 -0
  109. sage/coding/code_constructions.py +804 -0
  110. sage/coding/codes_catalog.py +111 -0
  111. sage/coding/cyclic_code.py +1329 -0
  112. sage/coding/databases.py +316 -0
  113. sage/coding/decoder.py +373 -0
  114. sage/coding/decoders_catalog.py +88 -0
  115. sage/coding/delsarte_bounds.py +709 -0
  116. sage/coding/encoder.py +390 -0
  117. sage/coding/encoders_catalog.py +64 -0
  118. sage/coding/extended_code.py +468 -0
  119. sage/coding/gabidulin_code.py +1058 -0
  120. sage/coding/golay_code.py +404 -0
  121. sage/coding/goppa_code.py +441 -0
  122. sage/coding/grs_code.py +2371 -0
  123. sage/coding/guava.py +107 -0
  124. sage/coding/guruswami_sudan/all.py +1 -0
  125. sage/coding/guruswami_sudan/gs_decoder.py +897 -0
  126. sage/coding/guruswami_sudan/interpolation.py +409 -0
  127. sage/coding/guruswami_sudan/utils.py +176 -0
  128. sage/coding/hamming_code.py +176 -0
  129. sage/coding/information_set_decoder.py +1032 -0
  130. sage/coding/kasami_codes.cpython-314-x86_64-linux-musl.so +0 -0
  131. sage/coding/kasami_codes.pyx +351 -0
  132. sage/coding/linear_code.py +3067 -0
  133. sage/coding/linear_code_no_metric.py +1354 -0
  134. sage/coding/linear_rank_metric.py +961 -0
  135. sage/coding/parity_check_code.py +353 -0
  136. sage/coding/punctured_code.py +719 -0
  137. sage/coding/reed_muller_code.py +999 -0
  138. sage/coding/self_dual_codes.py +942 -0
  139. sage/coding/source_coding/all.py +2 -0
  140. sage/coding/source_coding/huffman.py +553 -0
  141. sage/coding/subfield_subcode.py +423 -0
  142. sage/coding/two_weight_db.py +399 -0
  143. sage/combinat/all__sagemath_modules.py +7 -0
  144. sage/combinat/cartesian_product.py +347 -0
  145. sage/combinat/family.py +11 -0
  146. sage/combinat/free_module.py +1977 -0
  147. sage/combinat/root_system/all.py +147 -0
  148. sage/combinat/root_system/ambient_space.py +527 -0
  149. sage/combinat/root_system/associahedron.py +471 -0
  150. sage/combinat/root_system/braid_move_calculator.py +143 -0
  151. sage/combinat/root_system/braid_orbit.cpython-314-x86_64-linux-musl.so +0 -0
  152. sage/combinat/root_system/braid_orbit.pyx +144 -0
  153. sage/combinat/root_system/branching_rules.py +2301 -0
  154. sage/combinat/root_system/cartan_matrix.py +1245 -0
  155. sage/combinat/root_system/cartan_type.py +3069 -0
  156. sage/combinat/root_system/coxeter_group.py +162 -0
  157. sage/combinat/root_system/coxeter_matrix.py +1261 -0
  158. sage/combinat/root_system/coxeter_type.py +681 -0
  159. sage/combinat/root_system/dynkin_diagram.py +900 -0
  160. sage/combinat/root_system/extended_affine_weyl_group.py +2993 -0
  161. sage/combinat/root_system/fundamental_group.py +795 -0
  162. sage/combinat/root_system/hecke_algebra_representation.py +1203 -0
  163. sage/combinat/root_system/integrable_representations.py +1227 -0
  164. sage/combinat/root_system/non_symmetric_macdonald_polynomials.py +1965 -0
  165. sage/combinat/root_system/pieri_factors.py +1147 -0
  166. sage/combinat/root_system/plot.py +1615 -0
  167. sage/combinat/root_system/root_lattice_realization_algebras.py +1214 -0
  168. sage/combinat/root_system/root_lattice_realizations.py +4628 -0
  169. sage/combinat/root_system/root_space.py +487 -0
  170. sage/combinat/root_system/root_system.py +882 -0
  171. sage/combinat/root_system/type_A.py +348 -0
  172. sage/combinat/root_system/type_A_affine.py +227 -0
  173. sage/combinat/root_system/type_A_infinity.py +241 -0
  174. sage/combinat/root_system/type_B.py +347 -0
  175. sage/combinat/root_system/type_BC_affine.py +287 -0
  176. sage/combinat/root_system/type_B_affine.py +216 -0
  177. sage/combinat/root_system/type_C.py +317 -0
  178. sage/combinat/root_system/type_C_affine.py +188 -0
  179. sage/combinat/root_system/type_D.py +357 -0
  180. sage/combinat/root_system/type_D_affine.py +208 -0
  181. sage/combinat/root_system/type_E.py +641 -0
  182. sage/combinat/root_system/type_E_affine.py +231 -0
  183. sage/combinat/root_system/type_F.py +387 -0
  184. sage/combinat/root_system/type_F_affine.py +137 -0
  185. sage/combinat/root_system/type_G.py +293 -0
  186. sage/combinat/root_system/type_G_affine.py +132 -0
  187. sage/combinat/root_system/type_H.py +105 -0
  188. sage/combinat/root_system/type_I.py +110 -0
  189. sage/combinat/root_system/type_Q.py +150 -0
  190. sage/combinat/root_system/type_affine.py +509 -0
  191. sage/combinat/root_system/type_dual.py +704 -0
  192. sage/combinat/root_system/type_folded.py +301 -0
  193. sage/combinat/root_system/type_marked.py +748 -0
  194. sage/combinat/root_system/type_reducible.py +601 -0
  195. sage/combinat/root_system/type_relabel.py +730 -0
  196. sage/combinat/root_system/type_super_A.py +837 -0
  197. sage/combinat/root_system/weight_lattice_realizations.py +1188 -0
  198. sage/combinat/root_system/weight_space.py +639 -0
  199. sage/combinat/root_system/weyl_characters.py +2238 -0
  200. sage/crypto/__init__.py +4 -0
  201. sage/crypto/all.py +28 -0
  202. sage/crypto/block_cipher/all.py +7 -0
  203. sage/crypto/block_cipher/des.py +1065 -0
  204. sage/crypto/block_cipher/miniaes.py +2171 -0
  205. sage/crypto/block_cipher/present.py +909 -0
  206. sage/crypto/block_cipher/sdes.py +1527 -0
  207. sage/crypto/boolean_function.cpython-314-x86_64-linux-musl.so +0 -0
  208. sage/crypto/boolean_function.pxd +10 -0
  209. sage/crypto/boolean_function.pyx +1487 -0
  210. sage/crypto/cipher.py +78 -0
  211. sage/crypto/classical.py +3668 -0
  212. sage/crypto/classical_cipher.py +569 -0
  213. sage/crypto/cryptosystem.py +387 -0
  214. sage/crypto/key_exchange/all.py +7 -0
  215. sage/crypto/key_exchange/catalog.py +24 -0
  216. sage/crypto/key_exchange/diffie_hellman.py +323 -0
  217. sage/crypto/key_exchange/key_exchange_scheme.py +107 -0
  218. sage/crypto/lattice.py +312 -0
  219. sage/crypto/lfsr.py +295 -0
  220. sage/crypto/lwe.py +840 -0
  221. sage/crypto/mq/__init__.py +4 -0
  222. sage/crypto/mq/mpolynomialsystemgenerator.py +204 -0
  223. sage/crypto/mq/rijndael_gf.py +2345 -0
  224. sage/crypto/mq/sbox.py +7 -0
  225. sage/crypto/mq/sr.py +3344 -0
  226. sage/crypto/public_key/all.py +5 -0
  227. sage/crypto/public_key/blum_goldwasser.py +776 -0
  228. sage/crypto/sbox.cpython-314-x86_64-linux-musl.so +0 -0
  229. sage/crypto/sbox.pyx +2090 -0
  230. sage/crypto/sboxes.py +2090 -0
  231. sage/crypto/stream.py +390 -0
  232. sage/crypto/stream_cipher.py +297 -0
  233. sage/crypto/util.py +519 -0
  234. sage/ext/all__sagemath_modules.py +1 -0
  235. sage/ext/interpreters/__init__.py +1 -0
  236. sage/ext/interpreters/all__sagemath_modules.py +2 -0
  237. sage/ext/interpreters/wrapper_cc.cpython-314-x86_64-linux-musl.so +0 -0
  238. sage/ext/interpreters/wrapper_cc.pxd +30 -0
  239. sage/ext/interpreters/wrapper_cc.pyx +252 -0
  240. sage/ext/interpreters/wrapper_cdf.cpython-314-x86_64-linux-musl.so +0 -0
  241. sage/ext/interpreters/wrapper_cdf.pxd +26 -0
  242. sage/ext/interpreters/wrapper_cdf.pyx +245 -0
  243. sage/ext/interpreters/wrapper_rdf.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/ext/interpreters/wrapper_rdf.pxd +23 -0
  245. sage/ext/interpreters/wrapper_rdf.pyx +221 -0
  246. sage/ext/interpreters/wrapper_rr.cpython-314-x86_64-linux-musl.so +0 -0
  247. sage/ext/interpreters/wrapper_rr.pxd +28 -0
  248. sage/ext/interpreters/wrapper_rr.pyx +335 -0
  249. sage/geometry/all__sagemath_modules.py +5 -0
  250. sage/geometry/toric_lattice.py +1745 -0
  251. sage/geometry/toric_lattice_element.cpython-314-x86_64-linux-musl.so +0 -0
  252. sage/geometry/toric_lattice_element.pyx +432 -0
  253. sage/groups/abelian_gps/abelian_group.py +1925 -0
  254. sage/groups/abelian_gps/abelian_group_element.py +164 -0
  255. sage/groups/abelian_gps/all__sagemath_modules.py +5 -0
  256. sage/groups/abelian_gps/dual_abelian_group.py +421 -0
  257. sage/groups/abelian_gps/dual_abelian_group_element.py +179 -0
  258. sage/groups/abelian_gps/element_base.py +341 -0
  259. sage/groups/abelian_gps/values.py +488 -0
  260. sage/groups/additive_abelian/additive_abelian_group.py +476 -0
  261. sage/groups/additive_abelian/additive_abelian_wrapper.py +857 -0
  262. sage/groups/additive_abelian/all.py +4 -0
  263. sage/groups/additive_abelian/qmodnz.py +231 -0
  264. sage/groups/additive_abelian/qmodnz_element.py +349 -0
  265. sage/groups/affine_gps/affine_group.py +535 -0
  266. sage/groups/affine_gps/all.py +1 -0
  267. sage/groups/affine_gps/catalog.py +17 -0
  268. sage/groups/affine_gps/euclidean_group.py +246 -0
  269. sage/groups/affine_gps/group_element.py +562 -0
  270. sage/groups/all__sagemath_modules.py +12 -0
  271. sage/groups/galois_group.py +479 -0
  272. sage/groups/matrix_gps/all.py +4 -0
  273. sage/groups/matrix_gps/all__sagemath_modules.py +13 -0
  274. sage/groups/matrix_gps/catalog.py +26 -0
  275. sage/groups/matrix_gps/coxeter_group.py +927 -0
  276. sage/groups/matrix_gps/finitely_generated.py +487 -0
  277. sage/groups/matrix_gps/group_element.cpython-314-x86_64-linux-musl.so +0 -0
  278. sage/groups/matrix_gps/group_element.pxd +11 -0
  279. sage/groups/matrix_gps/group_element.pyx +431 -0
  280. sage/groups/matrix_gps/linear.py +440 -0
  281. sage/groups/matrix_gps/matrix_group.py +617 -0
  282. sage/groups/matrix_gps/named_group.py +296 -0
  283. sage/groups/matrix_gps/orthogonal.py +544 -0
  284. sage/groups/matrix_gps/symplectic.py +251 -0
  285. sage/groups/matrix_gps/unitary.py +436 -0
  286. sage/groups/misc_gps/all__sagemath_modules.py +1 -0
  287. sage/groups/misc_gps/argument_groups.py +1905 -0
  288. sage/groups/misc_gps/imaginary_groups.py +479 -0
  289. sage/groups/perm_gps/all__sagemath_modules.py +1 -0
  290. sage/groups/perm_gps/partn_ref/all__sagemath_modules.py +1 -0
  291. sage/groups/perm_gps/partn_ref/refinement_binary.cpython-314-x86_64-linux-musl.so +0 -0
  292. sage/groups/perm_gps/partn_ref/refinement_binary.pxd +41 -0
  293. sage/groups/perm_gps/partn_ref/refinement_binary.pyx +1167 -0
  294. sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-314-x86_64-linux-musl.so +0 -0
  295. sage/groups/perm_gps/partn_ref/refinement_matrices.pxd +31 -0
  296. sage/groups/perm_gps/partn_ref/refinement_matrices.pyx +385 -0
  297. sage/homology/algebraic_topological_model.py +595 -0
  298. sage/homology/all.py +2 -0
  299. sage/homology/all__sagemath_modules.py +8 -0
  300. sage/homology/chain_complex.py +2148 -0
  301. sage/homology/chain_complex_homspace.py +165 -0
  302. sage/homology/chain_complex_morphism.py +629 -0
  303. sage/homology/chain_homotopy.py +604 -0
  304. sage/homology/chains.py +653 -0
  305. sage/homology/free_resolution.py +923 -0
  306. sage/homology/graded_resolution.py +567 -0
  307. sage/homology/hochschild_complex.py +756 -0
  308. sage/homology/homology_group.py +188 -0
  309. sage/homology/homology_morphism.py +422 -0
  310. sage/homology/homology_vector_space_with_basis.py +1454 -0
  311. sage/homology/koszul_complex.py +169 -0
  312. sage/homology/matrix_utils.py +205 -0
  313. sage/libs/all__sagemath_modules.py +1 -0
  314. sage/libs/gsl/__init__.py +1 -0
  315. sage/libs/gsl/airy.pxd +56 -0
  316. sage/libs/gsl/all.pxd +66 -0
  317. sage/libs/gsl/array.cpython-314-x86_64-linux-musl.so +0 -0
  318. sage/libs/gsl/array.pxd +5 -0
  319. sage/libs/gsl/array.pyx +102 -0
  320. sage/libs/gsl/bessel.pxd +208 -0
  321. sage/libs/gsl/blas.pxd +116 -0
  322. sage/libs/gsl/blas_types.pxd +34 -0
  323. sage/libs/gsl/block.pxd +52 -0
  324. sage/libs/gsl/chebyshev.pxd +37 -0
  325. sage/libs/gsl/clausen.pxd +12 -0
  326. sage/libs/gsl/combination.pxd +47 -0
  327. sage/libs/gsl/complex.pxd +151 -0
  328. sage/libs/gsl/coulomb.pxd +30 -0
  329. sage/libs/gsl/coupling.pxd +21 -0
  330. sage/libs/gsl/dawson.pxd +12 -0
  331. sage/libs/gsl/debye.pxd +24 -0
  332. sage/libs/gsl/dilog.pxd +14 -0
  333. sage/libs/gsl/eigen.pxd +46 -0
  334. sage/libs/gsl/elementary.pxd +12 -0
  335. sage/libs/gsl/ellint.pxd +48 -0
  336. sage/libs/gsl/elljac.pxd +8 -0
  337. sage/libs/gsl/erf.pxd +32 -0
  338. sage/libs/gsl/errno.pxd +26 -0
  339. sage/libs/gsl/exp.pxd +44 -0
  340. sage/libs/gsl/expint.pxd +44 -0
  341. sage/libs/gsl/fermi_dirac.pxd +44 -0
  342. sage/libs/gsl/fft.pxd +121 -0
  343. sage/libs/gsl/fit.pxd +50 -0
  344. sage/libs/gsl/gamma.pxd +94 -0
  345. sage/libs/gsl/gegenbauer.pxd +26 -0
  346. sage/libs/gsl/histogram.pxd +176 -0
  347. sage/libs/gsl/hyperg.pxd +52 -0
  348. sage/libs/gsl/integration.pxd +69 -0
  349. sage/libs/gsl/interp.pxd +109 -0
  350. sage/libs/gsl/laguerre.pxd +24 -0
  351. sage/libs/gsl/lambert.pxd +16 -0
  352. sage/libs/gsl/legendre.pxd +90 -0
  353. sage/libs/gsl/linalg.pxd +185 -0
  354. sage/libs/gsl/log.pxd +26 -0
  355. sage/libs/gsl/math.pxd +43 -0
  356. sage/libs/gsl/matrix.pxd +143 -0
  357. sage/libs/gsl/matrix_complex.pxd +130 -0
  358. sage/libs/gsl/min.pxd +67 -0
  359. sage/libs/gsl/monte.pxd +56 -0
  360. sage/libs/gsl/ntuple.pxd +32 -0
  361. sage/libs/gsl/odeiv.pxd +70 -0
  362. sage/libs/gsl/permutation.pxd +78 -0
  363. sage/libs/gsl/poly.pxd +40 -0
  364. sage/libs/gsl/pow_int.pxd +12 -0
  365. sage/libs/gsl/psi.pxd +28 -0
  366. sage/libs/gsl/qrng.pxd +29 -0
  367. sage/libs/gsl/random.pxd +257 -0
  368. sage/libs/gsl/rng.pxd +100 -0
  369. sage/libs/gsl/roots.pxd +72 -0
  370. sage/libs/gsl/sort.pxd +36 -0
  371. sage/libs/gsl/statistics.pxd +59 -0
  372. sage/libs/gsl/sum.pxd +55 -0
  373. sage/libs/gsl/synchrotron.pxd +16 -0
  374. sage/libs/gsl/transport.pxd +24 -0
  375. sage/libs/gsl/trig.pxd +58 -0
  376. sage/libs/gsl/types.pxd +137 -0
  377. sage/libs/gsl/vector.pxd +101 -0
  378. sage/libs/gsl/vector_complex.pxd +83 -0
  379. sage/libs/gsl/wavelet.pxd +49 -0
  380. sage/libs/gsl/zeta.pxd +28 -0
  381. sage/libs/mpc/__init__.pxd +114 -0
  382. sage/libs/mpc/types.pxd +28 -0
  383. sage/libs/mpfr/__init__.pxd +299 -0
  384. sage/libs/mpfr/types.pxd +26 -0
  385. sage/libs/mpmath/__init__.py +1 -0
  386. sage/libs/mpmath/all.py +27 -0
  387. sage/libs/mpmath/all__sagemath_modules.py +1 -0
  388. sage/libs/mpmath/utils.cpython-314-x86_64-linux-musl.so +0 -0
  389. sage/libs/mpmath/utils.pxd +4 -0
  390. sage/libs/mpmath/utils.pyx +319 -0
  391. sage/matrix/action.cpython-314-x86_64-linux-musl.so +0 -0
  392. sage/matrix/action.pxd +26 -0
  393. sage/matrix/action.pyx +596 -0
  394. sage/matrix/all.py +9 -0
  395. sage/matrix/args.cpython-314-x86_64-linux-musl.so +0 -0
  396. sage/matrix/args.pxd +144 -0
  397. sage/matrix/args.pyx +1668 -0
  398. sage/matrix/benchmark.py +1258 -0
  399. sage/matrix/berlekamp_massey.py +95 -0
  400. sage/matrix/compute_J_ideal.py +926 -0
  401. sage/matrix/constructor.cpython-314-x86_64-linux-musl.so +0 -0
  402. sage/matrix/constructor.pyx +750 -0
  403. sage/matrix/docs.py +430 -0
  404. sage/matrix/echelon_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  405. sage/matrix/echelon_matrix.pyx +155 -0
  406. sage/matrix/matrix.pxd +2 -0
  407. sage/matrix/matrix0.cpython-314-x86_64-linux-musl.so +0 -0
  408. sage/matrix/matrix0.pxd +68 -0
  409. sage/matrix/matrix0.pyx +6324 -0
  410. sage/matrix/matrix1.cpython-314-x86_64-linux-musl.so +0 -0
  411. sage/matrix/matrix1.pxd +8 -0
  412. sage/matrix/matrix1.pyx +2851 -0
  413. sage/matrix/matrix2.cpython-314-x86_64-linux-musl.so +0 -0
  414. sage/matrix/matrix2.pxd +25 -0
  415. sage/matrix/matrix2.pyx +20181 -0
  416. sage/matrix/matrix_cdv.cpython-314-x86_64-linux-musl.so +0 -0
  417. sage/matrix/matrix_cdv.pxd +4 -0
  418. sage/matrix/matrix_cdv.pyx +93 -0
  419. sage/matrix/matrix_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  420. sage/matrix/matrix_complex_double_dense.pxd +5 -0
  421. sage/matrix/matrix_complex_double_dense.pyx +98 -0
  422. sage/matrix/matrix_dense.cpython-314-x86_64-linux-musl.so +0 -0
  423. sage/matrix/matrix_dense.pxd +5 -0
  424. sage/matrix/matrix_dense.pyx +343 -0
  425. sage/matrix/matrix_domain_dense.pxd +5 -0
  426. sage/matrix/matrix_domain_sparse.pxd +5 -0
  427. sage/matrix/matrix_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  428. sage/matrix/matrix_double_dense.pxd +7 -0
  429. sage/matrix/matrix_double_dense.pyx +3906 -0
  430. sage/matrix/matrix_double_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  431. sage/matrix/matrix_double_sparse.pxd +6 -0
  432. sage/matrix/matrix_double_sparse.pyx +248 -0
  433. sage/matrix/matrix_generic_dense.cpython-314-x86_64-linux-musl.so +0 -0
  434. sage/matrix/matrix_generic_dense.pxd +7 -0
  435. sage/matrix/matrix_generic_dense.pyx +354 -0
  436. sage/matrix/matrix_generic_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  437. sage/matrix/matrix_generic_sparse.pxd +7 -0
  438. sage/matrix/matrix_generic_sparse.pyx +461 -0
  439. sage/matrix/matrix_laurent_mpolynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  440. sage/matrix/matrix_laurent_mpolynomial_dense.pxd +5 -0
  441. sage/matrix/matrix_laurent_mpolynomial_dense.pyx +115 -0
  442. sage/matrix/matrix_misc.py +313 -0
  443. sage/matrix/matrix_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  444. sage/matrix/matrix_numpy_dense.pxd +14 -0
  445. sage/matrix/matrix_numpy_dense.pyx +450 -0
  446. sage/matrix/matrix_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  447. sage/matrix/matrix_numpy_integer_dense.pxd +7 -0
  448. sage/matrix/matrix_numpy_integer_dense.pyx +59 -0
  449. sage/matrix/matrix_polynomial_dense.cpython-314-x86_64-linux-musl.so +0 -0
  450. sage/matrix/matrix_polynomial_dense.pxd +5 -0
  451. sage/matrix/matrix_polynomial_dense.pyx +5341 -0
  452. sage/matrix/matrix_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  453. sage/matrix/matrix_real_double_dense.pxd +7 -0
  454. sage/matrix/matrix_real_double_dense.pyx +122 -0
  455. sage/matrix/matrix_space.py +2848 -0
  456. sage/matrix/matrix_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  457. sage/matrix/matrix_sparse.pxd +5 -0
  458. sage/matrix/matrix_sparse.pyx +1222 -0
  459. sage/matrix/matrix_window.cpython-314-x86_64-linux-musl.so +0 -0
  460. sage/matrix/matrix_window.pxd +37 -0
  461. sage/matrix/matrix_window.pyx +242 -0
  462. sage/matrix/misc_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  463. sage/matrix/misc_mpfr.pyx +80 -0
  464. sage/matrix/operation_table.py +1182 -0
  465. sage/matrix/special.py +3666 -0
  466. sage/matrix/strassen.cpython-314-x86_64-linux-musl.so +0 -0
  467. sage/matrix/strassen.pyx +851 -0
  468. sage/matrix/symplectic_basis.py +541 -0
  469. sage/matrix/template.pxd +6 -0
  470. sage/matrix/tests.py +71 -0
  471. sage/matroids/advanced.py +77 -0
  472. sage/matroids/all.py +13 -0
  473. sage/matroids/basis_exchange_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  474. sage/matroids/basis_exchange_matroid.pxd +96 -0
  475. sage/matroids/basis_exchange_matroid.pyx +2344 -0
  476. sage/matroids/basis_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  477. sage/matroids/basis_matroid.pxd +45 -0
  478. sage/matroids/basis_matroid.pyx +1217 -0
  479. sage/matroids/catalog.py +44 -0
  480. sage/matroids/chow_ring.py +473 -0
  481. sage/matroids/chow_ring_ideal.py +849 -0
  482. sage/matroids/circuit_closures_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  483. sage/matroids/circuit_closures_matroid.pxd +16 -0
  484. sage/matroids/circuit_closures_matroid.pyx +559 -0
  485. sage/matroids/circuits_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  486. sage/matroids/circuits_matroid.pxd +38 -0
  487. sage/matroids/circuits_matroid.pyx +947 -0
  488. sage/matroids/constructor.py +1086 -0
  489. sage/matroids/database_collections.py +365 -0
  490. sage/matroids/database_matroids.py +5338 -0
  491. sage/matroids/dual_matroid.py +583 -0
  492. sage/matroids/extension.cpython-314-x86_64-linux-musl.so +0 -0
  493. sage/matroids/extension.pxd +34 -0
  494. sage/matroids/extension.pyx +519 -0
  495. sage/matroids/flats_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  496. sage/matroids/flats_matroid.pxd +28 -0
  497. sage/matroids/flats_matroid.pyx +715 -0
  498. sage/matroids/gammoid.py +600 -0
  499. sage/matroids/graphic_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  500. sage/matroids/graphic_matroid.pxd +39 -0
  501. sage/matroids/graphic_matroid.pyx +2024 -0
  502. sage/matroids/lean_matrix.cpython-314-x86_64-linux-musl.so +0 -0
  503. sage/matroids/lean_matrix.pxd +126 -0
  504. sage/matroids/lean_matrix.pyx +3667 -0
  505. sage/matroids/linear_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  506. sage/matroids/linear_matroid.pxd +180 -0
  507. sage/matroids/linear_matroid.pyx +6649 -0
  508. sage/matroids/matroid.cpython-314-x86_64-linux-musl.so +0 -0
  509. sage/matroids/matroid.pxd +243 -0
  510. sage/matroids/matroid.pyx +8759 -0
  511. sage/matroids/matroids_catalog.py +190 -0
  512. sage/matroids/matroids_plot_helpers.py +890 -0
  513. sage/matroids/minor_matroid.py +480 -0
  514. sage/matroids/minorfix.h +9 -0
  515. sage/matroids/named_matroids.py +5 -0
  516. sage/matroids/rank_matroid.py +268 -0
  517. sage/matroids/set_system.cpython-314-x86_64-linux-musl.so +0 -0
  518. sage/matroids/set_system.pxd +38 -0
  519. sage/matroids/set_system.pyx +800 -0
  520. sage/matroids/transversal_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  521. sage/matroids/transversal_matroid.pxd +14 -0
  522. sage/matroids/transversal_matroid.pyx +893 -0
  523. sage/matroids/union_matroid.cpython-314-x86_64-linux-musl.so +0 -0
  524. sage/matroids/union_matroid.pxd +20 -0
  525. sage/matroids/union_matroid.pyx +331 -0
  526. sage/matroids/unpickling.cpython-314-x86_64-linux-musl.so +0 -0
  527. sage/matroids/unpickling.pyx +843 -0
  528. sage/matroids/utilities.py +809 -0
  529. sage/misc/all__sagemath_modules.py +20 -0
  530. sage/misc/c3.cpython-314-x86_64-linux-musl.so +0 -0
  531. sage/misc/c3.pyx +238 -0
  532. sage/misc/compat.py +87 -0
  533. sage/misc/element_with_label.py +173 -0
  534. sage/misc/func_persist.py +79 -0
  535. sage/misc/pickle_old.cpython-314-x86_64-linux-musl.so +0 -0
  536. sage/misc/pickle_old.pyx +19 -0
  537. sage/misc/proof.py +7 -0
  538. sage/misc/replace_dot_all.py +472 -0
  539. sage/misc/sagedoc_conf.py +168 -0
  540. sage/misc/sphinxify.py +167 -0
  541. sage/misc/test_class_pickling.py +85 -0
  542. sage/modules/all.py +42 -0
  543. sage/modules/complex_double_vector.py +25 -0
  544. sage/modules/diamond_cutting.py +380 -0
  545. sage/modules/fg_pid/all.py +1 -0
  546. sage/modules/fg_pid/fgp_element.py +456 -0
  547. sage/modules/fg_pid/fgp_module.py +2091 -0
  548. sage/modules/fg_pid/fgp_morphism.py +550 -0
  549. sage/modules/filtered_vector_space.py +1271 -0
  550. sage/modules/finite_submodule_iter.cpython-314-x86_64-linux-musl.so +0 -0
  551. sage/modules/finite_submodule_iter.pxd +27 -0
  552. sage/modules/finite_submodule_iter.pyx +452 -0
  553. sage/modules/fp_graded/all.py +1 -0
  554. sage/modules/fp_graded/element.py +346 -0
  555. sage/modules/fp_graded/free_element.py +298 -0
  556. sage/modules/fp_graded/free_homspace.py +53 -0
  557. sage/modules/fp_graded/free_module.py +1060 -0
  558. sage/modules/fp_graded/free_morphism.py +217 -0
  559. sage/modules/fp_graded/homspace.py +563 -0
  560. sage/modules/fp_graded/module.py +1340 -0
  561. sage/modules/fp_graded/morphism.py +1990 -0
  562. sage/modules/fp_graded/steenrod/all.py +1 -0
  563. sage/modules/fp_graded/steenrod/homspace.py +65 -0
  564. sage/modules/fp_graded/steenrod/module.py +477 -0
  565. sage/modules/fp_graded/steenrod/morphism.py +404 -0
  566. sage/modules/fp_graded/steenrod/profile.py +241 -0
  567. sage/modules/free_module.py +8447 -0
  568. sage/modules/free_module_element.cpython-314-x86_64-linux-musl.so +0 -0
  569. sage/modules/free_module_element.pxd +22 -0
  570. sage/modules/free_module_element.pyx +5445 -0
  571. sage/modules/free_module_homspace.py +369 -0
  572. sage/modules/free_module_integer.py +896 -0
  573. sage/modules/free_module_morphism.py +823 -0
  574. sage/modules/free_module_pseudohomspace.py +352 -0
  575. sage/modules/free_module_pseudomorphism.py +578 -0
  576. sage/modules/free_quadratic_module.py +1706 -0
  577. sage/modules/free_quadratic_module_integer_symmetric.py +1790 -0
  578. sage/modules/matrix_morphism.py +1745 -0
  579. sage/modules/misc.py +103 -0
  580. sage/modules/module_functors.py +192 -0
  581. sage/modules/multi_filtered_vector_space.py +719 -0
  582. sage/modules/ore_module.py +2208 -0
  583. sage/modules/ore_module_element.py +178 -0
  584. sage/modules/ore_module_homspace.py +147 -0
  585. sage/modules/ore_module_morphism.py +968 -0
  586. sage/modules/quotient_module.py +699 -0
  587. sage/modules/real_double_vector.py +22 -0
  588. sage/modules/submodule.py +255 -0
  589. sage/modules/tensor_operations.py +567 -0
  590. sage/modules/torsion_quadratic_module.py +1352 -0
  591. sage/modules/tutorial_free_modules.py +248 -0
  592. sage/modules/vector_complex_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  593. sage/modules/vector_complex_double_dense.pxd +6 -0
  594. sage/modules/vector_complex_double_dense.pyx +117 -0
  595. sage/modules/vector_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  596. sage/modules/vector_double_dense.pxd +6 -0
  597. sage/modules/vector_double_dense.pyx +604 -0
  598. sage/modules/vector_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  599. sage/modules/vector_integer_dense.pxd +15 -0
  600. sage/modules/vector_integer_dense.pyx +361 -0
  601. sage/modules/vector_integer_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  602. sage/modules/vector_integer_sparse.pxd +29 -0
  603. sage/modules/vector_integer_sparse.pyx +406 -0
  604. sage/modules/vector_modn_dense.cpython-314-x86_64-linux-musl.so +0 -0
  605. sage/modules/vector_modn_dense.pxd +12 -0
  606. sage/modules/vector_modn_dense.pyx +394 -0
  607. sage/modules/vector_modn_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  608. sage/modules/vector_modn_sparse.pxd +21 -0
  609. sage/modules/vector_modn_sparse.pyx +298 -0
  610. sage/modules/vector_numpy_dense.cpython-314-x86_64-linux-musl.so +0 -0
  611. sage/modules/vector_numpy_dense.pxd +15 -0
  612. sage/modules/vector_numpy_dense.pyx +304 -0
  613. sage/modules/vector_numpy_integer_dense.cpython-314-x86_64-linux-musl.so +0 -0
  614. sage/modules/vector_numpy_integer_dense.pxd +7 -0
  615. sage/modules/vector_numpy_integer_dense.pyx +54 -0
  616. sage/modules/vector_rational_dense.cpython-314-x86_64-linux-musl.so +0 -0
  617. sage/modules/vector_rational_dense.pxd +15 -0
  618. sage/modules/vector_rational_dense.pyx +387 -0
  619. sage/modules/vector_rational_sparse.cpython-314-x86_64-linux-musl.so +0 -0
  620. sage/modules/vector_rational_sparse.pxd +30 -0
  621. sage/modules/vector_rational_sparse.pyx +413 -0
  622. sage/modules/vector_real_double_dense.cpython-314-x86_64-linux-musl.so +0 -0
  623. sage/modules/vector_real_double_dense.pxd +6 -0
  624. sage/modules/vector_real_double_dense.pyx +126 -0
  625. sage/modules/vector_space_homspace.py +430 -0
  626. sage/modules/vector_space_morphism.py +989 -0
  627. sage/modules/with_basis/all.py +15 -0
  628. sage/modules/with_basis/cell_module.py +494 -0
  629. sage/modules/with_basis/indexed_element.cpython-314-x86_64-linux-musl.so +0 -0
  630. sage/modules/with_basis/indexed_element.pxd +13 -0
  631. sage/modules/with_basis/indexed_element.pyx +1058 -0
  632. sage/modules/with_basis/invariant.py +1075 -0
  633. sage/modules/with_basis/morphism.py +1636 -0
  634. sage/modules/with_basis/representation.py +2939 -0
  635. sage/modules/with_basis/subquotient.py +685 -0
  636. sage/numerical/all__sagemath_modules.py +6 -0
  637. sage/numerical/gauss_legendre.cpython-314-x86_64-linux-musl.so +0 -0
  638. sage/numerical/gauss_legendre.pyx +381 -0
  639. sage/numerical/optimize.py +910 -0
  640. sage/probability/all.py +10 -0
  641. sage/probability/probability_distribution.cpython-314-x86_64-linux-musl.so +0 -0
  642. sage/probability/probability_distribution.pyx +1242 -0
  643. sage/probability/random_variable.py +411 -0
  644. sage/quadratic_forms/all.py +4 -0
  645. sage/quadratic_forms/all__sagemath_modules.py +15 -0
  646. sage/quadratic_forms/binary_qf.py +2042 -0
  647. sage/quadratic_forms/bqf_class_group.py +748 -0
  648. sage/quadratic_forms/constructions.py +93 -0
  649. sage/quadratic_forms/count_local_2.cpython-314-x86_64-linux-musl.so +0 -0
  650. sage/quadratic_forms/count_local_2.pyx +365 -0
  651. sage/quadratic_forms/extras.py +195 -0
  652. sage/quadratic_forms/quadratic_form.py +1753 -0
  653. sage/quadratic_forms/quadratic_form__count_local_2.py +221 -0
  654. sage/quadratic_forms/quadratic_form__equivalence_testing.py +708 -0
  655. sage/quadratic_forms/quadratic_form__evaluate.cpython-314-x86_64-linux-musl.so +0 -0
  656. sage/quadratic_forms/quadratic_form__evaluate.pyx +139 -0
  657. sage/quadratic_forms/quadratic_form__local_density_congruence.py +977 -0
  658. sage/quadratic_forms/quadratic_form__local_field_invariants.py +1072 -0
  659. sage/quadratic_forms/quadratic_form__neighbors.py +424 -0
  660. sage/quadratic_forms/quadratic_form__reduction_theory.py +488 -0
  661. sage/quadratic_forms/quadratic_form__split_local_covering.py +416 -0
  662. sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +657 -0
  663. sage/quadratic_forms/quadratic_form__theta.py +352 -0
  664. sage/quadratic_forms/quadratic_form__variable_substitutions.py +370 -0
  665. sage/quadratic_forms/random_quadraticform.py +209 -0
  666. sage/quadratic_forms/ternary.cpython-314-x86_64-linux-musl.so +0 -0
  667. sage/quadratic_forms/ternary.pyx +1154 -0
  668. sage/quadratic_forms/ternary_qf.py +2027 -0
  669. sage/rings/all__sagemath_modules.py +28 -0
  670. sage/rings/asymptotic/all__sagemath_modules.py +1 -0
  671. sage/rings/asymptotic/misc.py +1252 -0
  672. sage/rings/cc.py +4 -0
  673. sage/rings/cfinite_sequence.py +1306 -0
  674. sage/rings/complex_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  675. sage/rings/complex_conversion.pxd +8 -0
  676. sage/rings/complex_conversion.pyx +23 -0
  677. sage/rings/complex_double.cpython-314-x86_64-linux-musl.so +0 -0
  678. sage/rings/complex_double.pxd +21 -0
  679. sage/rings/complex_double.pyx +2654 -0
  680. sage/rings/complex_mpc.cpython-314-x86_64-linux-musl.so +0 -0
  681. sage/rings/complex_mpc.pxd +21 -0
  682. sage/rings/complex_mpc.pyx +2576 -0
  683. sage/rings/complex_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  684. sage/rings/complex_mpfr.pxd +18 -0
  685. sage/rings/complex_mpfr.pyx +3602 -0
  686. sage/rings/derivation.py +2334 -0
  687. sage/rings/finite_rings/all__sagemath_modules.py +1 -0
  688. sage/rings/finite_rings/maps_finite_field.py +191 -0
  689. sage/rings/function_field/all__sagemath_modules.py +8 -0
  690. sage/rings/function_field/derivations.py +102 -0
  691. sage/rings/function_field/derivations_rational.py +132 -0
  692. sage/rings/function_field/differential.py +853 -0
  693. sage/rings/function_field/divisor.py +1107 -0
  694. sage/rings/function_field/drinfeld_modules/action.py +199 -0
  695. sage/rings/function_field/drinfeld_modules/all.py +1 -0
  696. sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +673 -0
  697. sage/rings/function_field/drinfeld_modules/drinfeld_module.py +2087 -0
  698. sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1131 -0
  699. sage/rings/function_field/drinfeld_modules/homset.py +420 -0
  700. sage/rings/function_field/drinfeld_modules/morphism.py +820 -0
  701. sage/rings/function_field/hermite_form_polynomial.cpython-314-x86_64-linux-musl.so +0 -0
  702. sage/rings/function_field/hermite_form_polynomial.pyx +188 -0
  703. sage/rings/function_field/khuri_makdisi.cpython-314-x86_64-linux-musl.so +0 -0
  704. sage/rings/function_field/khuri_makdisi.pyx +935 -0
  705. sage/rings/invariants/all.py +4 -0
  706. sage/rings/invariants/invariant_theory.py +4597 -0
  707. sage/rings/invariants/reconstruction.py +395 -0
  708. sage/rings/polynomial/all__sagemath_modules.py +17 -0
  709. sage/rings/polynomial/integer_valued_polynomials.py +1230 -0
  710. sage/rings/polynomial/laurent_polynomial_mpair.cpython-314-x86_64-linux-musl.so +0 -0
  711. sage/rings/polynomial/laurent_polynomial_mpair.pxd +15 -0
  712. sage/rings/polynomial/laurent_polynomial_mpair.pyx +2023 -0
  713. sage/rings/polynomial/ore_function_element.py +952 -0
  714. sage/rings/polynomial/ore_function_field.py +1028 -0
  715. sage/rings/polynomial/ore_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  716. sage/rings/polynomial/ore_polynomial_element.pxd +48 -0
  717. sage/rings/polynomial/ore_polynomial_element.pyx +3145 -0
  718. sage/rings/polynomial/ore_polynomial_ring.py +1334 -0
  719. sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-314-x86_64-linux-musl.so +0 -0
  720. sage/rings/polynomial/polynomial_real_mpfr_dense.pyx +788 -0
  721. sage/rings/polynomial/q_integer_valued_polynomials.py +1264 -0
  722. sage/rings/polynomial/skew_polynomial_element.cpython-314-x86_64-linux-musl.so +0 -0
  723. sage/rings/polynomial/skew_polynomial_element.pxd +9 -0
  724. sage/rings/polynomial/skew_polynomial_element.pyx +684 -0
  725. sage/rings/polynomial/skew_polynomial_finite_field.cpython-314-x86_64-linux-musl.so +0 -0
  726. sage/rings/polynomial/skew_polynomial_finite_field.pxd +19 -0
  727. sage/rings/polynomial/skew_polynomial_finite_field.pyx +1093 -0
  728. sage/rings/polynomial/skew_polynomial_finite_order.cpython-314-x86_64-linux-musl.so +0 -0
  729. sage/rings/polynomial/skew_polynomial_finite_order.pxd +10 -0
  730. sage/rings/polynomial/skew_polynomial_finite_order.pyx +567 -0
  731. sage/rings/polynomial/skew_polynomial_ring.py +908 -0
  732. sage/rings/real_double_element_gsl.cpython-314-x86_64-linux-musl.so +0 -0
  733. sage/rings/real_double_element_gsl.pxd +8 -0
  734. sage/rings/real_double_element_gsl.pyx +794 -0
  735. sage/rings/real_field.py +58 -0
  736. sage/rings/real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
  737. sage/rings/real_mpfr.pxd +29 -0
  738. sage/rings/real_mpfr.pyx +6122 -0
  739. sage/rings/ring_extension.cpython-314-x86_64-linux-musl.so +0 -0
  740. sage/rings/ring_extension.pxd +42 -0
  741. sage/rings/ring_extension.pyx +2779 -0
  742. sage/rings/ring_extension_conversion.cpython-314-x86_64-linux-musl.so +0 -0
  743. sage/rings/ring_extension_conversion.pxd +16 -0
  744. sage/rings/ring_extension_conversion.pyx +462 -0
  745. sage/rings/ring_extension_element.cpython-314-x86_64-linux-musl.so +0 -0
  746. sage/rings/ring_extension_element.pxd +21 -0
  747. sage/rings/ring_extension_element.pyx +1635 -0
  748. sage/rings/ring_extension_homset.py +64 -0
  749. sage/rings/ring_extension_morphism.cpython-314-x86_64-linux-musl.so +0 -0
  750. sage/rings/ring_extension_morphism.pxd +35 -0
  751. sage/rings/ring_extension_morphism.pyx +920 -0
  752. sage/schemes/all__sagemath_modules.py +1 -0
  753. sage/schemes/projective/all__sagemath_modules.py +1 -0
  754. sage/schemes/projective/coherent_sheaf.py +300 -0
  755. sage/schemes/projective/cohomology.py +510 -0
  756. sage/stats/all.py +15 -0
  757. sage/stats/basic_stats.py +489 -0
  758. sage/stats/distributions/all.py +7 -0
  759. sage/stats/distributions/catalog.py +34 -0
  760. sage/stats/distributions/dgs.h +50 -0
  761. sage/stats/distributions/dgs.pxd +111 -0
  762. sage/stats/distributions/dgs_bern.h +400 -0
  763. sage/stats/distributions/dgs_gauss.h +614 -0
  764. sage/stats/distributions/dgs_misc.h +104 -0
  765. sage/stats/distributions/discrete_gaussian_integer.cpython-314-x86_64-linux-musl.so +0 -0
  766. sage/stats/distributions/discrete_gaussian_integer.pxd +14 -0
  767. sage/stats/distributions/discrete_gaussian_integer.pyx +498 -0
  768. sage/stats/distributions/discrete_gaussian_lattice.py +908 -0
  769. sage/stats/distributions/discrete_gaussian_polynomial.py +141 -0
  770. sage/stats/hmm/all.py +15 -0
  771. sage/stats/hmm/chmm.cpython-314-x86_64-linux-musl.so +0 -0
  772. sage/stats/hmm/chmm.pyx +1595 -0
  773. sage/stats/hmm/distributions.cpython-314-x86_64-linux-musl.so +0 -0
  774. sage/stats/hmm/distributions.pxd +29 -0
  775. sage/stats/hmm/distributions.pyx +531 -0
  776. sage/stats/hmm/hmm.cpython-314-x86_64-linux-musl.so +0 -0
  777. sage/stats/hmm/hmm.pxd +17 -0
  778. sage/stats/hmm/hmm.pyx +1388 -0
  779. sage/stats/hmm/util.cpython-314-x86_64-linux-musl.so +0 -0
  780. sage/stats/hmm/util.pxd +7 -0
  781. sage/stats/hmm/util.pyx +165 -0
  782. sage/stats/intlist.cpython-314-x86_64-linux-musl.so +0 -0
  783. sage/stats/intlist.pxd +14 -0
  784. sage/stats/intlist.pyx +588 -0
  785. sage/stats/r.py +49 -0
  786. sage/stats/time_series.cpython-314-x86_64-linux-musl.so +0 -0
  787. sage/stats/time_series.pxd +6 -0
  788. sage/stats/time_series.pyx +2546 -0
  789. sage/tensor/all.py +2 -0
  790. sage/tensor/modules/all.py +8 -0
  791. sage/tensor/modules/alternating_contr_tensor.py +761 -0
  792. sage/tensor/modules/comp.py +5598 -0
  793. sage/tensor/modules/ext_pow_free_module.py +824 -0
  794. sage/tensor/modules/finite_rank_free_module.py +3589 -0
  795. sage/tensor/modules/format_utilities.py +333 -0
  796. sage/tensor/modules/free_module_alt_form.py +858 -0
  797. sage/tensor/modules/free_module_automorphism.py +1207 -0
  798. sage/tensor/modules/free_module_basis.py +1074 -0
  799. sage/tensor/modules/free_module_element.py +284 -0
  800. sage/tensor/modules/free_module_homset.py +652 -0
  801. sage/tensor/modules/free_module_linear_group.py +564 -0
  802. sage/tensor/modules/free_module_morphism.py +1581 -0
  803. sage/tensor/modules/free_module_tensor.py +3289 -0
  804. sage/tensor/modules/reflexive_module.py +386 -0
  805. sage/tensor/modules/tensor_free_module.py +780 -0
  806. sage/tensor/modules/tensor_free_submodule.py +538 -0
  807. sage/tensor/modules/tensor_free_submodule_basis.py +140 -0
  808. sage/tensor/modules/tensor_with_indices.py +1043 -0
@@ -0,0 +1,652 @@
1
+ # sage_setup: distribution = sagemath-modules
2
+ r"""
3
+ Sets of morphisms between free modules
4
+
5
+ The class :class:`FreeModuleHomset` implements sets of homomorphisms between
6
+ two free modules of finite rank over the same commutative ring.
7
+
8
+ The subclass :class:`FreeModuleEndset` implements the special case of
9
+ sets of endomorphisms.
10
+
11
+ AUTHORS:
12
+
13
+ - Eric Gourgoulhon, Michal Bejger (2014-2015): initial version
14
+ - Matthias Koeppe (2024): add :class:`FreeModuleEndset`
15
+
16
+ REFERENCES:
17
+
18
+ - Chaps. 13, 14 of R. Godement : *Algebra* [God1968]_
19
+ - Chap. 3 of S. Lang : *Algebra* [Lan2002]_
20
+ """
21
+ #******************************************************************************
22
+ # Copyright (C) 2015 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr>
23
+ # Copyright (C) 2015 Michal Bejger <bejger@camk.edu.pl>
24
+ #
25
+ # Distributed under the terms of the GNU General Public License (GPL)
26
+ # as published by the Free Software Foundation; either version 2 of
27
+ # the License, or (at your option) any later version.
28
+ # http://www.gnu.org/licenses/
29
+ #******************************************************************************
30
+
31
+ from sage.categories.homset import Homset
32
+ from sage.misc.classcall_metaclass import ClasscallMetaclass
33
+ from sage.tensor.modules.free_module_morphism import FiniteRankFreeModuleEndomorphism, FiniteRankFreeModuleMorphism
34
+ from sage.tensor.modules.free_module_automorphism import FreeModuleAutomorphism
35
+ from sage.tensor.modules.free_module_tensor import FreeModuleTensor
36
+
37
+
38
+ class FreeModuleHomset(Homset, metaclass=ClasscallMetaclass):
39
+ r"""
40
+ Set of homomorphisms between free modules of finite rank over a
41
+ commutative ring.
42
+
43
+ Given two free modules `M` and `N` of respective ranks `m` and `n` over a
44
+ commutative ring `R`, the class :class:`FreeModuleHomset` implements the
45
+ set `\mathrm{Hom}(M,N)` of homomorphisms `M\rightarrow N`.
46
+ The set `\mathrm{Hom}(M,N)` is actually a free module of rank `mn` over
47
+ `R`, but this aspect is not taken into account here.
48
+
49
+ This is a Sage *parent* class, whose *element* class is
50
+ :class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`.
51
+
52
+ The case `M=N` (endomorphisms) is delegated to the subclass :class:`FreeModuleEndset`.
53
+
54
+ INPUT:
55
+
56
+ - ``fmodule1`` -- free module `M` (domain of the homomorphisms), as an
57
+ instance of
58
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
59
+ - ``fmodule2`` -- free module `N` (codomain of the homomorphisms), as an
60
+ instance of
61
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
62
+ - ``name`` -- (default: ``None``) string; name given to the hom-set; if
63
+ none is provided, Hom(M,N) will be used
64
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
65
+ hom-set; if none is provided, `\mathrm{Hom}(M,N)` will be used
66
+
67
+ EXAMPLES:
68
+
69
+ Set of homomorphisms between two free modules over `\ZZ`::
70
+
71
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
72
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
73
+ sage: H = Hom(M,N) ; H
74
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
75
+ to Rank-2 free module N over the Integer Ring
76
+ in Category of finite dimensional modules over Integer Ring
77
+ sage: type(H)
78
+ <class 'sage.tensor.modules.free_module_homset.FreeModuleHomset_with_category_with_equality_by_id'>
79
+ sage: H.category()
80
+ Category of homsets of modules over Integer Ring
81
+
82
+ Hom-sets are cached::
83
+
84
+ sage: H is Hom(M,N)
85
+ True
86
+
87
+ The LaTeX formatting is::
88
+
89
+ sage: latex(H)
90
+ \mathrm{Hom}\left(M,N\right)
91
+
92
+ As usual, the construction of an element is performed by the ``__call__``
93
+ method; the argument can be the matrix representing the morphism in the
94
+ default bases of the two modules::
95
+
96
+ sage: e = M.basis('e')
97
+ sage: f = N.basis('f')
98
+ sage: phi = H([[-1,2,0], [5,1,2]]) ; phi
99
+ Generic morphism:
100
+ From: Rank-3 free module M over the Integer Ring
101
+ To: Rank-2 free module N over the Integer Ring
102
+ sage: phi.parent() is H
103
+ True
104
+
105
+ An example of construction from a matrix w.r.t. bases that are not the
106
+ default ones::
107
+
108
+ sage: ep = M.basis('ep', latex_symbol=r"e'")
109
+ sage: fp = N.basis('fp', latex_symbol=r"f'")
110
+ sage: phi2 = H([[3,2,1], [1,2,3]], bases=(ep,fp)) ; phi2
111
+ Generic morphism:
112
+ From: Rank-3 free module M over the Integer Ring
113
+ To: Rank-2 free module N over the Integer Ring
114
+
115
+ The zero element::
116
+
117
+ sage: z = H.zero() ; z
118
+ Generic morphism:
119
+ From: Rank-3 free module M over the Integer Ring
120
+ To: Rank-2 free module N over the Integer Ring
121
+ sage: z.matrix(e,f)
122
+ [0 0 0]
123
+ [0 0 0]
124
+
125
+ The test suite for H is passed::
126
+
127
+ sage: TestSuite(H).run()
128
+ """
129
+
130
+ Element = FiniteRankFreeModuleMorphism
131
+
132
+ @staticmethod
133
+ def __classcall_private__(cls, fmodule1, fmodule2, name=None, latex_name=None):
134
+ r"""
135
+ Delegate to the subclass :class:`FreeModuleEndset` if ``fmodule1 == fmodule2``.
136
+
137
+ TESTS::
138
+
139
+ sage: from sage.tensor.modules.free_module_homset import FreeModuleEndset, FreeModuleHomset
140
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
141
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
142
+ sage: isinstance(FreeModuleHomset(M, N), FreeModuleEndset)
143
+ False
144
+ sage: isinstance(FreeModuleHomset(M, M), FreeModuleEndset)
145
+ True
146
+ """
147
+ from .finite_rank_free_module import FiniteRankFreeModule
148
+ if not isinstance(fmodule1, FiniteRankFreeModule):
149
+ raise TypeError("fmodule1 = {} is not an ".format(fmodule1) +
150
+ "instance of FiniteRankFreeModule")
151
+ if not isinstance(fmodule2, FiniteRankFreeModule):
152
+ raise TypeError("fmodule2 = {} is not an ".format(fmodule2) +
153
+ "instance of FiniteRankFreeModule")
154
+ if fmodule1.base_ring() != fmodule2.base_ring():
155
+ raise TypeError("the domain and codomain are not defined over " +
156
+ "the same ring")
157
+ if name is None:
158
+ name = "Hom(" + fmodule1._name + "," + fmodule2._name + ")"
159
+ if latex_name is None:
160
+ latex_name = \
161
+ r"\mathrm{Hom}\left(" + fmodule1._latex_name + "," + \
162
+ fmodule2._latex_name + r"\right)"
163
+ if fmodule1 == fmodule2:
164
+ return FreeModuleEndset(fmodule1, name, latex_name)
165
+ return type.__call__(cls, fmodule1, fmodule2, name, latex_name)
166
+
167
+ def __init__(self, fmodule1, fmodule2, name, latex_name):
168
+ r"""
169
+ TESTS::
170
+
171
+ sage: from sage.tensor.modules.free_module_homset import FreeModuleHomset
172
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
173
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
174
+ sage: FreeModuleHomset(M, N)
175
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
176
+ to Rank-2 free module N over the Integer Ring
177
+ in Category of finite dimensional modules over Integer Ring
178
+
179
+ sage: H = FreeModuleHomset(M, N, name='L(M,N)',
180
+ ....: latex_name=r'\mathcal{L}(M,N)')
181
+ sage: latex(H)
182
+ \mathcal{L}(M,N)
183
+ """
184
+ Homset.__init__(self, fmodule1, fmodule2)
185
+ self._name = name
186
+ self._latex_name = latex_name
187
+
188
+ def _latex_(self):
189
+ r"""
190
+ LaTeX representation of the object.
191
+
192
+ EXAMPLES::
193
+
194
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
195
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
196
+ sage: H = Hom(M,N)
197
+ sage: H._latex_()
198
+ '\\mathrm{Hom}\\left(M,N\\right)'
199
+ sage: latex(H) # indirect doctest
200
+ \mathrm{Hom}\left(M,N\right)
201
+ """
202
+ if self._latex_name is None:
203
+ return r'\mbox{' + str(self) + r'}'
204
+ else:
205
+ return self._latex_name
206
+
207
+ def __call__(self, *args, **kwds):
208
+ r"""
209
+ To bypass Homset.__call__, enforcing Parent.__call__ instead.
210
+
211
+ EXAMPLES::
212
+
213
+ sage: M = FiniteRankFreeModule(ZZ, 2, name='M')
214
+ sage: N = FiniteRankFreeModule(ZZ, 3, name='N')
215
+ sage: H = Hom(M,N)
216
+ sage: e = M.basis('e') ; f = N.basis('f')
217
+ sage: a = H.__call__(0) ; a
218
+ Generic morphism:
219
+ From: Rank-2 free module M over the Integer Ring
220
+ To: Rank-3 free module N over the Integer Ring
221
+ sage: a.matrix(e,f)
222
+ [0 0]
223
+ [0 0]
224
+ [0 0]
225
+ sage: a == H.zero()
226
+ True
227
+ sage: a == H(0)
228
+ True
229
+ sage: a = H.__call__([[1,2],[3,4],[5,6]], bases=(e,f), name='a') ; a
230
+ Generic morphism:
231
+ From: Rank-2 free module M over the Integer Ring
232
+ To: Rank-3 free module N over the Integer Ring
233
+ sage: a.matrix(e,f)
234
+ [1 2]
235
+ [3 4]
236
+ [5 6]
237
+ sage: a == H([[1,2],[3,4],[5,6]], bases=(e,f))
238
+ True
239
+ """
240
+ from sage.structure.parent import Parent
241
+ return Parent.__call__(self, *args, **kwds)
242
+
243
+ #### Methods required for any Parent
244
+
245
+ def _element_constructor_(self, matrix_rep, bases=None, name=None,
246
+ latex_name=None, is_identity=False):
247
+ r"""
248
+ Construct an element of ``self``, i.e. a homomorphism M --> N, where
249
+ M is the domain of ``self`` and N its codomain.
250
+
251
+ INPUT:
252
+
253
+ - ``matrix_rep`` -- matrix representation of the homomorphism with
254
+ respect to the bases ``basis1`` and ``basis2``; this entry can
255
+ actually be any material from which a matrix of size rank(N)*rank(M)
256
+ can be constructed
257
+ - ``bases`` -- (default: ``None``) pair (basis_M, basis_N) defining the
258
+ matrix representation, basis_M being a basis of module `M` and
259
+ basis_N a basis of module `N` ; if none is provided the pair formed
260
+ by the default bases of each module is assumed.
261
+ - ``name`` -- (default: ``None``) string; name given to the
262
+ homomorphism
263
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote
264
+ the homomorphism. If none is provided, ``name`` will be used.
265
+ - ``is_identity`` -- boolean (default: ``False``); determines whether the
266
+ constructed object is the identity endomorphism. If set to ``True``,
267
+ then N must be M and the entry ``matrix_rep`` is not used.
268
+
269
+ EXAMPLES:
270
+
271
+ Construction of a homomorphism between two free `\ZZ`-modules::
272
+
273
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
274
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
275
+ sage: e = M.basis('e') ; f = N.basis('f')
276
+ sage: H = Hom(M,N)
277
+ sage: phi = H._element_constructor_([[2,-1,3], [1,0,-4]], bases=(e,f),
278
+ ....: name='phi', latex_name=r'\phi')
279
+ sage: phi
280
+ Generic morphism:
281
+ From: Rank-3 free module M over the Integer Ring
282
+ To: Rank-2 free module N over the Integer Ring
283
+ sage: phi.matrix(e,f)
284
+ [ 2 -1 3]
285
+ [ 1 0 -4]
286
+ sage: phi == H([[2,-1,3], [1,0,-4]], bases=(e,f), name='phi',
287
+ ....: latex_name=r'\phi')
288
+ True
289
+
290
+ Construction of an endomorphism::
291
+
292
+ sage: EM = End(M)
293
+ sage: phi = EM._element_constructor_([[1,2,3],[4,5,6],[7,8,9]],
294
+ ....: name='phi', latex_name=r'\phi')
295
+ sage: phi
296
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
297
+ sage: phi.matrix(e,e)
298
+ [1 2 3]
299
+ [4 5 6]
300
+ [7 8 9]
301
+
302
+ Coercion of a type-`(1,1)` tensor to an endomorphism::
303
+
304
+ sage: a = M.tensor((1,1))
305
+ sage: a[:] = [[1,2,3],[4,5,6],[7,8,9]]
306
+ sage: EM = End(M)
307
+ sage: phi_a = EM._element_constructor_(a) ; phi_a
308
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
309
+ sage: phi_a.matrix(e,e)
310
+ [1 2 3]
311
+ [4 5 6]
312
+ [7 8 9]
313
+ sage: phi_a == phi
314
+ True
315
+ sage: phi_a1 = EM(a) ; phi_a1 # indirect doctest
316
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
317
+ sage: phi_a1 == phi
318
+ True
319
+ """
320
+ # Standard construction:
321
+ return self.element_class(self, matrix_rep, bases=bases, name=name,
322
+ latex_name=latex_name,
323
+ is_identity=is_identity)
324
+
325
+ def _an_element_(self):
326
+ r"""
327
+ Construct some (unnamed) element.
328
+
329
+ EXAMPLES::
330
+
331
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
332
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
333
+ sage: e = M.basis('e') ; f = N.basis('f')
334
+ sage: phi = Hom(M,N)._an_element_() ; phi
335
+ Generic morphism:
336
+ From: Rank-3 free module M over the Integer Ring
337
+ To: Rank-2 free module N over the Integer Ring
338
+ sage: phi.matrix(e,f)
339
+ [1 1 1]
340
+ [1 1 1]
341
+ sage: phi == Hom(M,N).an_element()
342
+ True
343
+ """
344
+ ring = self.base_ring()
345
+ m = self.domain().rank()
346
+ n = self.codomain().rank()
347
+ matrix_rep = [[ring.an_element() for i in range(m)] for j in range(n)]
348
+ return self.element_class(self, matrix_rep)
349
+
350
+ #### End of methods required for any Parent
351
+
352
+
353
+ class FreeModuleEndset(FreeModuleHomset):
354
+ r"""
355
+ Ring of endomorphisms of a free module of finite rank over a commutative ring.
356
+
357
+ Given a free modules `M` of rank `n` over a commutative ring `R`, the
358
+ class :class:`FreeModuleEndset` implements the ring `\mathrm{Hom}(M,M)`
359
+ of endomorphisms `M\rightarrow M`.
360
+
361
+ This is a Sage *parent* class, whose *element* class is
362
+ :class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`.
363
+
364
+ INPUT:
365
+
366
+ - ``fmodule`` -- free module `M` (domain and codomain of the endomorphisms), as an
367
+ instance of
368
+ :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
369
+ - ``name`` -- (default: ``None``) string; name given to the end-set; if
370
+ none is provided, Hom(M,M) will be used
371
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote the
372
+ hom-set; if none is provided, `\mathrm{Hom}(M,M)` will be used
373
+
374
+ EXAMPLES:
375
+
376
+ The set of homomorphisms `M\rightarrow M`, i.e. endomorphisms, is
377
+ obtained by the function :func:`End`::
378
+
379
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
380
+ sage: e = M.basis('e')
381
+ sage: End(M)
382
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
383
+ to Rank-3 free module M over the Integer Ring
384
+ in Category of finite dimensional modules over Integer Ring
385
+
386
+ ``End(M)`` is actually identical to ``Hom(M,M)``::
387
+
388
+ sage: End(M) is Hom(M,M)
389
+ True
390
+
391
+ The unit of the endomorphism ring is the identity map::
392
+
393
+ sage: End(M).one()
394
+ Identity endomorphism of Rank-3 free module M over the Integer Ring
395
+
396
+ whose matrix in any basis is of course the identity matrix::
397
+
398
+ sage: End(M).one().matrix(e)
399
+ [1 0 0]
400
+ [0 1 0]
401
+ [0 0 1]
402
+
403
+ There is a canonical identification between endomorphisms of `M` and
404
+ tensors of type `(1,1)` on `M`. Accordingly, coercion maps have been
405
+ implemented between `\mathrm{End}(M)` and `T^{(1,1)}(M)` (the module of
406
+ all type-`(1,1)` tensors on `M`, see
407
+ :class:`~sage.tensor.modules.tensor_free_module.TensorFreeModule`)::
408
+
409
+ sage: T11 = M.tensor_module(1,1) ; T11
410
+ Free module of type-(1,1) tensors on the Rank-3 free module M over
411
+ the Integer Ring
412
+ sage: End(M).has_coerce_map_from(T11)
413
+ True
414
+ sage: T11.has_coerce_map_from(End(M))
415
+ True
416
+
417
+ See :class:`~sage.tensor.modules.tensor_free_module.TensorFreeModule` for
418
+ examples of the above coercions.
419
+
420
+ There is a coercion `\mathrm{GL}(M) \rightarrow \mathrm{End}(M)`, since
421
+ every automorphism is an endomorphism::
422
+
423
+ sage: GL = M.general_linear_group() ; GL
424
+ General linear group of the Rank-3 free module M over the Integer Ring
425
+ sage: End(M).has_coerce_map_from(GL)
426
+ True
427
+
428
+ Of course, there is no coercion in the reverse direction, since only
429
+ bijective endomorphisms are automorphisms::
430
+
431
+ sage: GL.has_coerce_map_from(End(M))
432
+ False
433
+
434
+ The coercion `\mathrm{GL}(M) \rightarrow \mathrm{End}(M)` in action::
435
+
436
+ sage: a = GL.an_element() ; a
437
+ Automorphism of the Rank-3 free module M over the Integer Ring
438
+ sage: a.matrix(e)
439
+ [ 1 0 0]
440
+ [ 0 -1 0]
441
+ [ 0 0 1]
442
+ sage: ea = End(M)(a) ; ea
443
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
444
+ sage: ea.matrix(e)
445
+ [ 1 0 0]
446
+ [ 0 -1 0]
447
+ [ 0 0 1]
448
+ """
449
+
450
+ Element = FiniteRankFreeModuleEndomorphism
451
+
452
+ def __init__(self, fmodule, name, latex_name):
453
+ r"""
454
+ TESTS::
455
+
456
+ sage: from sage.tensor.modules.free_module_homset import FreeModuleHomset
457
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
458
+ sage: N = FiniteRankFreeModule(ZZ, 2, name='N')
459
+ sage: FreeModuleHomset(M, N)
460
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
461
+ to Rank-2 free module N over the Integer Ring
462
+ in Category of finite dimensional modules over Integer Ring
463
+
464
+ sage: H = FreeModuleHomset(M, N, name='L(M,N)',
465
+ ....: latex_name=r'\mathcal{L}(M,N)')
466
+ sage: latex(H)
467
+ \mathcal{L}(M,N)
468
+ """
469
+ FreeModuleHomset.__init__(self, fmodule, fmodule, name, latex_name)
470
+ self._one = None # to be set by self.one()
471
+
472
+ def _coerce_map_from_(self, other):
473
+ r"""
474
+ Determine whether coercion to ``self`` exists from other parent.
475
+
476
+ EXAMPLES:
477
+
478
+ The module of type-`(1,1)` tensors coerces to ``self``::
479
+
480
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
481
+ sage: e = M.basis('e')
482
+ sage: End(M)._coerce_map_from_(M.tensor_module(1,1))
483
+ True
484
+ sage: End(M).has_coerce_map_from(M.tensor_module(1,1))
485
+ True
486
+ sage: End(M)._coerce_map_from_(M.tensor_module(1,2))
487
+ False
488
+
489
+ The general linear group coerces to the endomorphism ring::
490
+
491
+ sage: End(M)._coerce_map_from_(M.general_linear_group())
492
+ True
493
+ """
494
+ from sage.tensor.modules.tensor_free_module import TensorFreeModule
495
+ from sage.tensor.modules.free_module_linear_group import \
496
+ FreeModuleLinearGroup
497
+ if isinstance(other, TensorFreeModule):
498
+ # Coercion of a type-(1,1) tensor to an endomorphism:
499
+ if other.tensor_type() == (1,1):
500
+ return self.is_endomorphism_set() and \
501
+ other.base_module() is self.domain()
502
+ if isinstance(other, FreeModuleLinearGroup):
503
+ # Coercion of an automorphism to an endomorphism:
504
+ return self.is_endomorphism_set() and \
505
+ other.base_module() is self.domain()
506
+ return False
507
+
508
+ #### Methods required for any Parent
509
+
510
+ def _element_constructor_(self, matrix_rep, bases=None, name=None,
511
+ latex_name=None, is_identity=False):
512
+ r"""
513
+ Construct an element of ``self``, i.e. a homomorphism M --> N, where
514
+ M is the domain of ``self`` and N its codomain.
515
+
516
+ INPUT:
517
+
518
+ - ``matrix_rep`` -- matrix representation of the homomorphism with
519
+ respect to the bases ``basis1`` and ``basis2``; this entry can
520
+ actually be any material from which a matrix of size rank(N)*rank(M)
521
+ can be constructed
522
+ - ``bases`` -- (default: ``None``) pair (basis_M, basis_N) defining the
523
+ matrix representation, basis_M being a basis of module `M` and
524
+ basis_N a basis of module `N` ; if none is provided the pair formed
525
+ by the default bases of each module is assumed.
526
+ - ``name`` -- (default: ``None``) string; name given to the
527
+ homomorphism
528
+ - ``latex_name`` -- (default: ``None``) string; LaTeX symbol to denote
529
+ the homomorphism. If none is provided, ``name`` will be used.
530
+ - ``is_identity`` -- boolean (default: ``False``); determines whether the
531
+ constructed object is the identity endomorphism. If set to ``True``,
532
+ then N must be M and the entry ``matrix_rep`` is not used.
533
+
534
+ EXAMPLES:
535
+
536
+ Construction of an endomorphism::
537
+
538
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
539
+ sage: e = M.basis('e')
540
+ sage: EM = End(M)
541
+ sage: phi = EM._element_constructor_([[1,2,3],[4,5,6],[7,8,9]],
542
+ ....: name='phi', latex_name=r'\phi')
543
+ sage: phi
544
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
545
+ sage: phi.matrix(e,e)
546
+ [1 2 3]
547
+ [4 5 6]
548
+ [7 8 9]
549
+
550
+ Coercion of a type-`(1,1)` tensor to an endomorphism::
551
+
552
+ sage: a = M.tensor((1,1))
553
+ sage: a[:] = [[1,2,3],[4,5,6],[7,8,9]]
554
+ sage: EM = End(M)
555
+ sage: phi_a = EM._element_constructor_(a) ; phi_a
556
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
557
+ sage: phi_a.matrix(e,e)
558
+ [1 2 3]
559
+ [4 5 6]
560
+ [7 8 9]
561
+ sage: phi_a == phi
562
+ True
563
+ sage: phi_a1 = EM(a) ; phi_a1 # indirect doctest
564
+ Generic endomorphism of Rank-3 free module M over the Integer Ring
565
+ sage: phi_a1 == phi
566
+ True
567
+ """
568
+ if isinstance(matrix_rep, FreeModuleTensor):
569
+ # coercion of a type-(1,1) tensor to an endomorphism
570
+ # (this includes automorphisms, since the class
571
+ # FreeModuleAutomorphism inherits from FreeModuleTensor)
572
+ tensor = matrix_rep # for readability
573
+ if tensor.tensor_type() == (1,1) and tensor.base_module() is self.domain():
574
+ basis = tensor.pick_a_basis()
575
+ tcomp = tensor.comp(basis)
576
+ fmodule = tensor.base_module()
577
+ mat = [[tcomp[[i,j]] for j in fmodule.irange()]
578
+ for i in fmodule.irange()]
579
+ if isinstance(tensor, FreeModuleAutomorphism):
580
+ is_identity = tensor._is_identity
581
+ else:
582
+ is_identity = False
583
+ return self.element_class(self, mat, bases=(basis,basis),
584
+ name=tensor._name,
585
+ latex_name=tensor._latex_name,
586
+ is_identity=is_identity)
587
+ else:
588
+ raise TypeError("cannot coerce the {}".format(tensor) +
589
+ " to an element of {}".format(self))
590
+ return super()._element_constructor_(matrix_rep, bases=bases,
591
+ name=name, latex_name=latex_name,
592
+ is_identity=is_identity)
593
+
594
+ #### Monoid methods ####
595
+
596
+ def one(self):
597
+ r"""
598
+ Return the identity element of ``self`` considered as a monoid.
599
+
600
+ OUTPUT:
601
+
602
+ - the identity element of `\mathrm{End}(M) = \mathrm{Hom}(M,M)`, as an
603
+ instance of
604
+ :class:`~sage.tensor.modules.free_module_morphism.FiniteRankFreeModuleMorphism`
605
+
606
+ EXAMPLES:
607
+
608
+ Identity element of the set of endomorphisms of a free module
609
+ over `\ZZ`::
610
+
611
+ sage: M = FiniteRankFreeModule(ZZ, 3, name='M')
612
+ sage: e = M.basis('e')
613
+ sage: H = End(M)
614
+ sage: H.one()
615
+ Identity endomorphism of Rank-3 free module M over the Integer Ring
616
+ sage: H.one().matrix(e)
617
+ [1 0 0]
618
+ [0 1 0]
619
+ [0 0 1]
620
+ sage: H.one().is_identity()
621
+ True
622
+
623
+ NB: mathematically, ``H.one()`` coincides with the identity map of the
624
+ free module `M`. However the latter is considered here as an
625
+ element of `\mathrm{GL}(M)`, the general linear group of `M`.
626
+ Accordingly, one has to use the coercion map
627
+ `\mathrm{GL}(M) \rightarrow \mathrm{End}(M)`
628
+ to recover ``H.one()`` from ``M.identity_map()``::
629
+
630
+ sage: M.identity_map()
631
+ Identity map of the Rank-3 free module M over the Integer Ring
632
+ sage: M.identity_map().parent()
633
+ General linear group of the Rank-3 free module M over the Integer Ring
634
+ sage: H.one().parent()
635
+ Set of Morphisms from Rank-3 free module M over the Integer Ring
636
+ to Rank-3 free module M over the Integer Ring
637
+ in Category of finite dimensional modules over Integer Ring
638
+ sage: H.one() == H(M.identity_map())
639
+ True
640
+
641
+ Conversely, one can recover ``M.identity_map()`` from ``H.one()`` by
642
+ means of a conversion `\mathrm{End}(M)\rightarrow \mathrm{GL}(M)`::
643
+
644
+ sage: GL = M.general_linear_group()
645
+ sage: M.identity_map() == GL(H.one())
646
+ True
647
+ """
648
+ if self._one is None:
649
+ self._one = self.element_class(self, [], is_identity=True)
650
+ return self._one
651
+
652
+ #### End of monoid methods ####